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. Just like the difference between a dental assistant and a dentist. They do the `
same thing`, but differences do exist. Here is why I think so when it comes to software.
Word Etymology and Meaning
- 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”
- 1.design and make.”few software packages were architected with Ethernet access in mind”
- 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”
- 1.design and build (a machine or structure).”the men who engineered the tunnel”
- 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.
Lets append ‘software’ to each term and see what the mighty Wikipedia gives us:
A 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
A 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
A 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
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.
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:
A developer executes. Their talents often focused to a single area. Without need for the “big picture”.
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.
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?
Let’s discuss in the comments below.
2018-03-28: This article was picked and translated for the JP publication Any Picks. Check it out here.