As I have written before, programming and architecture are different skills, and the architect need not be a great programmer. Software Architects work primarily in models, patterns and process, not code. The chief skill of the software architect needs to be in expressing the underlying business purpose as a service.
It is easy for the programmer to see such statements and think “What a load of Rubbish!” There have been some notable rants written against the misuse of the words “Architecture”, “Enterprise” and “Service” (see caustictech.typepad.com). Many claim the words with no idea what they mean. For others, the friction is because the architects interfere with the solitary programmer’s desire to just get things done by himself, as he sees fit. It is easy, but not correct.
But what if you are a programmer, coding happily with no interest in architecture? How should Service Architecture affect your world? I am excluding the trivial example, in that you need to be able to read the interface documents prepared by the system architect.
The programmer should know:
- What is architecture concerned with? Can I recognize the demands of architecture and so work to strengthen rather than weaken architecture? Can I resist inappropriate requests that will cause brittle integration to harm the enterprise later?
- How should the existing monolithic applications that I work with every day fail in part because of the lack of architecture? Can I recognize when they should be broken up. Can I recognize when multiple services are inappropriately bundled so I can get ready to move in the right direction.
- What if my best work should not be written? A coder should learn to recognize when difficult code is substituting for good architecture. A code jockey should recognize when the problem would be solved better by adding an architect.
- Is my best code maintainable? As a manager, I know that a job description that requires sainthood from the employee is poorly written. The same applies when an application requires virtuoso coding. An old lemma is that it is twice as difficult to debug as it is to code, so you had better not be programming at the limit of your abilities…
When he understands and acts on these issues, the Coder can stay safely away from the Architect.
Next: How Service and Security support and extend each other