Not too long ago I was working on an unfamiliar project, with a technology stack I didn’t really know. I had a short deadline, and (what I thought was) a pretty short assignment. Turns out it wasn’t. Every time I thought I was done the requirements shifted slightly and every time I thought I had solved the last bug a new one appeared.
Because I was pressed for time, I did two things:
- I cut corners. I didn’t refactor things I should have and I should have tested things I didn’t. I didn’t feel like I had time to do those things — but I also didn’t always know exactly how. This leads to my next point:
- I neglected to learn the things I needed. I felt like I couldn’t justify the time spent to learn how to do X properly, when I didn’t have very much time to do X in the first place.
In another world where the task had been as small as we thought, these could have been the right decisions.
However as soon as the task became just a little bigger than we thought, neglecting to learn my tools properly made me much less effective. I traded a short-term benefit for a long-term loss.
I’m not saying you should always spend the time to learn how to do everything properly. But if you’re always in a hurry, and you never get the time to slow down, you might have an issue. Likewise, if you have a short deadline for something and you decide that it’s not worth the time, but then the deadline shifts — it’s time to re-evaluate. A deadline and scope that shifts once, will probably shift again.