Whenever I’m working on a new project, there is only one requirement I need to keep me motivated. As astoundingly simple as it sounds, I simply want the opportunity to build something well.
It doesn’t matter what I’m building. It could be a one page website, a search engine, an online rolodex, an interactive map, or a game. It could be used by millions or thousands or eight people. It could be a 6-month build or a 2-hour exercise. I could be mostly writing markup, working on UI, writing server-side code, or building a database. These things aren’t motivational dealbreakers or sure-things. What overarchingly decides whether or not I’m really gung-ho about it is knowing that I can build something well.
Great projects have distinct goals. Great projects have all the pieces either in place, or a plan to get them in place. Great projects are as ambitious as they are thought through. Great projects have a defined time to deliver.
These kinds of projects give my work a purpose. They give me the opportunity to build something well.
So, what projects make building something well harder to do? Projects that aren’t well-defined. Projects that are missing pieces. Projects mired with great ambition but devoid of forethought. Projects that have little, or even worse, a false sense of urgency.
I can look at the hundreds of programming projects I’ve worked on in the first dozen years of my programming career. All the great ones had those motivating qualities. All the poor ones didn’t.