How many times have you heard someone say—or maybe you’ve even said it yourself— “Yeah, it’s a hack. But we don’t have time to do it right.” Frankly, this one goes in the same category as popular rubbish like:
- “We don’t have time to write unit tests.”
- “We’re not paid to read technical journals and surf the web.”
- “I’m too busy to exercise.”
The problem is that we have a process addiction. I like the way Tom DeMarco described addiction in a talk he gave at the Boston SPIN. We usually think addiction is about doing something that’s bad for you but that makes you feel good. It is, but that’s an oversimplification.
Lets look at unit tests, for example. When you’re under the gun, who has time to write tests? Yes, automated tests are good. But when a month’s worth of new software needs to ship next week, we save time by skipping the tests, right?
Wrong! Yes, it is faster to code without tests… unless you care whether the software actually works. If you do care that it actually works, it’s much slower to debug masses of untested code, and faster to unit test. But we have this lie in our heads. We believe that coding without tests is faster. And don’t blame management. It’s easy to blame management for not having a clue, but we developers buy into the lies more than they do.
We have a desperate need. We are in pain. There is something that will relieve our pain, will meet our need. Just bang out the code as fast as you can, and pick up the pieces later. We know it’s bad for us, but we believe it will help us. And in the short term, it actually does seem to help. We do “write” the code. That is, we write software the same way a million monkeys write Shakespeare. But it is code, and we can tell management it’s “done.” And this bolsters our belief that skipping unit tests has gotten us out of our crisis.
But in the long term, it hurts us. And in this case, “long term” means two weeks. We can tell management we’ve done a month’s worth of work in only a week. But the software is not going to ship. It’ll be delayed for another two months while we sift through all the bugs and the interactions between bugs in thousands of lines of code. And during those months we’re going to be increasingly under the gun, and so we’ll take even more so-called short cuts. So make that three months. And since we’re working overtime and aren’t sleeping right and aren’t taking care of ourselves, we’ll make even more mistakes, and we’ll have to debug those, too. So make that four months.
So, one month versus four. Which is faster?
Similarly, you are paid for keeping up on the latest developments, and that means reading technical journals and blogs. This may not be an urgent activity, but it’s important, and it needs to get done.
And exercise! When developers go into crisis mode, they start skipping their afternoon walks and naps. That’s not just bad for you; it’s bad for your crisis, too. When you’re in a crisis, that’s exactly the time you need your mind about you. That’s the time you need to be well rested and in top shape. A healthy body means a healthy mind. When you’re in a crisis, that’s when you’re too busy not to exercise.
A process addiction unfortunately is systemic. And breaking it is hard. But as they say, the first step is to admit that you have a problem.