A good friend relayed a story about an intellectual arms race he once had with a co-worker. He said something along the lines of “you could be right about something, but then he had to be more right”
Programmers tend to get caught up in this mentality. We pride ourselves on our learning, our problem solving skills, and a keen intellectual ability. Even though we don’t make ourselves out to be as blatantly competitive as people who tend towards team sports, we are. When left unchecked it can drive us down a dark road, away from our project goals, team goals, personal goals and life goals. It’s easy to get caught in the semantics of doing things right. Doing things right is great: it prevents things from breaking, it prevents frustration later on down the line. But we are engaged in an endless pursuit of perfection, and it can become all consuming.
Like any other art form (yeah, that’s right), you can become so obsessed with perfection that it derails you from accomplishment. Coding for money is the fine line between doing things the right way, they way we know they should be done for so many reasons, and doing things the way they need to be done so that we can deliver something people will use / pay money to have. You too, can allow your current project to become the Chinese Democracy of development.
Doing things right is an incredible feeling. Absolutely. So is actually getting things done. Sometimes at work, I verbalize the ‘getting things done’ part because more often because I know what it is like to allow projects, whether code, music, or literature related, to drag on too long due to endless tweaking. It’s can actually be quite awful if left unchecked, and can ruin the entire experience of making something.