Tuesday, August 9, 2011

A tale of two teams - Architectural prototyping


A tale of two teams - Herding the CATS (Developers)

1) Team 1, a typical team

For example three developers get a basic design for a website with 6 CRUDS and decide to use a new technology. Hibernate 3.6 , GWT etc
They each research the basic technology and start coding.

Each developer starts coding as they see it should be done, they hit problems and they each adjust their design.

At the end of the sprint they each show 3 CRUDS of about 90% quality, each with a slightly different implementation

In Sprint 2, each developer then start with their second assignments.
Each again develops another 3 CRUDS of about 91% quality, each with a slightly different implementation AGAIN.

What do you end up with ?

Six CRUDs in a new technology , all are coded differently, working differently and with less than 95% quality.
The code is a mess and needs a re-write.
Developers start blaming the GWT and Hibernate technology etc.

2) Team 2, Architectural prototyping

Again , for example three developers get a basic design for a website with 6 CRUDS and decide to use a new technology. Hibernate 3.6 , GWT etc
They each research the basic technology and start coding a throw away prototype implementing the same CRUD.
Before the sprint is complete, they all come together and discuss the problems they are having and discuss how they each solved the issue.
They then come together to create a 'perfect CRUD' template.
At sprint end, only one 'perfect CRUD' template is outputted.
Common code is defined in the template, so each developer can use the common code.

In Sprint 2 each developer code using the template
There will be problems faced, when the problems come up, the template is updated.
At the end of Sprint 2, another three CRUDS are outputted.