It’s really, really easy to be lazy. If you’re primed to be lazy – and I think most programmers are – then all you need is a little push in the right direction. Or the wrong direction. If you can find any excuse to take the easy way out, you probably will.
What they found, in short, is that the worst team member is the best predictor of how any team performs. It doesn’t seem to matter how great the best member is, or what the average member of the group is like. It all comes down to what your worst team member is like. The teams with the worst person performed the poorest.
The trick must be to find ways to neutralize those excuses, perhaps by having an awesome team, or an awesome leader. If you take every excuse to get things out of your way, you’re probably not getting anything out of your way.
If you want to do great work, focus on one thing at a time. Finish it and move on to the next thing. It means some things aren’t going to get done as fast as some people may want. It means some people aren’t going to get your full attention for a while. But doing a bunch of crappy work, or making a bunch of poorly considered decisions just to get through the pile isn’t worth it.
Just like in investing, your overall result is the sum of many small decisions. Each decision may seem to matter very little, but overall, every decision actually matters quite a lot. Success comes from making the best possible choice at every decision-making opportunity.
There’s really no such thing as a big decision. Any seemingly big decision can be broken down into a set of smaller decisions, and each of those broken down into even smaller decisions. So, it doesn’t make much sense to focus on trying to make big decisions well when you have the opportunity to make small decisions well.
You get a positive result overall when you focus on making the right choice at every turn. However, this also means that there’s a lot of opportunity to get lazy.
At every single moment, you have the choice to be disciplined or be lazy. If you have any semblance of the results of your decisions, then bad choices have the effect of discouraging strong, disciplined action in the future. Poker players call it tilt, but it applies in any situation requiring continued discipline: sports, investing, and software development. Jeff Atwood put it nicely:
All the code we write is broken. Your code. My code. Everyone’s code. Software development isn’t a science; it’s a process of continual refinement.
Think about it. For every line of code you write, you have the opportunity to make it highly readable, as well as relevant and testable. High quality software is the result of a continued focus on high quality code. But every line of code also carries the temptation to just get the work done quickly, whether that temptation is the result of the aforementioned bad apple, business pressures, or code that already sucks.
What you should take out of this is that it’s never too late to start making good decisions. Every choice has to be made anyway; it’s up to you whether to make it a good one.