Today I discovered a mantra that I hope will get me through my last four days in this place. And I wrote it on my dry-erase board.
If you recall, I quit my job and struck out on my own. But I still have a few more days before my last. Four days, to be more precise. You see, the thing is, I had already prepared a smooth exit even before I gave notice. So everything’s all set for me to go. Except now they’ve got me hacking a new feature into another impossibly low-quality module. I’m somewhere inbetween demoralized and just plain exhausted.
Alistair Cooke said, “A professional is someone who can do his best work when he doesn’t feel like it.” This quote is sometimes used by the more pointy-haired to brow-beat their underlings into a sense of pride. And that’s complete B.S. Each of us, professional or otherwise, does his best work when he’s engaged and happy. A professional is someone who can do a competent job when he’s disengaged or unhappy. But he’s not going to do his best work.
(Note: My manager is not quoting me Alistair Cooke. But bear with me.)
Ever since I started here, I’ve billed myself as the guy who can help them improve their codebase. I know how to turn it around, change it from a time-wasting, bug-ridden disaster into an architecturally sound, maintainable work of art. And I still sell myself as the good-code guy.
But I ran out of energy a long time ago. I’m tired of being the only one on the team who is actively improving the codebase. Fixing this system is a gargantuan task, one I can’t do on my own. I mean really: I physically and mentally can’t do it on my own.
What makes me good at what I do is that I’m both innately artistic and fundamentally lazy. On the lazy side, something deep inside me can’t stand to waste hours wrestling with problems we ourselves keep causing. But more than that, it physically pains me to churn out ugly code. I intuitively know high-quality code from almost 20 years of programming. And what I’ve got here goes against my nature. It’s frustrating and stressful. It makes me angry, and it gives me headaches. Literally. I have to pop a few ibuprofin.
This is an unhealthy situation. But they said the bad design was the product of contractors who are no longer with the company. And they said they wanted to redesign the system. I can help with that, whether it’s a rewrite from scratch or whether it’s a systematic refactoring. But what actually happened was I led cheers for improving the design and the process. Meanwhile, everyone else went on doing what they always had.
I discovered a great truth. A capable team will make great software with very little help. A mediocre team will make poor software, no matter what you do.
I’m still willing to do contract work here, but on my terms. In particular, what I’m working on now is not a feature I would have contracted to deliver under these conditions, because the code is impossible. I don’t understand how this code works, or even what it does. I talked to the guy who wrote the module. I walked over to his cubicle and asked him, and he doesn’t understand it, either. There is no way I could possibly deliver any new features against this module without first refactoring it or rewriting it. And that will take a long time and involve a lot of risk. As a consultant, I would refuse this job under these conditions.
I actually considered refusing, even as an employee. Why should the two be any different? The worst they could do is to fire me, ask me to go home 4 days early. That can’t be as bad as losing my temper and wanting to put my fist through the computer monitor. Or feeling like I’m going to cry, for all the grief this mess is causing me. Or going home every day with a headache and taking a nap to avoid snapping at my wife and kids.
But I think I’ve discovered a mantra that can get me through. I drew it on my dry-erase board. I wrote “4 days left,” and under that “IDCAM,” which stands for “I Don’t Care Any-More.”
I don’t care whether the code I leave is maintainable. The code I’m hacking on reads like the result of a chemical-factory explosion. (It’s a mess.) I can’t stand messy, unmaintainable code. It’s a waste of time, and it frustrates me. Except today, I’m not going to fix it. I won’t make it any messier. But I’m not going to clean it up. I just don’t care anymore.
I don’t care that the manager jokes that he came in early to make sure K. was at work on time. K. works an earlier schedule than the rest of us. She laughed. She and the manager are pals, and she knows he’s just joking. The manager actually came in for a customer meeting. It had nothing to do with K. That doesn’t make it funny to the rest of us. But I don’t care anymore.
I don’t care that the one thing I thought I made progress on is completely wrong. It’s wrong because I needed to enter the data in two completely separate places. One is a configuration file. The other is hard-coded in the software. If these two don’t match, the software will silently behave in strange ways, and you won’t find out about it until you try to use the software’s higher functions. Yes, that’s a fundamental design problem. There’s no good reason for having the same information entered in two places, and it’s not documented, and it would take me 10 minutes to fix it. And no, I’m not going to fix it, just as no one else who’s ever worked on this part of the system has ever fixed it. I’m not going to be the one to take the initiative, because I don’t care anymore.
I don’t care that I’m wasting the company’s resources. There are other developers here who have proven they can hack with code they don’t understand and sign off on it. I can’t do that. That’s why I usually deliver what I say I will, when I say I’ll deliver it, and it actually works. There may be other things I could help with that would utilize my strengths, and everyone could be happy. But in order to get there, I’d need to sell my manager on it, because it is his responsibility, one way or the other. And that’s just too much work, and for the sake of a few days, I just don’t care anymore.
I don’t care whether I accomplish anything. Because that would require that I take the initiative and take the leadership role. And it would require an emotional investment. And that would stress me out. I know, becoming emotionally invested in my work is my natural tendency. It even gets me into trouble sometimes. And I’m willing to live with that, because it’s also what makes me a professional. Except that today, this would turn me into a basket case. So instead, I simply take a deep breath and chant my new mantra. “Just four more days. That’s all. I can make it. IDCAM: I don’t care anymore.”
But what concerns me is professionalism. Is it okay for a professional not to care? Maybe. Because I didn’t promise to care. All I promised to do was to stay for 4 more days. And in my weekly status, I even told my manager that it was unlikely I’d work all the bugs out of the stuff he left me with.
I wonder what he’s thinking about this. Does he realize how dissatisfied I am with the task he gave me? Does he know I’m just wasting the company’s money? Sitting here, bashing my head against the cubicle wall. Is he disappointed in me? Does he want better “performance” out of my last four days of hell? I could ask him. But that would require that I take the initiative (again) to open up the lines of communication between us. And I just don’t care anymore.