I finished this gigantic project at work, or at least the first release
of it, and by the end of the whole thing I was well beyond burned out on
programming. Staring at code all day was killing me, especially that
particular set of code. And, trust me, if one more person stopped by to
“see if I needed anything” (which, for those in the cheap seats,
translates to, “hey, let me interrupt what little concentration you have
left for no reason”), I was going to kill them.
I was becoming a little antisocial.
Since then I’ve had a few days of lighter work to recouperate a little
and during that time I started a little programming project of my own to
do some add-in functionality to Visual Studio .NET
2003. (If you don’t do Microsoft
programming, that won’t help you… but for those who spend their whole
day in Visual Studio, the stuff I’m working on could speed things up
quite a bit. At least, it will for me.) I’m doing some cool automation
stuff to speed up some routine tasks.
The thing about this project is that I want to work on it. I want to
make it happen. I like the idea and it drives me. And why does that
matter? Because it’s been so long since I’ve had any actual desire to
work on a program that I’ve forgotten what that’s like.
I’m curious why that is. Not that I would classify myself as one of
those die-hard programmers or anything - programming is a job, not a
lifestyle, and that is an active choice on my part - but I can get
excited about some programming projects and be burned out before I even
start on others. Could be a couple of things.
I think that deadlines stress me out. I mean, deadlines are important
on a project because if you didn’t have a target date, you’d never
finish anything. But the way deadlines are set in most projects is sort
of like instilling the Fear of God in you - you must finish or fire and
brimstone will rain down upon you, the sea will turn to blood and frogs
will fall from the sky. I’m a motivated individual. I work as hard as I
can on a project - sometimes ending up with overwork and health issues
from it, which I would like to think is only partially my own fault -
and I don’t need additional stress from the project owners on the
deadline. You don’t have to tell me how far behind we are because I
already know. Most likely, I’m the bottleneck (because most likely I’m
also the only developer on the team, too). Just get out of my face
already, I’m doing the best I can. If you want the project done super
fast (which usually implies a lack of quality; something has to suffer
to achieve the superhuman speed required), call someone else. If you
want it done right, come talk to me.
I think I have communication problems. I work very well on an
event-based communication system: if something changes, I’ll let you
know; if I need something, I’ll let you know. Just be available to
receive that communication and respond when it comes in if it warrants
response. Project sponsors, managers, and leaders don’t like that. They
want a constant status update. “What’s your status? I need your status!
What are you working on? How far along are you? When’s it going to be
finished?” Look, man, fuck off. I appreciate that you have a desire to
have some sort of magic progress bar on my forehead that you can glance
at and update your metrics, but I don’t work like that. If I spend all
day updating you on my status, there ain’t no work gonna get done. The
event-based model works well because it doesn’t take development time
for meetings, it doesn’t break your concentration with micro-pings all
day long, and it doesn’t serve as a constant reminder that you’re under
an unreasonable deadline. You might not get the granular status you want
(“Okay, so an hour ago you were 16% done and now you’re 17% done?
Excellent!”), but when actual milestones occur, you’ll know (“Halfway
done? Cool.” “Done? Great! On to the next task!”). I should probably
learn to work under the constant micro-ping (micro-managing?) model, but
I think that would definitely detract from my efficiency.
I have some sort of attention deficit. I can’t work on the same project
40+ hours a week for months on end because I stop caring about the
outcome. It becomes less of a project and more of a death march. I need
to be able to change things up, do something new and different, or it
just gets plain boring. And once the boredom sets in, all is lost.
I like to feel like the product I’m working on is interesting. Working
on a document replication service to copy selected files from one place
to another might be great for the company and super for the person who’s
time I’m saving, but aside from that, it’s a tedious exercise of writing
a program that doesn’t really do anything interesting. The project I
just finished started out interesting, but I think the deadline and
status/communication issues started stomping on the interesting portion
of things and it just became a grind. With this Visual Studio automation
project, it’s interesting. I’m doing stuff I haven’t done before; I’m
learning things about how not only Visual Studio works but how Windows
works, too; and I’m seeing that I can actually benefit personally by the
outcome (not monetarily, but productivity-wise). It’s cool, and I feel
good about it. (Doesn’t hurt that there’s no deadline and no project
management on it, either.)
I can hear my boss now: “You can’t always
do what you want; sometimes you have to do the stuff you don’t like in
the job.” Yeah, yeah, yeah. If that’s you, too, then you’ve missed the
point entirely. The point is that there are reasons the crappy stuff in
your job is crappy, and if one or two of the issues could be alleviated,
then maybe the crappy stuff could be less crappy, and maybe the person
doing the job would be a happier camper. (Which is not to say I’m
unhappy; I’m speaking in a more general sense.) Plus, this is venting.
When someone vents, they don’t want to hear devil’s-fucking-advocate,
they just want to vent.
Long story short: I’m unburning from the last project… let’s see how
long that can last before they say, “Hey, what are you doing out here?
Back into the fire, asshole!”