kamon ayeva antipatterns, patterns, and rules of thumb for successful plone projects
TRANSCRIPT
Anti-patterns and Patterns for successful projects
Things to avoid and things to do in a difficult content management world !
Speaker: Kamon AYEVA
Me
Kamon AYEVA
Ingeniweb
Zope/Plone solutions & training
Introduction (Why care ?)
Any website project is a software project
... at some level !
People
User - Project Manager - Developer
Successful project ?
Success depends on how the 3 parties work together
The main challenge
Each party has his own priorities !
The first tip !
Better understand each other !
The Developer
It's a though game here !
CMS, DMS, Web 2.0
Frameworks, Flex, AjaX, JavaFX
Python, Java, Ruby, .Net
Trying hard to get the CMS right !
The Project Manager
Speaks with User... then speaks with Developer... then...
Manages the budget.
The User
The tool should address my needs.
The tool should be easy to use.
I don't want to change my habits !
By the way...
User should be put first !
When a project works...
User is happy.
Project Manager can have better sleeps.
Developer is creative, and can leave the office early.
Huh ?
So it's possible ?
Me thinks so !
A way of living:
Avoid things that don't work, a.k.a. anti-patterns
Apply rules and patterns that work !
Anti-patterns
Things to avoid !
#1 Re-inventing the wheel
Reinventing systems that are already good at the job: File Server, DMS, Mail Server...
#2 If You Build It, They Will Come
What problem are you trying to address ?
For who ?
IYBITWC trap
Building interesting tools that the Enterprise users are not yet ready for
Groupware / Sharing tools
Web 2.0
#3 Gaz Factory
You really want to avoid this one !
GF example
Publishing workflow that maps the organization hierarchy
I need N reviewing steps because the Author has a boss who has a boss who has a boss...
This is Web -1.0
#4 The input of the field is a selection
Incomplete specification !!!
List of values or unique value ?
There are more...
Software bloat
Design by committee
Golden hammer
Principles & Patterns
Better live with some principles !
#1 The Pareto principle
80% of the effects come from 20% of the causes
a.k.a. the 80-20 rule
The 80-20 rule in action
Identify and focus first on delivering your 20% part of the message, content, system...
#2 KISS
Keep It Simple Stupid !
Kiss, Kiss, Kiss...
Whenever possible, choose a simple solution
KISS' friends
Simple is better than complex
Flat is better than nested/hierarchical
Complex is better than complicated
#3 YAGNI
You Ain't Gonna Need It !
Typical YAGNI
The discussion forum
Oh my gosh !
I want a forum within each teamspace
YAGNI ? BKIS !
Better Know It Soon !
Avoid potential bugs with non-needed stuff.
#4 The Right Thing
The design should be right !
(MIT)
#5 Worse is better
Simplicity is more important than rightness
Advices
Principles and patterns put into action
#1 Don't rethink the CMS
Just extend it !
Extending ?
Focus on UI : Tweak things for your needs
Make compromises !!!
Adapt existing logic...
Plug additional logic
#2 Standardize or perish !
Use the tools/approaches adopted by others
The Community's best practices
Infrastructure: Linux, ZEO...
Content types: Archetypes, ATCT, ArchGenXML...
Add-ons for OOTB services: PloneArticle, PloneFormGen, etc...
#3 Play with the Community
Find help !
Give back
code
documentation
testing, reviewing...
#4 Seperate concerns
Content vs. Presentation
Models - Data storage - DB
Views - Templates CSS
Site structure vs. Site navigation
Containers
Navigation Views - Topics - Relations
#5 Requirements
User stories
Use cases
#6 Use a tracker
Better communication
Give access to users so they can report bugs
#7 Quality
Unit & Functional tests
Documentation
Build for scaling
More on scaling
Optimization
Caching
ZEO + load-balancing
#8 Migrations
A migration project is a normal project, with additional difficulties
Dump and reload !
Set up a new Plone site.
Dump configuration & content from old site and load it in new site.
#9 Use Plone 3
Best Plone Ever
Thank You !
Questions ?