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 ?


Top Related