
Software Architect: The Best Job in America - joeblau
http://money.cnn.com/gallery/pf/2015/01/27/best-jobs-2015/index.html
======
ecopoesis
I think software architects are a company anti-pattern. It seems like such a
good idea, one or two big brains putting the whole system together, then a
pile of cheaper code monkeys doing the implementation.

On my experience, what you actually get is your one or two "big brains" doing
little to no work. They go to lots of conferences, are in a lot of meetings,
derail almost all useful conversation, and maybe occasionally produce a UML
diagram. The plebes responsible for actually building the system typically
throw away the architect's design immediately, because while it's a beautiful,
pure design, it doesn't take into account being deployed, running and being
supported in the real world. The code monkeys then build a deeply flawed
system, but it ships and works.

But at least the architect is great to have beers with during the Friday happy
hour.

Skip the architects, make the monkeys do the design. Have them vet it with
each other, preferably in a formal setting with your entire engineering team.
Everyone codes, and everyone architects.

~~~
quonn
> Everyone codes, and everyone architects.

This will result in an inconsistent mess, most likely.

If your architect is a decent programmer himself and has sufficient
experience, then there is no reason why his design should be thrown away.

~~~
jjm
In my professional experience I've met architects that don't code, or even
remember how. Very sad.

~~~
ecopoesis
Even worse, in my experience I've yet to meet an architect who does know how
to code.

------
jordanpg
I think we've all been somewhere that had a laughably incompetent "architect".
I can think of at least 3 in my own relatively short career, at three
different firms. The rest I would describe as... harmless?

And yet I can see the value of having a strong leader in this role, especially
on large-scale enterprise projects and similar.

My own limited experiences and the countless anecdotal similar experiences
I've read on HN, etc. over the years raises the question of how some of these
people get hired. I assume it's because architects are hired by C-level
executives and managers, not technical staff. Probably lots of odd
coincidences where everyone used to work at the same place...

But I can promise you this: if I am ever invited to sit in on the interview
for an architect, those candidates will get nothing but questions about the
fundamentals of networking and development from me.

~~~
jacquesm
> My own limited experiences and the countless anecdotal similar experiences
> I've read on HN, etc. over the years raises the question of how some of
> these people get hired.

I think I clued in to part of that a couple of weeks ago: they tell management
what management wants to hear in a language that management understands. This
sort of rapport leads to a completely misplaced trust and the associated
trainwrecks make for interesting projects from a recovery point of view.

In a nutshell: it's all people and psychology and being antagonistic will more
often than not cause you to be ignored, even if you're right and so the bozos
get to have their run.

------
dccoolgai
You _always_ see this at the top of every list of this general ilk. For me,
it's true. I do it and I love it. But when I look around the office at my co-
workers, I honestly believe 70-80% of people would either just abhor it or be
terrible at it. Even though they might complain about it, they love meetings.
Love them so much. They get out of a meeting and genuinely feel like they did
something productive. These people would be deeply unhappy if they were yanked
out of the candyland where having meetings and opinions was what they were
responsible for and suddenly were told "Now you have to do something tangible
to earn a living." ... In the same way I would be deeply unhappy if I were
told I had to go to meetings all day. The point is, this probably is the best
job... but not for a lot of people. So it seems misplaced at the top of all
these lists.

~~~
mastazi
As a developer, "meetings" and "expressing opinions" is exactly how I picture
a software architect's job. I'm not saying that in a diminutive way, I
actually think that interpersonal communication and group work are very
important in any human endeavour.

~~~
vendakka
There is usually a fair bit of prototyping work involved as well. There's also
a lot of listening involved, as you can't really design a good system without
first talking to the people who are going to use the system and understanding
their needs. In addition you'll need to listen to the folks who are going to
be implementing the system as well so you get a feel for what they are good at
and what they enjoy working on.

------
bovermyer
What I thought was hilarious is that the #2 job, Video Game Designer, had a
"Low Stress" rating of A.

It's almost like CNN doesn't know how much gamers hate the people that make
games. I would never go back to the video game industry without protections in
place to keep ragey gamers from swatting my house, sending death threats my
way, or so forth.

~~~
guard-of-terra
Whoa guy. I was thinking more about runaway overtime and release rush stress.

------
jayvanguard
It is an unfashionable role right now in good software development
organizations. I used to go by the title but tend not to anymore.

Nevertheless, there is still a need for that role in large organizations
whether they are called that or not. A typical project or product at a large
company has many people over multiple sites involved and/or significantly
affected by the project.

Someone with enough technical depth needs to coordinate, make decisions, and
be accountable for the overall technical cohesion.

Most developers either aren't interested in spending their time on that or
aren't good at it. The ones that are end up playing the role of architect. If
they don't have the authority to back it up, either by reputation or granted
by title, they will get nowhere when they try to convince other groups all
work towards the same vision.

~~~
exabrial
Agree. It is unfashionable, but in the long run, having a unified technical
vision for your product breaks down silos and makes products easy to maintain.

Here's the problems I've had with this position:

1) Not innovating. Basically you decided 10 years ago to use Java 1.4.2 and by
golly it was good enough then it's good enough now. You have to rock the boat
occasionally. And yes, your applications should require a rewrite every 3-5
years.

2) I've worked with too many people that were promoted into the role by time
at the job, instead of skill, which is the real anti-pattern.

3) They "don't code." This is ridiculous. Eat your own dog food. If you can't
code faster/better than the engineers underneath you, you need to be replaced.

------
Mandatum
The best architect I've worked with was previously a developer and then
developer lead. He kept current with new technologies, development
principles/tools and frameworks that were relevant to our stack. He helped
with development occasionally and was pretty much the go-to guy for not being
able to come to a solution on our own.

Without a deep understanding of the moving parts of your systems, I don't
think an architect can be very useful outside of taking meeting time from the
development team. They're great for handling bureaucracy in a large
environment, however a lot of that role can be done by your manager or their
manager.

Unfortunately handling bureaucracy isn't very high on the list of job
satisfaction of someone who's role is in draught, he moved onto greener
pastures shortly after I signed up.

------
q2
Honest questions: How to become software architect? What are the relevant
qualifications/industry standards? Can any current or past architects on HN
share their life experiences? Thanks.

~~~
slowmovintarget
1) Read (a lot) and absorb quality writing on software development. For
example Pragmatic Programmer, Code Complete, Designing Hard Software, SICP...

2) Create software (for about 10 years at least) for fun and profit. Assume
others must read and understand your code. Write it for them. Also love the
code you write. Find the beauty in solving problems elegantly and simply.
You'll learn a lot.

3) Teach others how to create high-quality software, most especially focusing
on "why". This keeps you thinking about what you're doing and leads to you
finding ways to improve.

4) Listen and evaluate honestly when others criticize your choices. Maybe you
did do it wrong or you don't have the whole picture. Have strong opinions,
weakly held.

5) Repeat.

These aren't qualifications so much as guidelines for when people ask me how I
got "so good." My title has been "Software Architect" for the last twelve
years.

There's a lot more to it, naturally. Your biggest job as an architect is to
extend the reach of the entire development team. Be it by writing libraries
and frameworks for the project, mentoring developers, or creating designs and
guidelines for developers to work within. Like a building architect, you are
responsible for crafting and engineering the space in which people will live
and work. For a software architect those people are the users, the developers,
and the stakeholders. Your job is to strike the right balance between the
three groups.

The reason you see so many posts in this thread deriding software architects
is that as an industry we have largely forgotten what software architecture
is. B-School and CIO Magazine have been selling executives on out-sourcing so
that they don't have to "worry" about that kind of thing (and we're just now
recovering from this). Capital "A" Agile came along and sold them another
bill-of-goods that doing Scrum would fix all the issues.

For these and other reasons, the title basically came to mean "really good
programmer" and was handed out as a simple promotion. But the real software
architects are never just that. When doing their job properly, they become the
foundation for excellent software development teams, and for excellent
software.

------
duckspeaker
Software architects are developers in a past life who don't want to do any
real work anymore. They never really liked coding and they're certainly not
getting their hands dirty.

~~~
slowmovintarget
No. Those are bad software architects.

That's like saying developers are people who write buggy software for job
security. All they like to do is play around with the latest toys and they
always make the project late. Those are bad developers.

Good software architects make the entire team more productive, the entire
product (or family of products) more cohesive, and make future change easier.

------
mprny
"Benefit to society" whats that all about? Landman and Patent Agent get A's
for benefiting society. From what I can see anything software related gets B
or less.

------
jkot
Top 10 something lists are far from exact. Second best job in this list is
'game designer'. Obviously this list ignores overtimes, job stability, living
cost etc.

~~~
phamilton
But they said it gets a 'A' for low stress! /sarcasm

------
mcmancini
This list is nonsense. Video game designers get a 'B' for benefit to society?
The first engineering position is #37? Clickbait junk.

