Yesterday I attended
Jim Coplien's presentation on "Organizational
Patterns - a Key for Agile Systems Development". Overall I think It was
a very good presentation. Jim makes a few interesting claims, some of
which are controversial within both in the traditional and the agile
spaces
Few examples
- Process guidance (ISOs etc.) doesn't work - roles are stabler than processes, processes always change.
- Jim
says that in order to make a change you need to make it at the
organizational structure level. The processes will then support these
changes
- TDD is evil - it is just an re-incarnation of bottom-up procedural design. It is better to follow "Design by contract"
- He says XP is not a good methodology (He thinks SCRUM is good)
- etc.
Additionally
he talked about some of the organizational patterns he and Neil
Harrison discovered studying organizations for more than a decade. You
can read the Top ten patterns
on his site.Jim covered 2 patterns that are related to software architecture: Architect controls product and Architect also Implements
Architect controls Product basically says that you should have an
architect and that she should oversee that the direction of the project
is flowing in the right direction.
Architect also implements - this pattern says that in order for the
architect to broaden her leadership without sacrificing depth and
pragmatics she must also participate in the implementation (beyond
advising and communicating). Jim gave the example of the development of
Borland's Quatro pro for windows in 1993 where the team's architect had
a daily meeting (akin to scrum stand-ups) for synchronization and would
then go and code with the developers. The Quatro pro team had 4
architects out of 12 persons that made the team.If a third of the
development team is architect I'd say he is right - My experience,
however with most organizations I see is that you hardly have one
architect per project (sometimes you only have one for several
projects). In these cases I hardly see the architect writing production
code as part of the team since she would not have time to fulfill her
architectural responsibilities. She must know how to code though and
she must be able to prove her designs in code or be able to offer a
candidate implementation if needed (I also wrote about that in the past
see "Should architect's code"
part 1,
part 2,
part 3By
the way if you are located in Israel, Jim will be here for a couple of
weeks and he is giving a few courses like Agile Architecture,
Patterns of Agile Project Management etc. You can find more information
on pacificsoft's site