Ian Bicking’s post on Conway’s Corollary is a must-read thought on isomorphisms between the organization and product structures.
What, asks Bicking, if we don’t fight this, but embrace it. Organizational structures are allegedly for our benefit. Why not allow them to shape product? Or when this is inappropriate why not recognize that the two MUST be aligned and if product can’t follow organization, we should refactor organization to reflect and support product.
To return to a theme I started many years ago, I commented on this excellent article about why web-site development has got so damned hard. (And remember when we all thought of web-apps as lighter and simpler than desktop apps? What happened?)
Anyway, here’s my comment.
I think the problem is less the multiplicity of programming languages, than our insistence that we should always be separating our languages in different places.
This goes against the basic tenets of cohesion and coupling. We cluster unrelated activities together because they happen to have the same syntactic sugar, while separating tightly-coupled activities because half of them happen on the client and the other on the server. Why the hell should this implementation detail have to be reflected in our architecture?
Wow! I need to get into Buildout.
Update : Good blog-post accompaniment