Software is Boring … It’s Architecture Stupid!
jonr originally posted this on Jon Rose's Blog.
I read two good posts this evening with a similar theme, implementing a system is boring … at least when done well. Stu Stern’s post discusses it from the standpoint of defining a clear architecture up front:
An architecture is sufficiently defined when we can turn a developer loose on developing some piece of functionality and he or she obeys all design constraints, there is a minimal possibility of creating software that produces any of the above problems. If you’re conceptually bothered by being constrained, preferring instead to program in wide open spaces with the wind blowing in your hair, perhaps you would prefer to think of architecture as providing the freedom from choice.
Alex Papadimoulis post, Programming Sucks! Or At Least, It Ought To, takes it more from the realities of building business systems on a day-to-day basis. He basically concludes that developers get too enamored with all the noise in the software world and need to focus on building features for the business:
As frustrating as it can be to work with the uninspired, sloppy developer, the contrary – the inspired-yet-misguided one – is several magnitudes worse.
Alex offered a list on how to approach the profession:
1) Learn the Business.
2) Serve the Business.
3) Learn Off The Job.
4) Code mostly Business. (If the overwhelming majority of your hand-written code isn’t domain-specific and doesn’t relate to the application’s purpose, then you’re using the wrong tools.)
5) Tedium is Inescapable.
6) Find Satisfaction Elsewhere.
… and, if all else fails…
7) Get Another Job.
I do love Alex’s post and believe he basically hits the nail on the head about the attitude we need to take toward the profession. However, I believe Stu has better captured the reality of building software systems. Things do change and evolve in software in ways that are both beneficial to the developer and the business. Thus, defining an architecture up front on how the system is going to be built is an essential step to allowing developers to focus on building features that have value to the business. If we succeed when it comes to architecture, then we can get on to the boring parts.
One could even say that if presidential elections are about the economy, then when it comes to software: It’s Architecture Stupid.