An architect should code. Period

This has been said over and over again, but as long as it keeps happening it just has to be said again.


A very common career path in IT “promotes” a coder over the years to a program manager with architect responsibilities. And being an architect they stop writing code themselves. The thing I see over and over again is that these people keep living in the programming environment in which they grew up. They did loads of work in VB 6 or classical ASP. When a new piece of software has to be designed, which quite often is supposed to do something similar to the things they built themselves in their heydays, they grab their old projects to demonstrate what they have in mind. Right now I’m facing an ASP.NET site which has to build dynamic pages on the fly based on dynamic sets of data. And the lead architect bases his ideas on an ancient asp site he built years ago. Given the tools of those days it is a well crafted product but in nature it is just plain old asp spitting out html top to bottom. Given today’s tools we can write far clearer, more powerful and better maintainable code building an asp.net control tree and leave the rendering of the html to the framework. But our lead architect doesn’t know this framework.


The good thing about my lead is that he is very open minded and eager to learn about today’s tools. But it would be so much better if working and coding with them would be part of his work. How can you be a good architect when you don’t know your building materials or construction tools?

This entry was posted in Chatter. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Anonymous

    I completely agree that “everything in the” is awfull nonsense.
    An even better reply would be: an architect should code and know his/her database stuff.

  • Dickisainterclub

    “Once you realize that your data and all data manipulation should belong in the DB (stored procs), and that all you are doing on a page is *formating* text. ”
    This is nonsense. As a Solutions Architect and former Application Architect and Software Architect I can tell you that the best architectures take care of a consistent golden thread. The architecture stems from code and outwards to high levels of organisation. If you take your eyes of OO and object-models you give way to poor organisation at the low levels. Moreover, if your company uses .Net you should not only know .Net inside out and know what can be exploited or constraints you and you should capitalise on your knowledge of OO and object-models, design patterns to leverage well designed code that produces a good architecture. Staying in the data-base makes you either a) a DBA not an architect and b) if you are an architect, then you will be seen as living in the ivory tower. I speak from experience the current code-base I struggle with is replete with poorly organised code with OR/M use in one place and SPs elsewhere. Developers ARE not architects and will problem solve locally and that’s great for a task NOT the architecture.

  • You be his BOSS.

    “The good thing about my lead is that he is very open minded and eager to learn about today’s tools.”
    then, why should he continue to be your boss or lead? You be his boss or lead.

  • Scott

    As an architect ( I found out I was one when I was introduced to a client) I find It hard not to want to code. The reason is somethings are harder to explain then to do or I do not have a strong idea on how it is going to do work. I write a lot of proto types. This allows me to work ahead of my fellow coders and get them to code the details once they understand the concept and prototype. This also gets them out of a lot of point-less meetings. This seem to be working in our shop.

  • Shaun

    over the years i’ve seen various companies promote/hire people into “architect” roles and the varying mistakes/successes these have had.

    The companies that believed an architect should never code have had a high numbers of projects fail; mainly with deadlines and feature implementation. In these companies, communication was bad, new technology adoption was low/frowned upon. Training was barely existent and staff retention was horrid.
    The architects would design something that looked good at the high level but didn’t fit well with the low level. Developers would try to hammer squares into round holes.

    The companies that believed an architect should code have had better success at project success.
    With these companies, they had the architect prototype the solution, demo it to the team for feedback then write fluid design docs, build the “skeleton” solution and help the dev team to pad it out. Along the way, feedback is constantly maintained.

    Interestingly, the companies that had the highest success maintained an interest in the ever evolving landscape of software and keeping up with it.

    I think a huge factor of project success and the architects role comes down to management and how they view the way things should be done.

    Management that thought they knew more about software than the developers/architects, had low success and very bad moral.

  • http://48klocs.blogspot.com Dave Solomon

    “Meanwhile, an individual best achieves optimal stupidity on those rare occasions when one is both given substantial powers and insulated from the results of his or her actions.” – Jaron Lanier, from http://headrush.typepad.com/creating_passionate_users/2007/01/the_dumbness_of.html
    It’s terribly apt – even if your architect is a genius who rarely makes the wrong decision, if their decisions aren’t based in fact, you’ll always be left with the feeling that they’re just an asshole on a power trip handing their decrees down from on high. It’s good that there’s smart people pointing them in the right direction, but they should be leading the way more than asking for directions.

  • Mike

    I agree with you that an architect has to code. But I can’t disagree with you more about using .NET. I’ve worked on my complex projects (many), and not once have I needed to resort to .NET.

    Once you realize that your data and all data manipulation should belong in the DB (stored procs), and that all you are doing on a page is *formating* text. Barely manipulating strings. You should be able to understand that you don’t need much more than the simplest language to handle this.

  • http://softwareindustrialization.com Mitch

    How about becomig a “professional software engineer?”

    http://softwareindustrialization.com/PreparingTheWorldForSoftwareEngineeringPart1.aspx

  • http://thecodist.com codist

    Amen. I have always tried to be architect/developer/pm/analyst when I was allowed to do all the roles. There’s something to be gained by having knowledge and ability in all parts of a project. The artificial separation so popular in most big companies guarantees the project will usually suck.

  • contrarian

    – Peter van Ooijen
    > ASP.NET site which has to build dynamic pages on the fly based on dynamic sets of data. And the lead architect bases his ideas on an ancient asp site

    Considering the lethal complexity and inbred deleterious flaws of Asp.Net, you may be fortunate to have an architect of a lucid mind. Even Microsoft recognizes Asp.Net is, in not so many words, a disaster. That’s why it’s hiring the likes of Phil Haack to help develop a “new platform.” Would to God it weren’t Asp.Net 3.0 or 4.0 or some such idiocy but a brand new thing.

  • http://michaeldotnet.blogspot.com MichaelDotNet
  • full time job

    It is almost a full time job (40 hr/wk) just to keep up with the new technologies, their status, supporting libraries, etc. just to know the “best of breed” solution. This is the job of an research architect IMHO — most application architects do this on their spare time, thus having 2 jobs in essence. Once they learn enough, I do believe they should start their own company as that will be the only way they can flower their ideas.

  • http://www.mikewitters.com Mike Witters

    I love this topic. By title I am a ‘Technical Architect’. By practice, almost always, I am the-most-senior-java-developer on any project I am on. When I’m on an infrastructure project (Network/Server topology type stuff) the TA title fits a little better, otherwise it should just be ‘Experienced Developer’.

    When I’m on a development project I am totally open minded to ideas from any team members. I love new ideas and honestly it takes ideas from people who don’t really have a lot of experience to sometimes open my eyes to a better way of doing things. I love hearing ‘Wouldnt it be simpler to just…’ when I’m thinking of some boilerplate solution I’ve used in the past.

    My opinion is that a title is just a word used to describe a perceived job description and position in a hierarchical job structure. I do agree that an ‘architect’ should stay directly in touch with the technology he/she will be using to help solve problems… usually that would mean to code.

    Personally I love to code and I would simply leave my position if it ever got to the point where I wasn’t supposed to code. Writing code is why I work in this industry and getting to do it is what makes me enjoy it.

  • http://www.vikasnetdev.blogspot.com/ Vikas Kerni

    There are enterprise architects and application architects.
    Enterprise architects should code? I don’t know the answer.

    Application Architects should code. Definitely Yes.
    Question is how much and what should they code.

    Let say 40 % besides discharging other responsibilities.

  • http://michaeldotnet.blogspot.com MichaelDotNet

    @Jeremy

    Who says you have to code at work? I guess it comes down to is it your job or is it your passion?

  • http://codebetter.com/blogs/jeremy.miller Jeremy D. Miller

    @Michael,

    It isn’t always the architect’s fault. When I was an architect I’d get yelled at by my boss for coding. Then get yelled at by the PM for the code not getting done. All in the course of an hour.

  • http://michaeldotnet.blogspot.com MichaelDotNet

    Someone who is an architect shouldn’t have to be told to code…. CodeToLive.net!

  • http://codebetter.com/blogs/ pvanooijen

    Seems I have hit quite a topic :)
    @Ingo : Bull’s eye !

  • Ingo

    Couldn’t agree more.
    You could take it one further – a architect would doesn’t want to continue to code should not become an architect.

  • NoLiveTv

    Scenario 1: “a program manager with architect responsibilities” — Deserves the rant. He doesn’t have time to code or investigate new trends.

    Scenario 2: A architect who idea-consults to multiple projects but who doesn’t have authority to enforce anything — Almost always an Organizationally useless position (at the C-level, they are known as the CTO).

    Scenario 3: Project-specific architect with coding/operational support deliverables. Pretty good combination, but keep the guy/gal off the heavy-duty critical path work or they may not be able to leveage their knowledge because they are head-down in the code.

    Basically, I agree.

  • http://www.opgenorth.net Tom Opgenorth

    While in theory a architect should not always have to code, in practice I’ve found that those architects that don’t code are effectively useless.

  • http://www.lostechies.com/blogs/joe_ocampo Joe Ocampo

    I love this topic because it is a double edged sword. Kind of what Sashidhar hinted towards. You go into being an architect with the intention of never leaving the code but your executive management expects you to perform administrative task as well. So what do you do?

    Exercise humility and don’t be totalitarian. Recommend architectures but don’t force them. Rely on your leads in the field to provide feedback. Trust them on their insights as it is usually dead on. When you can get back to the code embrace the fact that this is going to have to be something you are going to force yourself to do as you can become easily swept into administrative burdens.

    One question I have is what vertical market are you in? The reason I ask is because technical markets seem to have a better understand of what an architect is than any other industry. All the other industries simply look at it as a glorified development manager it seems.

  • http://www.dynacx.com Sashidhar Kokku

    Architects should code…..strong statement. I won’t always agree with it, coz when u end up being an architect, you are expected to make more managerial decisions, regarding the project, and more into the technical sense. However, as mentioned, its understandable that with the current pace of change in technology, one finds it tough to keep up with the newer technologies that are rising in the horizon.
    Its not knowing everything that you can do with a tool, its knowing what your tools are capable of doing that matters. Let the ppl working under you , who have been hired coz they have been working on .NET 3.0 (for the past 3-4 years [pun intended]), do the implementation part. I think an architect should be actively involved in mentoring his peers, and together they come up with something thatz “WOW’d” at.

  • karl

    Architect is a diluted and meaningless title. It stinks of huge upfront design and disconnected individuals that drive system design. Even if they do develop, it’s nothing more than first-amongst equal attitude, which is horrible.

  • http://prashantjalasutram.blogspot.com/ Prashant

    Totally agree with you.

    Thanks
    Prashant

  • http://www.lostechies.com/blogs/jason_meridth Jason Meridth

    Maybe your architect is hinting at a move to MonoRail? :)

    I agree with you though, architects should code. We’ve been blessed in our environment where I work. Our architects refuse to leave the code. They believe it is their responsibility to ensure the design they suggest, either get implemented or change if necessary.