Turn off the autopilot and take control. Constantly critique and appraise your work.
Former head of IBM Thomas J. Watson was frustrated. He was expecting ideas from his sales managers on how to improve the business, but none of them could deliver. Annoyed by this lack of ingenuity, he took the word and said:
"The trouble with every one of us is that we don’t think enough. Knowledge is the result of thought, and thought is the keynote of success in this business or any business. We don't get paid for working with our feet - we get paid for working with our heads".
There and then, he decided on the company's slogan, THINK!, which is still linked to the company. Think as the basis for what turned out to be a very successful business. You can read more about the origin of IBM's THINK! on their website.
It's important to think about what you're doing, while you're doing it. And, also before you're doing it. A few years ago, I wrote an article about how taking the time to plan will save you time in the end. The moral of that story is that it pays off to think about what you want to do, before you do it. It's unnecessary to plan out all details and every edge case upfront. Just a small plan is enough to eliminate obvious dead-end paths.
Taking time upfront requires a time investment. From the viewpoint of a software developer, it's the difference between immediately starting to code and having a kick-off meeting with your team. In other words, it's the difference between short-term, temporary success and long-term, continuous improvement. It's quick money versus a stable, healthy business. And in the end, it's up to you which road you want to travel.
This post is part of a series about the Pragmatic Programmer.