Job Responsibilities
"Software Architect" is a loaded term. In some teams it means writing UML and
not
coding, in some places it merely means experienced developer, and for others it
can
mean "the guy that writes the coding standards."
For me it means being responsible for the system/application working in
production,
scaling up to the required usage, performing acceptably, able to be managed/
supported, handling partial failure, failover.
Software Architect in a financial services company is very different than in a
software
product company. The quality of the work product is lower, there is less
structure,
more chaos, and a greater willingness to change tack on a daily basis.
Typical projects and short tasks:
- refactoring existing system to remove dependency cycles
- profiling a slow subsystem to identify a hotspot
- evaluating commercial and open source choices for a class library
- sitting in on a code review
- dropping everything to debug a production problem that is inconveniencing an
important user
- researching a bug in a JVM and looking for workarounds on mailling lists, with
Sun
Microsystems and with technical peers
- meeting with business users to better understand requirements
- meeting with another team to discuss technical implications of some joint work
|
Job Requirements
It helps to have a CS degree or, at minimum, a math or science degree but I know
people with degrees in politics, no degree at all. Both CS courses and software
engineering can suffer from a lack of relevance.
What is much more important is reading widely and working with smart people. The
only way to develop good instincts is to work on good systems. 90% of everything
(including code) is crap. If you only work on crap systems you'll be a crap
architect.
Also essential to read widely - the Software Enineering writings of the 70s
through
Steve McConnell, Martin Fowler, Robert Martin, learn multiple languages, learn
your
business domain, talk to users
|
Uppers
- Chance to use creativity every day;
- Fascinating problems;
- Always learning new things;
- No road map.
|
Downers
- Only a minority of architect roles (in financial services) are good jobs. Some
of the
roles are underpaid senior developer jobs working for junior managers. If your
manager earns $250k then salary compression will prevent you from earning much
over $175k
Other roles in central architecture teams attempt to set enterporise wide
standards
but don't have the organizational mandate to ensure adherence to these
standards,
eventually team realizes they are ineffective and irrelevant.
- Can be hard to find companies that will provide a technical career path that
pays
well
- software architect in a financial services company means being part of a cost
center
and often means being far from the decision-makers
- Jobs moving to India: When I last interviewed every single role was in a team
that
used outsourced developers in india
|
Lifestyle
Work hours typically 8.00-6.00 + some evening / weekend work. typically 50-55
hours per week. Travel few times per year to foreign locations. If you work for a
good firm there can be great social activities. Diversity - lots of ethnic
diversity but very male dominated, relatively open to lesbians and gays though
some organixations are a bit neanderthal
|
Compensation
Current:
$150k salary,
$100k bonus,
$50k stock,
excellkent 401k, health care.
|
Advice to Jobseekers
Only do it if you really, really are excited by code. Become expert and keep
your skills
broad. Change jobs when you're young. If you join a team that is writing crap
then leave
ASAP. This will be a shrinking field for next five years at least. The
outsourcing
pendulum will swing back at some point.
|
|