So I work in a company with a couple of other architects. And these architects grew up designing j2ee apps using ejbs, servlets, jms, all that good stuff that j2ee makes you know. My company has lots of developers who grew up writing c and cobol and all those things where you spent lots of time on the program, not the architecture.

So, naturally this leads to some confusions. For example, when it comes time to design a process to send binary data down to the browser to display (like a pdf or word doc or something), instead of designing something nice like a binary downloader and displayer, someone writes a program that hard codes word documents down to the browser by writing the word doc to the server's file system and them streaming and opened file down to the browser. So it goes like this: 1) read data from db 2) write data into word doc on file system 3) open word doc 4) stream down to the browser. And once an architect notices this code and the possible negative side affects it may have, the code is already in production.

There's also the flip side which shows how mad an architect can be when a developer is needed. I worked with an architect a few years ago (to protect anonymity I'll call him "Francke") who designed a dynamic content system based off of Java's i18n stuff. So we just needed to show a different graphic for different customers in the same war file and Francke wrote about 1800 lines of "framework" code to display this custom branding information. A bit of bad development was that he loved inner classes and never learned how to comment in Java (or C or JavaScript or anything else). Sadly, he was fired just days after bringing his daughter around and showing her to everyone (cute kid).

So, the whole point is that architects need to be checked by developers to make sure our designs don't suck and developers need to be checked by architects to make sure their code won't cause needless rework.

Also, something funny. I saw a resume (or maybe it was a job posting) that used the word "Architected" as in "Francke architected an enterprise level branding system." Is "design" a bad word or something? Will people get mixed up and think you're a photoshop jockey if you say "Francke designed an enterprise level branding system."?

Software development needs a new word for the architect role. I'm tired of people asking if I like Frank Lloyd Wright.