DEV Community

Cover image for Opinion: Architect VS Engineer VS Developer
David J Eddy
David J Eddy

Posted on • Updated on

Opinion: Architect VS Engineer VS Developer

Originally posted on my blog.

Some would say the differences are semantic, some say pedantic, some say titles are a waste of time, I say it matters, and there is a difference. Here is why I think so.

Word Etymology and Meaning

Dictionary.com

Architect

ar·chi·tect/ˈärkəˌtekt/noun

  1. 1.a person who designs buildings and in many cases also supervises their construction.synonyms:designer, planner, builder, building consultant, draughtsman"the great Norman architect of Durham Cathedral"

verb COMPUTING

  1. 1.design and make."few software packages were architected with Ethernet access in mind"

Engineer

en·gi·neer/ˌenjəˈnir/noun

  1. 1.a person who designs, builds, or maintains engines, machines, or public works.synonyms:designer, planner, builder, architect, producer, fabricator, developer, creator; inventor, originator, deviser, contriver, mastermind"the structural engineer's drawings"

verb

  1. 1.design and build (a machine or structure)."the men who engineered the tunnel"

Developer

de·vel·op·er/dəˈveləpər/noun

  1. a person or thing that develops something."a property developer"
    • a person who grows or matures at a specified time or rate."I was a slow developer"
    • a chemical agent used for treating photographic film to make a visible image.

So we have Architect (computing) that means to 'design or make', an Engineer who 'design and build', and finally a developer who grows or matures at a specific time/rate. 'Developer' describes the person's state, whereas the other two describe the person's actions.

Wikipedia.com

Lets append 'software' to each term and see what the mighty Wikipedia gives us:

software architect is a software developer expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms.Software architect - Wikipedia
https://en.wikipedia.org/wiki/Software_architect

software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software. Prior to the mid-1970s, software practitioners called themselves computer programmers or software developers, regardless of their actual jobs.Software engineer - Wikipedia
https://en.wikipedia.org/wiki/Software_engineer

software developer is a person concerned with facets of the software development process, including the research, design, programming, and testing of computer software. Other job titles which are often used with similar meanings are programmer, software analyst, and software engineer.Software developer - Wikipedia
https://en.wikipedia.org/wiki/Software_developer

So according to Wikipedia the architect makes high-level design choices, sets standards, and picks the tools. Where as engineer and developer are closely related. We now have two examples of how the architect is distinct from engineer and developer so let's clarify the differences between those two next.

If you know what this is, good for you. If you know what it comes from I would like to know.

Engineer VS Developer

Software Engineer Insider has a great (but short) article discussing the differences. To paraphrase an developer focuses on the coding in a narrow scope. An Engineer understand the 'big picture' and 'client requirements'. Following the entire SDLC of the product. From client request to final deployment.

Jason McCreary puts it short as well:

Developer
A developer executes. Their talents often focused to a single area. Without need for the “big picture”.

Engineer
An engineer designs and plans. Always aware of the “big picture”. With talents in many areas. An engineer can assume the developer role. But an engineer's core focus lies with architecture.

Conclusion

With the above and many other conversations and much research my opinion is formed based on the knowledge and consensus available: Architect, high level choices and tool selection. Engineer, build applying scientific mentality and methodical process. Developers, write the computer code to make it do a thing.

What do think. Am I being overly pedantic? Do you not care either way? Are you an architect and feel insulted when someone calls you a coder? Lets discuss in the comments below.

Originally posted on my blog.

Oldest comments (73)

Collapse
 
niorad profile image
Antonio Radovcic

Interesting! It would be a bigger deal if the field were as regulated as architecture of physical structures for example. Without that, the words may have as many meanings as there are companies with job-boards 😬

I also think that, to be good in any of the three, you need to be good in all of the three.

I guess it also depends on the language. The German translation "Ingenieur" isn't common in the dev-context. Maybe it has to do with the "German Engineering" trope, that already owns the term.
"Architekt" and "Entwickler" (Developer) are used more commonly, though. In conversation with non-tech-people, the term "Programmierer" is usually sufficient.

Collapse
 
zenphp profile image
Jason Murray

I'm going to petition my director to change my title to Senior Entwickler immediately.

Collapse
 
vier31 profile image
Jan Schröder

In Germany, Ingenieur is a protected title like Doktor, so one needs to go through a very formal education in order to earn that title.

Collapse
 
niorad profile image
Antonio Radovcic

Yes, same with "Architekt", but I'm not sure how it is when you prefix it like "Softwareingeneur" or "-architekt". I guess it's the same as with "Hair-Doktor" or "Handy-Doktor".

Thread Thread
 
vier31 profile image
Jan Schröder

I used to be a sound engineer and I was not able to call myself Ingenieur, because there are also Toningenieure.

My guess would be that it's okay for marketing, where there is no risk of misleading a customer, but as a professional title it's not.

Collapse
 
david_j_eddy profile image
David J Eddy

Agreed, without regulation titles become as worthless as the paper it is written on. Personally I would like to see some certification body take on the task of providing professional accreditation. Not per language mind you. That would be to specific and hard to keep up with. More, general computing concepts, mathematics behind computers, algo's, design patterns, business cases, etc. I doubt it would ever happen but one can hope right?

Collapse
 
niorad profile image
Antonio Radovcic

It would need to be country-based, but yes. I think the most important topic would be ethics and logic, since you're most likely affecting lives, especially in big corps.

Collapse
 
phlash profile image
Phil Ashby • Edited

I'll bite :)

I have had all those titles, and it makes little to no difference to what I do, and quite a lot of different to how I'm perceived.

First contact with suppliers or customers: it's useful to set an expectation of authority so I'm an Architect - they feel valued and we can get going quicker on working together (or coming to agreed separation).

With team members I will be working with: I introduce myself as the fool responsible for the poor decisions, taking some pressure off them, suggesting that good decisions are made by others and demonstrating the humour necessary for survival in a work environment :) Over time they can decide for themselves on my actual skills!

Would I be offended by being a known as a 'coder'? Nope, quite the opposite: that means someone thinks I can in fact write code, and will understand what I'm looking at (possibly their efforts, possibly my latest PoC mess), a fellow geek, not a weird out-of-touch golf-course decision making 'Architect' in an ivory tower somewhere.

In terms of what I do: architecture is a role on a team, equal valued to other roles, with different focus and outcomes (big picture goals, communication with stakeholders, etc.) it's my T-shaped specialism, other folks enjoy theirs and together we get stuff done. If we're doing it right then mentoring takes place and others get to learn some system and business scale patterns from me while I learn something from them.

Collapse
 
david_j_eddy profile image
David J Eddy

Very well said Phil. Like you I follow the 'if its bed, its my mistake. If it's good it was the teams effort."; for the same reason as well, it takes pressure off the other team members and helps keep the focus on the goal.

Collapse
 
juanitomint profile image
Juan Ignacio Borda

Same here... Been there done that! Multiple hats same guy!

Collapse
 
biros profile image
Boris Jamot ✊ /

I'm proud to be "just" a developer.
I design my software, I do technical choices, I assume it and I can argue them, but I'm still a developer.
The rest is bullshit.

Thanks for putting this in the debate 😉

Collapse
 
dwilmer profile image
Daan Wilmer

From this, I assume you probably work alone or in small teams. The responsibility of design and implementation are all yours, or easily shared between team members.

However, for larger teams to work together, you need some people to specialize to see the big picture, and others to specialize on certain smaller parts. The one responsible for the big picture is the architect, while the engineers and developers usually manage smaller parts.

There is an implicit assumption that the one overseeing the whole thing is more important or more valuable, as if the team were a military hierarchy. In reality, it's mostly just a different job.
Compare it to a football team: the coach is the one making the larger decisions, whereas the players have to turn these larger decisions into actions that actually achieve something. And it's quite clear that (looks up players from PSG, the first French football team I know) Kylian Mbappé and Thiago Silva are the stars of the team, and they're valued more than (looks up coach) Thomas Tuchel.

Collapse
 
steveblue profile image
Stephen Belovarich

I agree with these definitions, having taken positions where I could be considered a developer, engineer, or architect. I always considered myself more of an engineer even when recruiters wouldn't touch the title Web Engineer with a cattle prod.

Collapse
 
prantzos profile image
Vasilis Prantzos • Edited

This is a bit too much... In any case a title makes no real difference.. A good software developer can go deeper than just execution and know more about how and why things work the way they do..

Collapse
 
marath007 profile image
marath007

Well done on the research it makes a lot of sense! In the end they are just words, but well defined words allows for better communication!

Collapse
 
david_j_eddy profile image
David J Eddy

Exactly!

Collapse
 
danielsobrado profile image
Daniel Sobrado

The reality is what you do, not the title you put in your CV.

An hands off architect is usually a better decision maker.

Managers that code often are more realiable managing teams ...

It is common to do multiple tasks and to be a pure architect or engeenier or manager.

Collapse
 
ianwaldrop profile image
Ian Waldrop

I avoid using the titles personally; when I describe what I do to non technical people I’ll typically use the words “design”, “build”, “test”, “fix” and “repeat”. Among our kind I’m still finding my place, but I’ve been slowly moving toward the architecture side of things and appreciate the distinctions you’ve made here.

Collapse
 
xfile3160 profile image
Cesare Mercurio • Edited

From my little experience I can say that when there are many engineers to build a solution, from application to system, many are the ways to approach each of the layers. You need an architect that knows how the system and application need to work together to ensure best end result. You also need an architect to design your software in the best way possible. Building an app that uses a sensor could be difficult if there are many user interactions where the sensor needs to do different things. An engineer would build workaround to his code, an architect would prevent workarounds by designing a good FSM framework. Both of approaches work and reach end result, but what's then easier to maintain? Small companies usually struggle to find this valuable, because of the need to get stuff done.

Collapse
 
notoriouspyro profile image
Craig Crawford

That's only if you don't understand what a noun or a verb is.

The first two terms are used as both a noun and a verb. You cannot compare a verb to a noun, they have different meanings.

Collapse
 
stephenmirving profile image
Stephen Irving

An exercise in pedantry. Thanks, but we all have dictionaries too and our employers can put on our business cards whatever they would like.

Collapse
 
johnrcui profile image
John R. Cui

When dealing with complex systems. The person that sits down and decides what design patterns to use, what tools to implement, what protocols to consider, from my experience, is not something many devs can do right. This is where the architect comes in.

The engineer is someone that actually knows the tooling and uses it to build all the many parts of the system according to design specs. I find a lot of devs fall in this place.

A developer, for me, is just a generic term but also can be used to define someone who has no clue what various roles are required to build a system -- someone who might just Google something on how to solve a problem instead of knowing how to solve the problem and Googling the technicality involved in it.

So architects are good at deciding the ecosystem. Engineers are good at the tooling. General dev are good at general coding.

Collapse
 
idanpl profile image
Idan Pl

Seems like according to these definitions, developer is a junior software engineer and engineer is a senior software engineer.

I personally tend to disagree to these definitions. I think that developer in software is someone who mostly develops, which means uses the tool which we call code to build stuff (without saying how well he's doing this), which is the same as software engineer.

Architect is indeed someone who looks primarily in a broader view of the software, and has a future view on how the software as a whole should look like.

Collapse
 
fullstackto profile image
Full Stack Toronto🦄

In Canada you can't call yourself an engineer without an engineering education and passing a union exam. So software engineering in Canada is rare it's architect or developer. An engineer is incharge of making systems that could affect someone's life and require ethics in Desicion making a software engineer would work on the site on hardware that keeps you alive like a heart rate monitor. A developer makes stuff that runs on computers or the internet

Collapse
 
david_j_eddy profile image
David J Eddy

"...An engineer is incharge of making systems that could affect someone's life...

Like aircraft control systems, heart-beat (pace) makerts, and traffic control systems? All controlled via software. In Canada are these roles only filled by people w/ union exam certified people?

Collapse
 
fullstackto profile image
Full Stack Toronto🦄

There is normally at least one on the team to provide the certification stamp.

Collapse
 
diegoos profile image
Diego Oliveira

I'm agreed with the Canada way.
In my country (Brazil), a lot of developers has self-titled as an engineer.
But we have an engineering course that guys need a lot of time and study to get a certificate.

In my opinion, that's not fair with them.

So, I'm just a developer, even though I lead a team.
Being a developer, I can develop systems, software, people, myself, etc...

Just like the comment of Boris Jamot, I'm proud to be a developer. :)

Collapse
 
bigab profile image
Adam L Barrett

In Canada, you also cannot call yourself an Architect without a license, which requires a test and ongoing certification.
raic.org/raic/becoming-architect

There is no such legal restriction on Developer that I could find.

Collapse
 
david_j_eddy profile image
David J Eddy

"...Architects are professionals. The public must be sure that people who call themselves Architects are qualified to practice in their field...." - raic.org/raic/becoming-architect

Love it! Now how to we apply that to software?

Collapse
 
alfonsification profile image
Alfonse

My question is, what is the term for someone who fits all three roles? Most of my developer roles have involved just being told the requirements and coding features, then passing them to QA. My current job, though, is with a much more agile team, and every "developer" has a hand in every part of the process. We meet and talk with the customers and end users often for feedback and to discuss new features and requirements, like engineers. We do all of the coding, like the developers. We also make all architecture decisions -- our server configurations, our technologies, our libraries, our infrastructure, etc.

We all fill all three of these roles, which one we are filling just depends on the day. Is there are word for this kind of position?

Collapse
 
smahoff profile image
smahoff

Hi, Alfonse. I have a similar role, where the entire team acts on all levels and interfaces customer & requirements. In my role (owing to the field of work I suppose), I am a so-called intelligent algorithms specialist, to convolute matters even further :D

Collapse
 
david_j_eddy profile image
David J Eddy

I'd call that a 'superhero' :D.