Skip to main content

Programmers vs. Developers vs. Architects

I received an email this morning from Brandon Savage's newsletter. Brandon's a PHP guru (works at Mozilla) but his newsletter and books have some great overall perspectives for developers of all languages. However, this last one (What's the difference between developers and architects?) kind of rubs me the wrong way. Either that, or I've just missed the natural inflation of job descriptions. (maybe, it's like the change in terminology between Garbage man and Waste Engineer or Secretary and Office Administrator)

So maybe it's just me - but I think there's still a big difference between Programmer, Developer and then of course, architect. The key thing here is that every role has a different perspective and every one of those perspectives has value. The original MSF create roles like Product Manager, Program Manager, Developer, Tester, etc - so every concept may pigeon hole people into different roles. But the statements Brandon makes are often distinctions I would argue are the difference between programmers and developers.

While many advanced developers make assumptions such as "every programmer unit tests their code" or "everyone uses TTD", most developers I've ever met know that's not the reality.


Software developers write code. Software architects solve problems.

Actually, I thought it was Programmers write code and Developers solve problems. Architects build something even bigger.

That said, all of the points are valid - but I can't help but think... if developers now write code, what do programmers do? 

I see a big difference between the term "programmer" and "developer" - I know it's all semantics but it's an important distinction when hiring. Lots of people know how to "code" - technically, if you've dabbled in VBA in an Excel macro, you've "coded". Does that make them a "coder" or a "programmer" or a "developer"?

A good example might be programmers code, but developers debug. Developers should be able to see the bigger picture. Programmers can write a program - but, in my mind, developers should be able to describe the problem, identify the solution, and explain it. I've seen enough amazing programmers who can use the most arcane or bizarre ( but cool ) methods for coding a function or problem but are inept at defending or explaining it. 

But the other aspects of the newsletter have some interesting points on it.

Software developers see bugs. Software architects see the big picture.

Huh? If I hire a programmer, I expect them to fix bugs. If I hire a developer, I want them to do a bit more than that. Maybe a better way of looking at it is in scope:

Code ----> Library -----> Software Application -----> Broader Solution

I can expect a programmer to write code and maybe even an entire library. I expect a developer to be able to write/support a library and an entire application - heck, maybe even the entire solution. I do expect an architect to be a bit more than just a developer but the broader solution? I expect anyone in a more senior position (developer, architect, product manager) to get the big picture.

(now I have seen scenarios where S/As seem more focused on smaller issues instead of the big picture - but I don't want to get into a p*ssing match with Systems Analysts).

Software developers focus on the computer. Software architects focus on the customer.

Once again - I suppose you could say Programmers focus on the computer, developers focus on the solution, architects focus on the customer - but I thought that was the purpose of the PRODUCT Manager (or Project Manager). Either way, the developer better understand and get what's required. Developers should perhaps focus on their peers and ensuring they can explain what is involved.

Otherwise, don't call yourself a developer, especially if all you can focus on is the code.


Software developers think about new technologies. Software architects think about trusted technologies.

This is an interesting one. I tend to think about it in terms of "problems". Junior Programmers have a handful of ways of dealing with a problem and usually try to use them to fix a problem. Developers do (and should) learn about new technologies and see where they best apply. They should LEARN those new technologies but also be smart enough about when to use it. They should be able to evaluate those technologies and see if there's a reason to use it in the resolution of a problem.

If all a software architect did was used "trusted" technologies, does that mean they only use "proven" technologies? (in other words, the old "no one got fired for using IBM, etc" approach)

Punch cards were once "trusted" but they moved to "tapes" and then "disks" and then "optical". Which would you "trust"? It depends on your background. 

I would go so far as to say architects think about trusted SOLUTIONS, not technologies and PROVEN technologies. A solution is the approach you take to resolving a problem - the technology is what you use to implement it. 

When I got to the end of the newsletter, I started to think that it's me. Maybe it's the reason that you don't see job postings for "programmers" but for "developers" - but let's not simply evolve the definition of a programmer to a developer without making a huge differentiation between what those capabilities are.  

One other point: referring to software "architecture" can really bug traditional architectural engineers. While software may deliver a lasting solution and there are parallels between physical buildings and software, this easily overlooks a lot of issues (but that should be a different post). 

Programmers Program. Developers Develop. If you look at what an architect does in terms of requirements, it almost sounds most like systems analysis (because they often don't build it). Maybe what we really want is a "Builder" term. But then, maybe we need a "Wizard" because businesses often want software that will work "magic". 

If you've never read any of Brandon's stuff, do yourself a favor and check it out. 

What about you? Are you a Programmer, a Developer, an Architect? What's the difference to you?

NOTE: Comments have been disabled on this post due to large amount of spam.

Comments

AnthonyJClink said…
I did not read the article, but I do agree that architects tend to be gun shy about new technologies. I have been at shops that the better solution was never "architecturally approved" and enterprise architects tend to be the worse...

I think they are kinda losing their place in the world as agile practices do small things at a time. Let the tech lead and his developers come up with the design... all the architect does anymore is put his stamp of approval on it.
Allan said…
software companies delhi are involved in various activities in the process of providing solutions for their clients. There are business transactions of different nature carried out by these firms at different stages, for software companies requires taking care of all these business transactions that the companies are involved in at every stage of the project development and execution is very essential.
DBJDBJ said…
Zoom to 2016 and get enraged every day by people asking you to be join them as an Architect and than next asking you if you can code ...
Why not both? I do both and I keep occilating between which one I like more.
Whichever you choose, you need to know at least basics of the other one.
If you are lazy one, I would recommend staring with design. People cant always tell bad design from good, but they can always tell badly coded, buggy website from a well coded
Confused said…
In the UK, "developer" is the default term for someone who write code as the principal activity of their role. And it has been that ways since the early 2000s, at least. The term "programmer" is generally used only when explaining what you do to someone who works outside the field and doesn't understand what "developer" means; i.e. "I write computer programs for a living - I am a computer programmer."

The term "architect" is more interesting. And more challenging - because there are so many conflicting viewpoints on what an architect should be. In software, it's important that - in order to be credible with the developers - and architect should have at least some experience of writing code professionally. But I think the notion that "architects should also code" is completely wrong.

An architect is not a senior developer. And architects that have only previously worked in development roles, make poor architects. The reason should be obvious - to a man with a hammer, everything looks like a nail. Their natural instinct is to problem-solve with code. A more rounded architect looks might choose to problem-solve with COTS. Or bespoke. Or a mixture of both.

And finally, architectural thinking involves *context* in a way that development does not. Choosing what language a new product is to be built in isn't just about the relative merits of the specific problem domain. It as much (if not more so) about organisation capability, and organisational strategy. If I have a large pool of Java developers, and only a handful of Ruby developers then my choice of language needs to take account of (but not be dictated by) that.

And finally, I do not expect (even senior) developers to have to concern themselves with things like the difference between capital and revenue expenditure. That's not their problem domain. But it is something that a architect should be able to understand. If they cannot understand organisational context, it doesn't matter how great their blue-prints are: none will ever be built.

Isambard Kingdom Brunel was an engineer. He build bridges, tunnels, railways, steam ships and more. He never learned to weld, or mortar bricks. Bu he is was surely more of an architect than a builder.
Andrew MacNeill said…
Good thoughts, "Confused" - I don't think you're confused at all :)

I didn't want to bring up engineer as part of the discussion but to your comment, Brunei "was surely more of an architect" but it's not about actually welding or mortaring bricks...it's about knowing HOW to.

Someone who builds bridges understands how to structure it, how to design it and yes, how to identify when there is a problem and likely how to resolve it.

Context is huge. And your note about cultural differences in terminology is great and it almost makes the Programmer vs Developer vs Architect move into the discussion of "Bear vs Grizzlie vs Polar" :)



Anonymous said…
Are you thinking of building a luxurious hotel so, that your customers can have a happy meal with their entire family? If so, you can hire one of the Best Hotel Architects in India. Studio Lotus Architects have proper licenses to design the buildings and make the designs concerning the current state laws.
I am genuinely thankful to the holder of this web page who has shared this wonderful paragraph at at this place
Best Data Science courses in Hyderabad

Arnold DK said…
Nice article, it is very valuable and informative for me. Thanks for sharing these information with all of us. whatsapp mod

hari haran said…
This topic clearly explains about the situation, architects in Bangalore has professional solutions for these kinds of situations.

Popular posts from this blog

Who Wants To Be Logical? I Do! I Don't! (with Claude)

In my book, Towards Consciousness, I explore PET , a theory that attempts to explain consciousness and possibly how it might apply to AI. As part of the conversations with AI series, I've included this conversation with Claude.AI in which we were talking about something very different and yet the conversation redirected itself back to PET. For the record, there is no such thing as "Colfsity". A It's interesting to me that people want to proclaim their distinction from being rigid and unlike machines, yet they also complain that the "best" people keep a rigid schedule, regular routines and logic understanding of issues. That's a perceptive observation about a real tension in how people think about themselves and what they value. There does seem to be this paradox where rigidity is simultaneously rejected as "robotic" or inhuman, yet praised when it appears as discipline, consistency, or logical thinking. I think part of what's happening is t...

Merry Christmas

Whether you celebrate now, have already celebrated your past holiday, are planning to, or not, I hope you find yourself surrounded by family and those you love during this holiday season and are able to remember fondly those who are not with you. We often find ourselves buried in work, or too distracted by other problems, to share and remember a few moments with those closest to us. So many of us are separated by huge distances, we often find it easier to focus on those who are out of arm's reach yet so easy to connect with online, instead of those who are right beside us. So do yourself a favour, put down the keyboard (stylus, mouse, etc) and spend that time. I know I will. Merry Christmas. Powered by ScribeFire .

Comparing education systems based on their technology

(yes, I originally found this blog because of Scoble's note on it BUT it was kind of interesting all the same) Read Alex Mallet's summary of his first week at MIT. Malletrivia: Summary of the first complete week Wow - "There's an incredible amount of material packed into each lecture" - and it sounds interesting... Compared to some of the lecture content I have seen at our universities, you really must get what you pay for. While it sounds like Alex is writing frantically down notes in his classes, at least he's finding something worth writing about in them. Case in point: one of our local universities ( Carleton ) puts some lecture classes on the TV (like many universities do) - but you would think they purposely find the most boring professors to teach them. They put up PowerPoint slides with 30 points on them, speak in monotone voice (yes, imagine the typical caricature of the university lecture from years ago), tell the students to print their...