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.
-TimK
Congratulations!
My last job before leaving cubicle nation was with an off-site software development company. I got tired of the lip service given to improving our processes. I took Pamela’s advice and on August 25th, hung out my own shingle.
I’ve been doing onsite consulting as a subcontractor… been the best 2 months of my life.
Poor Tim
It’s exhausting trying to innovate and improve when nobody is listening. What I’ve found being effective is, first, to make sure they understand they have *time* to listen, and second, heh, the patience to repeat, demonstrate on the own example, explain again and again and try things together.
Though all of these things require at least some level of the management support..
Thanks, Uhri, for the encouragement.
I agree, Artem. And I’ve been in situations where no one wanted to listen. You definitely shouldn’t waste your energy in such situations. Still, sometimes it’s more difficult than I thought it would be to tell whether someone is actually listening. Sometimes management buys in… Or they want to buy in. So you have management’s support. You may even get approval and priority for specific projects. After you have someone’s support, that’s when you get to spend years trying to get them to change their habits. And in this situation, there’s a fine line between being an examplar and an enabler. And I guess sometimes you have to try for a few months or a year before you can tell for sure how much fruit your efforts are going to bring.
-TimK
Followed a link to this blog from Escape-From-Cubicle-Nation. Great blog. So is TODAY your last day!! It is!! Congratulations!! Pat yourself on the back for having the courage to step out the door.
I left a software job at a BIG company to work for a startup. That startup fell flat about a eyar later and after several other career shifts, I am actually back at the same big company. BUT….. I am NOT sorry I left and I got a lot out of leaving, including the ability to leave again. I got a customer and business perspective from getting out of the cubicle that I will never forget and that frankly I find almost none of my cubemates have.
But this is supposed to be about you. Yes, you might fail. You certainly will have some failures. But that’s okay. You’ve thought a lot about this and you’ll have successes too! You don’t have to be perfect and you don’t have to start a wildly successful business in order for you to have made the right decision. I think so many of us get hung up with “what if I make a mistake. Or what if I fail.” So what? Everyone fails sometimes. If you never fail, you probably aren’t doing much. To do something great, you have to risk a few mistakes along the way.
Please, keep us posted!
Tim – great story, great blog, and *very* transparent! Congrats on the move – things will work out. I got laid off 3 weeks after Christmas and this last 10 months has been, well, incredible. Keep on blogging about it – it is inspiring to read.
Tim,
I went through the same… When you describe it I almost feel it again… Code quality, good design, etc. is very important to me.
Few months ago I quit my job and started contracting. It is not as good feeling as when you start your own business, but I must say it changed my apporoach completely.
Before, I cared, I burned myself, I was bashing the cubicle wall as you describe it…
But now when they don’t listen I just charge them… 🙂 And wait for my holidays 🙂 And then look for a better next team.
Recently I have done an experiment – I was working only one hour a day, and spent the rest of the day learning new stuff, reading blogs and preparing for next “challanging” assignment. Guess what, even if they realized I am not working they dont do anything about it as office culture doesn’t allow it. You can use the same strategy as they use, don’t listen, do what you want – check Dilbert.
…you think I am demoralized… you are right – I never wanted to behave like that…
I am also counting days to the end of my contract…
Hi, Jason. Thanks for the support.
Jack, that’s some experiment! My problem, as it were, is that this approach tends to stress me out as much as just hammering through whatever nonsense my boss is wasting me on.
That said, I’ve always made it a policy to keep up-to-date on new things. That means I spend some time every day reading and learning. And if it comes out of my “8 hours,” so be it. (As if I ever worked as an employee where engineers were truly expected to be in the office only 8 hours in a day.) The consulting gig I currently have is off-site. I bill only for the time I actually spend working on the client’s problems. I actually like it that way. It means I can spend as much or as little time reading as I need.