Software Architect vs Software Engineer role differences?
Posted by rozita123456@reddit | ExperiencedDevs | View on Reddit | 29 comments
I am a software engineer and I do a bit of DevOps as well. I have been seeing a lot of “Software Architect” roles recently and I’m wondering: what do they do exactly? Like is this different to being an engineer?
k032@reddit
Software Architect in my experience tends to be more like a program manager with a technical lean. The main development and "architecture" done by the team and lead engineers
kevinossia@reddit
It’s not a real title. Any senior or staff+ software engineer is going to be doing software architecture as part of their role.
We are all “architects”.
GoodishCoder@reddit
It's a real title in most companies lol. The difference for most organizations is going to be the scope. People with architect titles are generally responsible for things higher up the stack for things that span multiple teams whereas the engineers are generally responsible for system level architecture.
CodelinesNL@reddit
Yes, and in general architect as a job title as opposed to a role, means you have management who thinks people who don't carry the responsibility can dictate how subject matter expects should do their work.
There is some grey area, with software architects who also are ICs. But then it makes much more sense to call these staff/principal engineers.
In every company where architects don't code, you see the same anti-patterns: people proposing shit they don't carry the responsibility for.
GoodishCoder@reddit
Architects become a reasonable role when the organization grows enough that there needs to be architecture alignment across the organization. It doesn't make sense to have architects focused on system level architecture that a team will be responsible for beyond maybe tooling.
CodelinesNL@reddit
Role; yes. Title; no. At least not when it's the typical on where you don't carry the actual responsibility of your choices, and think you can mandate choices to the people who do.
GoodishCoder@reddit
I don't feel like it makes sense to say the role should exist but the title shouldn't.
In any mid to large company there are going to be people that have to make choices that impact people down stream, it's a completely unavoidable situation. If you let every team own everything end to end you're going to end up with like 10 auth providers, 5 cloud providers, dozens of k8s configurations, data all over the place, security standards all over the place, pipelines all over the place, overcomplicated resume driven development, teams that don't consider how anyone is integrating with them, etc. That gets extremely expensive super fast.
In fact if you're a principal engineer, I would be willing to bet you yourself have made decisions that impacted others that ended up having to adjust to accommodate the decisions you have made.
kevinossia@reddit
At most large Silicon Valley tech companies we just call those people software engineers.
GoodishCoder@reddit
Large tech companies also have architect titles.
realqmaster@reddit
I've been prompted some time ago by my boss to "step up from Senior Software Engineer to Software Architect".
I'm not sure what's the big difference, I've been designing whole systems in presales and defining standards and architecture for years.
ninetofivedev@reddit
One day you realize that titles, when compared across organizations, are completely arbitrary.
Software architect is typically just old hat. The more modern day titles are Senior, Staff, Principal, Distinguished.
You'll see tech dinosaurs and IT shops use the architect title.
I call them "Ivory Tower Architects", and I've been one. You're expected to sit up in your tower, completely unaware of the actual problems the engineers are trying to solve, and pretend that you can provide solutions.
It's how you end up with organizations adopting terrible practices. It's also just a terrible way to run a software organization.
shagieIsMe@reddit
Architects have forgotten how to code and tend to play golf.
https://wiki.c2.com/?ArchitectsPlayGolf
https://wiki.c2.com/?ArchitectsDontCode
Yes, those are both listed in the "CategoryAntiPattern" and "CategoryRant". The "See:" section at the bottom is also relevant.
More seriously, they try to keep the designs of different teams in line with each other and setting some of the standards that are (expected to be) followed.
Relevant-Magic-Card@reddit
Emphasis on expected haha
shagieIsMe@reddit
One of the biggest problems that architects have is that they're not managers... and rarely have the force of "this is how we're doing it" behind their words.
They're the single person that says it because committees are even worse (they tend to devolve into "the one or two people who do things - its good if they're in agreement and bad if they aren't ... and the rest of the people that attend the meeting") but unless there's some real mandate behind "this is how we're doing auth between services owned by different teams" you'll get one team using API keys that are stored in a file on a (hopefully) restricted file share, another team using http basic auth with a config file that gets wiped out each time the cluster reboots, another team is using Oauth (and since its "hard", no one ever uses their services and instead duplicates everything they do) backed by on onprem single sign on solution that takes 2-5 weeks to get a service account added to it...
(no, I'm not your coworker... why do you ask?)
The architect should be laying down the structure and saying "we're doing OAuth" and making sure that the identity management team is not sleeping on their tasks.
... They're the conductor of a disharmonious orchestra but have little ability to do more than wave the baton.
CodelinesNL@reddit
And they should not have. This kind of seagul archictecture where you swoop down from your ivory tower, shit on everything, and then proudly fly off again is the worst kind.
Ivory tower architects, especially the ones who "dictate", tend to have stagnated years if not decades ago.
Software Architecture is the shared responsibilty of the teams responsible for the software. Software architect is a role where you are a facilitator and coordinator, not a dictator.
Every company that gets this wrong ends up with two worlds; architectural diagrams and the real one.
shagieIsMe@reddit
https://www.mit.edu/~xela/tao.html
Corporate Wisdom : 7.2
... and Corporate Wisdom : 7.3
edgen22@reddit
Why do architects rarely have the force of "this is how we're doing it"? Is that true? Not saying it's not.
I just went through exactly what you've described here with having a team of one or two doing things and everyone else attending the meeting and I would struggle when there would be one or even occasional line multiple devs with different opinions. These opinions, even if they are not necessarily wrong, the fact that we didn't have a single person to just decide was constantly an issue.
I advocated for myself to become something like a principal architect of the team in order to fill this Gap and bring some order to the chaos. I nearly succeeded but somehow my messaging got mixed and I was accused of" just wanting to take control", or" just wanting to tell people what to do".
I was even told I'm unqualified for leadership because of these factors, despite the fact that I actually had to display immense leadership to get people on board without any official authority.
Anyway I can see this is still too fresh for me so I'm liable to go on rants about this. All I meant to say was that I'm surprised to read. Somebody say that even architects don't get authority to make decisions because I thought that's the whole point of it.
CodelinesNL@reddit
Because you're that dude in "The Dark Night Rises" who thinks he's in charge.
Affectionate_Link175@reddit
To be fair, with AI some engineers also forgot how to code.
engineered_academic@reddit
Ouch. I feel personally attacked by this.
trg0819@reddit
It depends on the company. All of the answers here are correct. As for me, that is my job title, but what I do in terms of role would just be called principal engineer at any other company. We don't have staff/principal engineer titles, if you're setting technical direction for multiple teams and working on the year long road map instead of specific stories, you're an "architect" at my company. I still write and review code almost every day, but most of my time is spent in meetings keeping the technical direction for dozens of engineers aligned with some long term goals.
FooBarBuzzBoom@reddit
If you are a senior developer that knows cloud, you are essentially a software architect because you understand the system as a whole.
gjionergqwebrlkbjg@reddit
That's not at all what enterprise architects do.
CodelinesNL@reddit
No one knows what enterprise architects do, not even the enterprise architects. They have Very Important Meetings though!
GoodishCoder@reddit
Architect roles aren't typically focused on system level architecture.
SplendidPunkinButter@reddit
In my experience, anyone with “architect” in their title is primarily a manager, and is too far removed from the code to have anything useful to say. They make graphs with boxes and arrows, and you have to follow those architecture decisions even if they make no sense.
CodelinesNL@reddit
In most cases they create an alternative reality with those lines and boxes, because the devs are actually responsible for running the stuff they create.
A large part of my work at large enterprise companies is basically placating the enterprise architects and isolating them from the real world so they can keep up their charades. Most often they're more than happy to play pretent since it allows them to pretend they're useful.
Fortunately I don't have to deal with that nonsense now, and can focus on building real stuff.
sharpcoder29@reddit
As an architect for over 10 years and an engineer for over 20 I will say it depends on the company. Most of the time it means being the team lead. The one who interfaces with the business and translates technical requirements to the team.
Usually it's working on harder problems like bringing Kubernetes in and doing PoCs, or an identity solution. Where engineers are more focused on a single project at a time.
Till_I_Collapse_@reddit
🍎 to 🍎