Follow up to my emergent notes
I had gone to bed last night when I felt I had to write these things down. Basically, it’s about each team member being attuned to a set of ideals and principles for emergent architecture and design to work. Everyone must believe in the importance of keeping the code and design clear and not putting in unnecessary complexity. Any programmer would agree, but few actually practice it.
Every programmer must be familiar with patterns, code smells and refactorings, as well as fundamental design principles, such as “high cohesion” and “low coupling”. Also, the team must constantly discuss the architechtural principles that have emerged during the course of the project. I think some architectural principles will be absolute and recur in almost all projects, while some are unique to the organization and the business rules. (See this post for some thoughts of Alistair Cockburn about the social factors in architecture.)
Now I’ll have to do the dishes and whip together some porridge for my daughter.