I’m not amused when people tell me that “programming is an art and I need the creative juice to flow” and then complain about deadlines. It’s not quite an art, it’s a craft.

Unfortunately, deadlines come with all professional jobs. Programming has to endure the disciplines of sound engineering principles, not the ambiguity of art. Programmers are paid to solve problems, not feel the problem.

There are problems which are complex and takes dedicated analysis and design time. There are challenges which require a few iterations of designs and proofs of concepts to get find the right approach. These challenges must be approached with an engineering mindset. By understanding the problem, proposing potential solutions and estimating the time it will take to build the solution. Not many projects out there offer you the luxury of building the next software equivalent of the Sagrada Familia cathedral.

You can have a pet project on the side that you are funding it by yourself. In that scenario, you can take as much time as you like to massage the code to your individual perfection.

“It’s ready when it’s ready” is a battle cry for amateurs.