[lug] Career advice

Michael J. Hammel mjhammel at graphics-muse.org
Fri Jan 1 12:46:57 MST 2010


On Fri, 2010-01-01 at 08:03 -0700, Rob Nagler wrote:
> Michael J. Hammel writes:
> > Become a software architect.  We have plenty of people who can write
> > code.  We don't have nearly enough who can define how systems should be
> > built.  That's because most engineers are terrible communicators.  And
> > software architects can't afford to be the same.
> 
> I strongly agree with "this is so much fun".  It's really great to
> hear you (Michael) are having fun.  I think that's the most important
> thing in any career path.

If you can't get up every morning anxious to do what you do then you're
probably in the wrong job.  Note I say "job" here.

> I have to disagree with the concept of Software Architecture as a
> career.  I don't think it's a healthy career path.  

Healthy?  How does reaching to be something more than you are make it
unhealthy?

> Rather I think it is much better to learn how to code and to code
> extremely well.  

Coding is as much a career as "Albertson's bag boy".  Both are honorable
professions.  Neither is a career.  It would be shortsighted to think
that learning to code is sufficient to make a career.  What does one do,
for example, once you get to be a really great coder?  Then what?  Pat
yourself on your back till you retire?

> If you can, do this with a group of people who are
> smarter and more experienced than you.  One litmus test for
> "experience" is if they actually have a test suite which they use to
> code.  

That's a good litmus and one that I don't always pass, sadly.  In the
real world serious testing is often relegated to the end of a
development cycle and often the item that gets squeezed the most.  This
is true even when testing is integrated into the development process (I
refer you to the Meridian projects at Bell Northern Research of the late
80's as an example).

Another litmus test is "did you have a plan or are you just writing
code?"  Without a plan the tests are meaningless.  Who made the plan?  A
coder?  Not likely, even if that's their current title.

Anyone can nail two boards together.  An architect tells you where those
boards go to keep the house from falling down.  Otherwise, they remain
just two boards, nailed together.

> Learn to test and code at the same time.  They use the same
> mechanics, but testing is a different sort of reasoning than coding.

Absolutely.  But both need architectures to be really useful.

> Work *really* hard.  Make lots of mistakes.  Admit you made them and
> learn from them.  

Admitting mistakes is probably bigger than learning to do anything else.
Can't fix what you don't admit is a problem.

> If you need someone else's opinion -- "who is an authority"

Joel is an ex-engineer who is also an author, which makes me as much an
"authority" as him.

> (did I mention "question authority?" ;-) -- about why Software
> Architecture is problematic, read this:
> 
> http://www.joelonsoftware.com/articles/fog0000000018.html

Joel is talking about architecture fanaticism.  Anything taken to
extremes tends to lose usefulness.  That not withstanding, software
architecture is still necessary for every successful project.  And
becoming a software architect is more of a career path than just
learning to code "really well".

> Happy New Year!

Ditto.  Geez - 2010 already.  I remember when 2000 was a long way away.
It's starting to be again.  *sigh*
-- 
Michael J. Hammel                               
mjhammel at graphics-muse.org / http://www.graphics-muse.org
------------------------------------------------------------------------------
           Try again.  Fail again.  Fail better.  --  Thomas Beckett




More information about the LUG mailing list