|
Can I
Just Change Jobs?
By Andrew Wilson
The topic of "Love it or Leave It" from Jeff Atwood is an
old one that pops up every year. See these two links:
1. Jeff
Atwood, "Coding Horror: Programming: Love It or Leave It,"
2. Joel
Spolsky, "The Joel on Software Discussion Group - Thinking of leaving the
industry,"
Its the notion that software developers are so
passionate about coding that they would do the work for free and that
anyone who wouldn't is a bad developer. I, after a lot of reflection, agree
with this up to a point. I code in my spare time on projects of my choosing
because it is something I am interested in and I find it relaxing. It's
recreational programming.
There is a misguided notion that coding and software
development are the same thing. Software development is a process of
requirements gathering, designing, refining, developing, debugging,
refining and deploying for the purpose of making money or for academic
research. This process often occurs within the scope of one or more teams
that have their own hierarchies and procedures for decision making.
The problem with the "love it or leave it" attitude is
that it doesn't separate the job from the task. The task of coding is often
enjoyable provided you are working on an approach that you don't
fundamentally hate. Hate is a strong word for the situation, but most
developers eventually get stuck implementing something that is just a
horrible idea but we're doing it anyway because we were told to do it. I
get really cross in those situations because I feel like I'm failing my own
standards even though I am doing what I am told. I feel like I also failed
to explain my viewpoint in a persuasive enough manner.
The job of software development can be terribly
frustrating depending upon the team and organization. You could have a
dictator for an architect who never listens to your designs. You could have
a miser for a VP of Engineering or CTO that expects his employees to work
60 hours a week. You could have the most dull job in the world and the code
you are writing is not challenging or even interesting. You could have five
bosses that compete for your time and get angry when you work on one of the
other boss's tasks. You could have three or four cliquey teammates that
create unnecessary drama in the workplace. You could be an architect but
not have support from the CTO so nothing you design ever gets implemented.
You could have a nutty team lead that always wants to take shortcuts in
code rather than really fixing a problem. You could have an HR policy that
requires a timesheet that describes the work you performed in 15 minute
increments. You could have daily standup meetings that take an hour,
accomplish nothing, occur at lunch every day and the next round of meetings
begins at 1pm. Your manager may take a nap, with the lights turned off in
his office, while the rest of the team is on hour 12 of a 14 hour day
trying to meet a deadline. Your software developer job could really be a
miserable thing.
How many people have seen one or more of the above in
their own workplace? I've seen all of these actually happen! A few of them
have happened to me. Having five people assigning you tasks and making them
negotiate for your time is very trying. That sleeping manager really amazed
me but I already had a new job and just wanted to get out of there.
We are fortunate in many areas though. We generally make
much more money than the average person. Our salaries plateau early in our
careers compared to others, but the plateau is often well above the average
pay in your geographic area. We often work in comfortable, climate
controlled buildings. We almost always get good benefits like health care,
some form of retirement and paid time off. We often get to work on
challenging problems that test our abilities. We often get to work with
smart people that often care about their work. Many of us have a lot to be
thankful for.
Who should we be thanking? Is it our employer? How about
teachers? How about team mates? Maybe it's our parents that encouraged us?
Our spouses and our family? God?
We got to where we are by working darn hard and through some people that
supported us. Our job is not easy and not everyone can do it. We give up a
lot of free time to master our craft and we often have jobs that require
longer hours than almost everyone in the company. We are passionate about
our work and expect to be treated and paid well too. And we are thankful to
those who support us and stick with us when we are working.
Loving your job and loving coding are two very different
things. We cannot sit and judge a person's situation from afar and say that
he should be thankful for his job and is whining. Sometimes a job just
sucks and it's time to move on. Sometimes we need a reminder that other
companies are different and there are better projects, better places and
better teams.
There are plenty phenomenal software engineers who are
tired of the job and want to try something new. A good friend of mine left
software development to become a photographer. He is easily the best
software developer I have ever worked with and he walked away from the
craft entirely. He codes just for the fun of it, occasionally writing the
odd sudoku puzzle solver and thus taking the joy out of the puzzle entirely
and moves on to something else. Is he a bad developer? No, he's just done
and ready to try something new. How many people do we know that came to
software development from some other field? How many of them are good at it
and do we call them quitters for leaving the field they started in?
We sometimes take the viewpoint of "code above all else"
but we see many that want to have a good job and be able to enjoy other
aspects of life. Many of us are naturally inquisitive and need to apply our
minds to many different disciplines, which is where we get the art in the
"Art of Computer Programming." The art, by Knuth's definition, is the
application of many different disciplines in order to code great
applications. You need to learn a little accounting if you are going to
write Quicken and you need a little expertise in photography and editing if
you are going to write Photoshop. We learn to work with others to build a
great application. We need to be more than just good at writing code to be
great as software developers.
But some of us are tired of all the things that go along
with coding as a part of a job. And some of us go off and start our own
company because we want to code on our own terms. Others move away from
jobs that require coding and become architects, team leads, CTO's and CEO's
and yet we don't call them quitters or complain about their lack of coding
commitment.
The "love it or leave it" attitude helps no one and
labels too many people as not committed enough and opens us to exploitation
by our employers. It confuses the job of the software developer with the
fun of coding. We code because we love to and we work because we have to
pay bills. We are lucky that our work is often on of our favorite things to
do, but we are equally cursed when our work demands too much of us and our
family. Many of us do not lead lives of quiet desperation but many of us
are pulled between the needs of our lives, the requirements of our
employers, the dynamics of the team and the love of coding. The pulling
creates conflict and everything breaks when pulled too far in too many
directions.
This leads me to my final comment: maybe we can just work
for someone else. If the job sucks and our lives are miserable, we can just
work for someone else and maybe find that one great job that is more
aligned with the way we want to live.
Until next time,
Andy Wilson
To
read more of Andy's work, visit his blog.
|