Productivity is one of my pet topics, because it's always dogged me a bit, especially early in my career. I'd pull long days and nights and then realize I only actually worked (as in, typing in code, debugging stuff, and thinking about problems and their solutions) maybe 20% of the time. Upon talking to coworkers, this seemed to be
a part of the expected friction costs incurred working in an office environment. Meetings, shooting the shit with coworkers, lunch, email, and, er,
Eventually working around high-productivity professionals like John Carmack made me realize that if you want to excel, then you have to work hard and focus the whole time.
|
John Carmack Productivity Measurement Tool ca. 1998 |
I remember Carmack talking about productivity measurement. While working he would play a CD, and if he was not being productive, he'd pause the CD player. This meant any time someone came into his office to ask him a question or he checked email he'd pause the CD player. He'd then measure his output for the day by how many times he played the CD (or something like that -- maybe it was how far he got down into his CD stack). I distinctly remember him saying "So if I get up to go to the bathroom, I pause the player".
You know what's pretty hardcore? Thinking that
going to the bathroom is essentially the same as fucking off.
(Sidenote: my memory is hazy on this since it was long ago -- CD PLAYERS yo).
That level of work ethic and focus is rare, particularly with my generation of programmers who were raised with the vile "work smart, not hard" mantra, coupled with the sense that we were somehow significantly brighter than most of our peers. Combine those two notions and add the
Scotty Principle and you get....me.
If my coworkers were grinding through stuff that took them 20 hours, I'd be all "I work
smart, not
hard" with accompanying snarky eye roll, and I'd assume I could bust through an equivalent work load in four hours and still look like a goddamn superhero.
And sometimes I could, so, hey, validation!
And you can skate by like this (God knows I did) for a long time before a couple things eventually rear their heads and bite you in your entitled face.
Productivity Deficit: Your Attitude Writing Checks Your Work Ethic Can't Cash
An overinflated sense of your own abilities creates a constant state of production deficit, because you assume that you can make it up with a burst of brilliance and/or crunch.
But there is no countering surplus to offset the deficit. The only way surpluses show up is when you finish a (presumably) hard task much faster than you anticipated. But instead of banking the surplus (i.e. moving on immediately to your next task), you spend it relaxing and screwing off because, whew, you just earned a small vacation by busting shit out in an hour that you thought would take all day. Hey, what's on Facebook and Twitter right now? Do I have any new mail? No? I wonder if anyone has tweeted something recently since the last time I checked...what about Reddit? Oh, an inspirational/funny/cool YouTube video, it's only eight minutes long, let me watch it now! (Eight minutes later) Sweet...what's up Twitter? Oh man, I have to make a snarky response, but first I have to Google for that XKCD comic that totally makes my point for me...
And before you know it, the day is done, and you're still feeling good because you finished in one hour what should have taken all day, so all good, right?
Trap of the Easy Task
And yeah, it's often all good, but when operating at a slight deficit things can go pear shaped quickly when you accidentally spring the trap of the easy task. Tasks so trivial that they barely register as work. Update an SDK? Hour, tops. Implement this feature that I've already done on every other platform? Hour, tops. This is all mindless grunt work that anyone could do, it's just clicking through dialog boxes, maybe changing a few lines of source, rebuilding, whatever.
In other words, an easy task like this is so easy that it's a constant time cost for everyone irrespective of ability, so there's no opportunity nor need for crazy overestimation since what could possibly go wrong?
Well, as with so many things, it's the unexpected things that screw you the hardest. The things that should be trivial end up taking days because, shit, that SDK install required a new compiler install, and the new compiler install failed and I can't uninstall it, and now I have to fucking WIPE MY WHOLE GODDAMN HARD DRIVE TO RECOVER. Or you need to implement something that was trivial on nine other platforms, and it should be 30 minutes on platform number ten, except it lacks a base feature that is present on everything else, the compiler is dying with an "Internal compiler failure 2033", the API call you need to use hangs the dev console immediately and, oh, the dev support site you use to get release notes is totally down for the foreseeable future.
So what should have taken less than an hour took a week.
It's like having a perfect monetary budget that assumes no crazy "one time" only bills, except life is full of crazy one time only bills and the only way you can keep those under control is by giving yourself a budgetary capacitor to dampen the fluctuations.
And now you're defensive about losing a week to something stupid because you budgeted an hour for it and waited until the last second to do it and now the schedule has gone to hell, but it's not your fault, because it could have happened to anyone! But if you had banked your surplus hours before and/or worked at closer to your theoretical peak effectiveness then this type of thing would get absorbed in the wash.
And now you live in a state of mild panic because you're way smarter than all this but you're never actually getting things done on time.
Identity Recalibration Crisis
Which leads to a potential identity recalibration crisis upon landing at a company with high performers that work hard
and smart. And that will happen if you're good. Now you're no longer at the top of the curve. In fact, shit, you're in the middle or
bottom of the curve, a situation your brain probably never considered as an option.
|
This dude was my wake up call with respect to my
over inflated sense of skill |
I went through this when I went to id software. I had rationalized that John Carmack's success was just a factor of timing and luck since, hell, he was my age, and I was pretty smart, so what else could it be? Upon my arrival I had a crash course in humility, because he was
way smarter than me and
way more productive as well.
This took a while to sink in, because until then I was used to believing I was one of the better programmers at a company. And then working with Carmack I realized he was not just a little better, he was
orders of magnitude better. And I couldn't dismiss it with a "But I write a lot of code" hand wave, because he also wrote like 80% of the Quake code base.
Sometimes it takes a while for this to sink in. Sometimes it doesn't sink in at all, and you're let go because you're not very productive compared to your new team of high performers. Sometimes it sinks in, and you panic and get depressed because your self-image has always been that of being the strongest swimmer in the school, and right now you're just trying not to drown, much less keep up with everyone else.
But ideally you shrug off the old counter productive mentality and habits and emerge as another one of the high functioning team members, but that can take a lot of work, particularly if you have to get over years of giving it twenty percent.
Killing the Underachiever
If my pithy advice were little more than "Be more like John Carmack" then I can imagine a lot of readers throwing up their hands and saying "Well, fuck it, I'm a lost cause, because that's not going to happen." But what I can do is relate some of the things that helped me kill off some of my underachieving habits. The point isn't to become a superstar, it's to become better, since that's always the first step.
I don't believe in mechanical solutions ("Turn off the internet", "Listen to music", and stuff like that) because I don't think they address the core issues, which are psychological. Instead I found that I had to do the following.
- Develop self-awareness. It took working with John Carmack and other high productivity programmers and admitting that they were way more productive than me before I really understood how much more productive I could be. In other words, if you don't admit it's something worth improving, then obviously you're not going to search for a solution, and if that's the case, you should go here or here.
- Give a shit. Originally I called this "develop a sense of urgency", but really it's just about caring about getting your work done. It doesn't even matter what you specifically care about! It can be your professional image, your product, your team, your customers, whatever. You just have to care about something that will drive you to getting things done, because if you don't, apathy will occupy that void.
- Minimize uncertainty. In another blog article, Productivity vs. Uncertainty and Apathy, I talk about how poorly defined goals can lead to poor productivity. If it's unclear what you need to get done today, then there's a reasonable chance you won't actually do anything today.
- Commit to getting something done every day. When you show up in the morning have a well defined set of things to finish that day. Stay as late as you have to in order to finish. By committing to finishing that task other distractions will naturally fall by the wayside. For example, I have jiu-jitsu training at 7pm. If I screw off too much during the day, I don't get to train. Also, by committing to a task, you avoid "being busy" instead of "getting work done", they're not the same thing.
- Never say "I'll finish it up tomorrow" or "I'll make up for it by coming in early/staying late/working the weekend". This is an easy trap to get into, where you keep incurring time debt until at some point you realize you're now three weeks behind on a task that should have taken two days. This is like racking up credit card bills assuming you can pay them off later. Which is fine, until "later" arrives and you've only accumulated more debt.
- Do not overpromise to make up for poor productivity. There's a tendency when we're falling behind to try to overcompensate with future promises. "When I'm done, it'll be AWESOME" or "I know I'm late, but I'm positive I'll be done by Monday". By doing those things we just build more debt we can't pay off, and that will eventually lead to a catastrophic melt down when the super final absolutely last deadline date shows up. Just get shit done, don't talk about how you're going to get shit done.
- Have an objective productivity metric. This is a mechanical thing, but it acts as a reasonable backstop. If you have changelogs you can reference, then it's easy to sit down on Friday and ask yourself "What have I done this week?" And if you know that it's possible for others to check on you, then it makes you take each day a lot more seriously. If you judge your value solely on output, not subjective things like "being smart", you will be more productive.
- Accept that "the grind" is part of the job. A friend of mine's father has a great quote: "Son, i don't wake up every day and go to a place called fun. I wake up and go to a place called work" You can't get irate or frustrated that the bulk of the day is typing in boring code and dealing with bugs and other people.
I still screw off during the day. I am not a code grinding automaton. I read Facebook, chat with others, Tweet, shop on Amazon, get coffee, read forums, write blog posts like this one and I'm totally fine with that.
Because I know I'm committed to getting things done as well. So even though I'm writing this right now at 3pm, if I have to work until 8pm to get my shit done and checked in, I'll do that, so that tomorrow is a fresh start, not a day of "Oh goddamit, let's try again to finish that task I started a week ago."
Once I developed that sense of daily urgency my productivity went up considerably. And if I'm really productive in the morning and afternoon and feel like I can go home at 4pm with a clean conscience, I do that too, so I don't burn out.
It's a push/pull between banking surplus and generating a deficit, just make sure you don't do just one or the other.
Good post!
ReplyDeleteI'm dealing with this recently. Working with a bunch of really smart people is pretty awesome though.
Lol.. love that last image.
ReplyDeleteI find having a totem to help focus (e.g. Carmack's CD player) works well for me. I got a 90 minute sand timer a while back that I can physically reach for and flip over when I feel the urge to check facebook, then promise not to check until it's out. I usually look up and find it's been empty for a while because I was too focused on work to have noticed.
Great article! Good you recognized JC's self-discipline which may sound simple but that doesn't necessarily make it easy. I've written a post about building that discipline and having fun at the same time, it's at http://www.blog.namar0x0309.com/2013/02/the-gamification-of-time/.
ReplyDeleteThanks!
This is such a brilliant take on a syndrome that is often subjected to denial. But in the part where you mention about ways to mend it, I'd also recommend — try and get yourself in a work environment where others are not just as smart or smarter than you are , but also productivity wise on a different plane.
ReplyDeleteSurrounding yourself with high performers can help tremendously, but it can also lead to the identity crisis I mention in the blog post (the identity recalibration).
DeleteThe identity recalibration is really the best thing that can happen to you though, IMO. I work with high performers compared to me and that has pushed me to work faster, make better decisions, focus and generally level up. I think a wide swath of the programming world actively seeks to avoid a situation where the identity recalibration is even possible. The others go through that again and again making them better and beter.
DeleteIt's definitely an ideal situation, but a fraction of people have their identities so threatened by it that they shut down. It's a hard pill to swallow.
DeleteI used to have that same problem, still do to an extent I guess. Ended up fixing it by using the pomodoro technique ... which I've gotten a bit sloppy with lately.
ReplyDeleteSeriously, its like you wrote this post after watching me work. I'd like to commit to being better, but I'm not sure where to start. My main problem, I guess, is that I currently work from home, and while I'm strict about not goofing off I find things can some times take a lot longer to complete that they used to. Maybe I'm just getting old. But I find it frustrating that I'm not as productive as I know I can be.
ReplyDeleteA take on a old subject, now with John Carmack! I particularly like the "Give a shit" part and I'd like to see that bit expanded. How do you exactly give a damn sometimes, specially when you admit that sometimes you just have to grind through it? There will be at points you really don't feel like caring about what you're doing and how it's going to affect you, but you should so what are the mentality tricks that help us care?
ReplyDeleteThis is a very hard question, because in the absence of passion you will have to rely on discipline and work ethic, and relying on those will lead to extreme burnout (and dissatisfaction). So ideally you find something to care about, which means maybe your product, your team, your professional image, your company, pride, intellectual curiousity, etc. It's different for everyone.
DeleteFor example, working on a game's resource loader. That's not fun for a lot of people, but some people might like the technical challenge, others grind through it because it's key to a game's engine, others work through it because they want to ship, or they don't want to lead the content guys down, etc. Everyone has to find their own reasons to push ahead.
If you can't, that's a problem, and really I'm not sure there's a great solution.
This is not a permanent solution, but if you have one thing or a set of things in particular that you are having trouble finding motivation for, you should consider http://www.stickk.com/. I discovered it via Tim Ferriss's 4-hour Chef. Basically, you choose a non-trivial amount of money and put it in escrow, and if you don't achieve your goal it gets sent to an organization you hate (pro-life/pro-choice groups, politicians you don't like, etc.)
DeletePassion is key, John Carmack certainly didn't work so much without passion. When this passion is fading, maybe it's just time for a break, maybe it's time to work on other things. Passion is so strong that it can be dangerous, it can make you ignore fatigue, make you work all night, but nothing can beat the productivity of a passionate person.
DeleteI tried this method of "committing to do a specific task in the day".
ReplyDeleteThis could make me stay at work quite long, such as 22h30pm or more.
But that's not the only issue : as a logical consequence, i found my productivity of the following day to be way way below normal. Which made me wonder : is that a net benefit in the end ?
The question isn't "is there a net benefit", the question should be "Why is it taking me until 22h30pm to complete this task". It could be time estimation being off, distractions, or just poor productivity with no reason to go home. For me there's a strong impetus to get things done if i say "Once I finish this, I get to do X", where X might be play a video game I've wanted to play, watch a show I'm eager to watch, go do some hobby, etc. If you don't have something better to do than work, then that's an issue in and of itself.
DeleteAwesome post! I've been working from home for the past 4 years and I'm finding my productivity has been waning over the past 6 months. Next month I begin my lease in shared office space hoping that working among other professionals will get me back up to mark.
ReplyDeleteThis is the right post at the right time for me. I'm glad I came across it, and it's comforting to know that I am not alone.
ReplyDeleteI remember all of the activity on your .plan file at id (which I absolutely loved reading and often wrote email responses back and forth with you on various topics) and I'd think, "Does that guy ever work?!" Of course it was douchey of me to think that as I did most of the reading/correspondence work from work ;p
ReplyDeleteThis blog is extremely helpful. I've spent most of my career being the defacto subject matter expert at my office and being laid back all the time. I recently joined my own version of idSoftware and I work with a team of Carmacks, and so far, it has scared the shit out of me. But that's been a great thing, because I don't think I've pushed my self-development this hard in my entire life. I'll definitely be reading through this a few times and utilizing the tools.
Glad to see you've still got a square head on your shoulders.
Thanks for this!
ReplyDeleteThis was great. It's something I've already come to learn about myself over the last 15 years or so... However, since it's largely driven by introspection, whenever I try to relate it with others, they often see it as a self-esteem issue and feel the need to encourage me by refuting my explanation (good intentions, but frustrating, to say the least).
ReplyDeleteAs has been said, it's validating to know that I'm not alone. This post is also an encouraging light for moving forward. Thanks!
I've been using a fairly simple time-boxing approach recently. I work without any distraction for 25 minutes. Then take five minutes break. Then plan the next 'box' and deal with 'shit', attend meetings etc. The important this is, as you say, is have a list of specific things you want to work on, with specific objectives you want to achieve. Spending a few minutes in the morning or night before figuring out what you want to achieve is a great way to start improving your productivity.
ReplyDeleteThis is so awesome, and very true as well. I figured out long ago that we all tend to over-inflate how much work we actually do in a day, usually without even realizing it. I never realized Carmack did this, but I gauge my work the exact same way---I have a 27-hour (approximately) playlist of video game music that I listen to every day while doing level design work. If I go to FB, check e-mail, eat, go to the bathroom, or chat in IRC for more than a minute, I pause it. At the end of the day, I measure how far I progressed through the playlist, and I have a pretty exact idea of how much work I did.
ReplyDeleteGreat post - early in my career I would procrastinate and then pull heroics of fat the last minute and 9/10 it went flawlessly. Developing self discipline though and being able to focus and work hard whenever I work made a huge difference.
ReplyDeleteLove the tips!
I came to your blog from the ProfHacker article by Jason B. Jones. Your blog was insightful and contained several points that gave me pause. However, your writing would be so much richer if you could clean up your language. I am a 57-year-old graphic designer/part-time professor that gained much from your insights, but at times it was difficult to stomach the casual use of inappropriate language. I encourage you to rethink your blogging language as you continue to reach a broader audience. Thanks for a thought-provoking article.
ReplyDeleteSeriously great post. I was ready to throw my hands in the air exactly as you described if this was just going to boil down to "Be John Carmack", but the advice you gave is incredibly practical. I often find tasks where the solution is obvious but there is just grind it away work to be done can take 10x longer than difficult but interesting issues. I have definitely accrued promised overtime debt as well.
ReplyDeleteSelf Awareness, Giving a Shit are absolutely the two most important factors in becoming better at your craft and producing better work.
I might also add that you can be more effective by bouncing ideas off fellow workers to see if you are walking into a trap before you get there. Especially working around people you do very smart and productive, get their feedback and talk to them about your approach to solving a problem and concerns you have. They can often bring up issues you would run into later that would require redoing or changing work you already did. Simply not being afraid of looking like you don't already have all the answers has done wonders for me. You are doing no one a favor by burning time on a problem someone 20ft from you might already know the answer to.
Great post, resonates with a lot of information I personally soaked recently about "Critical Chain" project management described in a book bearing the same name from Eliyahu M. Goldratt. Biggest problem thinking about a specific task and getting it done much faster than it should have been, is that in the overall project that lost time is ... lost. Making the developers look a the whole project and its completion, but still keeping it broken down to small tasks instead of one huge monolithic impossible task - this makes it easier to focus on the big picture. You can google explanations about "Fever Chart" to see what I mean, the buffer is project-wide and engineers involved in making it work worry about the whole project and not their particular task for the day - making it much more apparent what need to be done next.
ReplyDeleteGreat article, and one I relate to as well. I've often wondered how much more in life I could accomplish if I could stay in the 'zone' more. I've found that avoiding distractions and bad mental habits helps a lot. I'm going to print out your list and put it next to my desk (so I can read it and think about productivity instead of being productive :)
ReplyDeleteBy the way it was great to meet you in person at I/ITSEC last year!
Great post, but I found one big thing that's missing. Why do you think your brain wants to slack off, to read Facebook or Twitter, and you have to force it to be self-aware and take shit? There are numerous serious scientific researches about brain performance, loosing concentration and regaining it. And they all consider tiredness.
ReplyDeleteSome researchers even compare brain with a muscle. If you over-push it, it will become tired. If you train it, it will stay fresh longer. And it's all explainable by neuro-chemistry: available nutrients, hormones, etc. None of the researchers say that you could train your brain to become as productive Euler, all agree that's a combination of your training and your abilities.
So why don't you speak about burn-outs? I've gone through them multiple times and had to accept that my slacks off for a reason. I find it's very easy to stay at office till 22:30 if the task is interesting, but it's hard to force myself go home and forget about the interesting task, because I know by experience that if I do that for a week, I'd get burn-out which would burn not only my productivity, but also serotonin and some of my general health.
I could do heavy brain work for tens of hours without burn-outs until somewhere around 21. Now I have to accept I'm not Euler, and try to do best of what I can with what I have (e.g. doing exercises helps, good sleep schedule and all the common things that are scientifically proven). I'm very glad you don't experience tiredness and stress, and heartily wish you'll never will.
Thank you very much for this article. I'm dealing with this as well, partly because I returned to university, which has considerably more "grind" which makes me procrastinate considerably more on stuff that I don't (instinctively) want to work on. I definitely feel this feeling of falling behind and not being up to 100% of what I could be, and looking at people like Carmack makes me feel like people have figured it out so I can figure it out. Thanks for this.
ReplyDeleteFantastic. I've been a consultant for 20 years, charging a way-high hourly rate but cranking out solutions so well that they keep paying it, due to many of the standards you have put down. Hanging out with the corporate employee coders shows a profound lack of everything you posted about.
ReplyDeleteHAHA your last image. Likes.
ReplyDeleteGreat blog. Inspirational to me, very resonant.
ReplyDeletegreat post, it's great to mention non-mechanical solutions.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDelete