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.

Top comments (75)

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
 
chrismcleod profile image
Chris McLeod

Architect selects tools, frameworks, paradigms best suited for the job. Example: the person that draws a blueprint has selected the shape and materials for a house.

Engineer solves a real-world problem using software/algorithmic principles and coordinates with stakeholders. Example: a foreman consumes a blueprint but decides in which order things will be done, best practices for assembling components of the house, guides implementation etc.

Developer implements the solution; they are developing the software by bugfixing, refactoring, etc. Example: general laborers hammer in the nails when it is time to frame a house and tear down walls when it is time to remodel.

All of these are not titles but modes of operation that a single person can be working in at any given time. Each person will have varying degrees of proficiency at each important task and so when it comes time to titleize, may prefer a specific title.

IMO.

Collapse
 
david_j_eddy profile image
David J Eddy

Very nice explanations Chris. Creates concret analogies that are easy to understand.

Collapse
 
juanitomint profile image
Juan Ignacio Borda

I found the construction analogy rather useful thanks!

Collapse
 
srepollock profile image
Spencer Pollock

Very true and direct. Really like this response because as you say they're modes they are ways we interact with the virtual and real world.

Collapse
 
habelfoc profile image
Habel Justin

thanks!

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
 
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
 
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
 
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
 
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
 
anthonydmays profile image
Anthony D. Mays

I've found that there are nuances between how one organization interprets these titles versus another. But where it really matters is when it comes to deciding pay and fair market value. I'm more likely to stick with "Software Engineer" as a title than "Software Developer" because I can negotiate better compensation with the former. When it comes to dollars and cents, you have to ensure that the job responsibilities are commensurate with the pay you're looking to get at a company. Know your worth.

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
 
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
 
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
 
kspeakman profile image
Kasey Speakman • Edited
module InMyOrganization

let architect = ...
let engineer = ...
let developer = ...

I believe these titles are just an attempt to categorize jobs for management purposes. The actual duties performed will vary based on the needs of the organization and team.

An architect is considered a senior position. You don't typically see companies looking for a Junior Architect. Depending on the organization, an "architect" may be just the most senior engineer/developer.

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
 
martin profile image
Martin Beentjes

I do see a difference between an Architect, Engineer and Developer in my organization. It is certainly not a label to describe knowledge level of the people. I do see it as the point of view they have on the software they are building or helping to build.

Our architects are flying over the whole technical landscape, they monitor the things we do and build. We discuss all our decisions with them. They are the one with the 'biggest' picture.

Our engineers are designing, thinking on how a problem can be solved. They focus on their domain but take a look around them to see how other teams are doing things. How can fit a solution the best way in our infrastructure?

Our developers are focused on the thing they are programming. They do not have that much interest of the bigger picture but do have interest in building the software they must build in the most effective way possible.

Yes, the labels are just bullsh*t. Why? Because they make you feel less than someone else. But we need all of them, we need every person in the organization. Together, we build great things for our customers. Sometimes I am feeling like an engineer. Sometimes I feel like an architect. And sometimes I feel like a developer.

At the end we all want to make good software, and it depends on our perspective on what we do. We can do our things on all level. But it depends on the interests of the person themself.

Collapse
 
andresausecha profile image
Andres Ausecha Mosquera

I think i am software developer in some projects and software engineer in others, because sometimes you are required to analyze, design and code. But there are cases in which there is nothing to analyze and you just code

Collapse
 
saiap profile image
sai-ap • Edited

I am a software engineering manager (another world of titles with similar debate as I am observing on this post), will put in my two cents here. I generally hire SW engineers, SW developers, SW architects, etc for roles in my team and project and it hardly matters what titles they hold in their current job. If they can fit the job requirement and have good design and coding skills they are hired. Titles are generally driven by organization business needs and have a lot to do with what kind of product you are going to develop. So we should not get too much carried away by titles. All of them are good. Disclaimer: I started as a 'software engineer' and after coding for 7-8 years moved to management. If I ever go back to coding I will accept any title that you give me which is related to software development.

Collapse
 
jgaskins profile image
Jamie Gaskins

You don't typically see architects in smaller companies or at least, if you do, their role is not the same as it would be at a larger company. In larger companies, architects tend to work more horizontally across some or all of the teams within the broader engineering organization, not going too deep with any individual team. They work with the developers, managers, and product teams for some subset of services in their wider system to guide development of the system as a whole, helping negotiate tradeoffs between vertically focused teams when necessary.

In these larger engineering orgs, they might not even do any programming, or if they do they'll generally stick with prototypes to understand implications of different patterns, but they aren't usually down in the weeds on product development.

Regarding "engineer", I see all of what we do as engineering, so developers and architects are both engineers. Making a distinction between "engineer" and "developer" seems to be headcanon at best. "Engineer" sounds classier than "developer" but no developer I've worked with that cared about "engineer" vs "developer" in my 15 years in this industry has produced anything better than anyone else from either a short-term or long-term perspective. Seems more ego-driven than anything.

Collapse
 
dviejopomata profile image
Dviejo

The biggest enemy, in my opinion, is the ego, when a developer becomes an architect, it seems as if the desire of coding is removed, when the architect is the first who has to code, since after all, what is sought is that the system be manufactured in less time, easier to debug and higher quality.

Collapse
 
alemvik profile image
Alemvik

Software / Architect

They focus on the whole business (instead of individual systems, applications and programs) to determine or give advices about what softwares are to be bought (with or without customizations) and what softwares are to be developed (custom). They also set general guidelines and constraints to be observed when softwares are developed or bought. They choose standards, technologies, frameworks, langages, paradigms, and the tools that has to be followed. Software architects is a role assumed by developers or former experienced developers.

Software / Business Analyst

They help guide businesses in improving processes, products, services and software through data analysis. These agile workers straddle the line between IT and the business to help bridge the gap and improve efficiency. They gather requirements (in a document). Business analyst is a role that could be assumed by developers or former experienced developers.

Software / Developers

They modelize (design that include implementation-specific and technology-specific details) the systems (databases, applications, services, message brokers, etc.) using the information (if any) provided by the architects (if any), the engineers (if any) and the business analysts (if any). Those detailed specifications are intended to programmers.

They are capable of doing all of what is accomplished by the architects, the engineers, the business analysts and the programmers. When they do, By reducing the "assembly line" and since the developers have more awareness on what they already have in their back store (what they already did and can be re-used) and elsewhere, they can deliver quick/cheap interesting solutions.

They gather and set requirements, propose solutions, design and develop softwares for the chosen solution.

Software / Engineer

They solve real-world problems using software principles. They write the design documents for the developers. A design is a model (with algorithms) without any implementation-specific or technology-specific details. A model is a design with those details. Engineers also coordinate with stakeholders. Software engineer is a role that could be assumed by developers or former experienced developers.

Software / Programmer

They create/modify databases and programs, based on detailed specifications provided by the developers.

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.