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?


Comments

Unknown 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" :)



After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article.
Ethical Hacking Course in Bangalore
Certified Ethical Hacker Course
Wow! Such an amazing and helpful post this is. I really really love it. I hope that you continue to do your work like this in the future also.
Ethical Hacking Training in Bangalore
Ethical Hacking Training
I am impressed by the information that you have on this blog. Thanks for Sharing
Ethical Hacking in Bangalore
Certified Ethical Hacker Course
Cyber Security said…
Thumbs up guys your doing a really good job. It is the intent to provide valuable information and best practices, including an understanding of the regulatory process.
Cyber Security Course in Bangalore
Very nice blog and articles. I am really very happy to visit your blog. Now I am found which I actually want. I check your blog everyday and try to learn something from your blog. Thank you and waiting for your new post.
Cyber Security Training in Bangalore
I will really appreciate the writer's choice for choosing this excellent article appropriate to my matter. Here is deep description about the article matter which helped me more.
Best Institute for Cyber Security in Bangalore
I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
Data Science Training Institute in Bangalore
Thanks for the best blog. it was very useful for me.keep sharing such ideas in the future as well.
Best Data Science Courses In Bangalore
I am always searching online for articles that can help me. There is obviously a lot to know about this. I think you made some good points in Features also. Keep working, great job !
Data Science Course in Bangalore
I’m excited to uncover this page. I need to to thank you for ones time for this particularly fantastic read !! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site.
Data Science Training in Bangalore

Popular posts from this blog

Well, that explains CodePlex...

In a move that will be sure to anger open source (or rather anti-paid software, anti-Microsoft open source)  zealots, Microsoft is planning to buy GitHub.

A year ago, I mused about why Microsoft would shut down CodePlex and how the world needs competing source code repositories to be strong. I'm not the only one per this Slashdot article :
"...people have warned about GitHub becoming as large as it did as problematic because it concentrates too much of the power to make or break the open source world in a single entity, moreso because there were valid questions about GitHubs financial viability...." - Jacques Mattheij

I will be interested in seeing this play out - whether developers jump ship or not. Have all the efforts Microsoft has made in pushing towards open source be seen as genuine or will all the zealots jump ship or maybe even attack?

Microsoft's comment about why they shut down CodePlex referred to how spammers were using CodePlex. Well, GitHub has its own …

FoxInCloud Stats

FoxInCloud sent this link a while back about their statistics regarding visits to their site:

http://foxincloud.com/blog/2017/12/27/VFP-community-lessons-from-foxincloud-site.html



What's interesting here is the breakdown of people. Yes, I think it's understandable that the Fox community is getting older.

Another factor is the growth of the mobile and web environments taking over development. These environments really do push people towards the newer non-SQL or free SQL/hosted environments but more towards hosted storage options like Amazon and Google. A tool like FoxInCloud that helps MOVE existing applications to the cloud inherently competes with those environments.

But FoxInCloud also allows developers to extend their application further by giving them a starting point using Javascript and the basic CSS (such as Bootstrap). If you're not rebuilding your application from scratch, it's certainly a great step forward.

Attending Southwest Fox 2019 could change your life - Find out how

Southwest Fox is coming up in October and as I do every year, I spoke with the organizers Rick, Doug and Tamar on the FoxShow.

Deadlines for Southwest Fox:
Super-saver price (before July 1): $695
Early-bird price (before August 1): $770
Regular price (August 1 and later): $820
This year, I took a different approach with separate shows for each organizer but the main message is still the same : July 1st is their Go/No-Go date.

Conferences don't talk about this very often. I don't think developers really question if Apple will hold their WWDC in June or Microsoft will hold their Build conference - but that's because those conferences are vendor-led.

Southwest Fox is a community-driven conference - it's not driven by a company with an agenda. Listen to the interviews and you can hear how important each of the organizers feel the live connection between speakers and among attendees.