In a given week I am working on over 10 different programming projects. Frankly, it’s a little surprising to me how I can spend so much time focusing on one craft. But going from project to project does help clear the mind, as every project has its different functional and technical hurdles.
I thought back to a quote I read by Isaac Asimov, and how he kept to be so prolific throughout his life:
Frequently, when I am at work on a science-fiction novel (the hardest to do of all the different things I write), I find myself heartily sick of it and unable to write another word. But I don’t let that drive me crazy. I don’t stare at blank sheets of paper… Instead, I simply leave the novel and go on to any of the dozen other projects that are on tap. I write an editorial, or an essay, or a short story, or work on one of my nonfiction books.
I love this quote because it shows how just a slight change of scenery can reinvigorate the creative process. If I get tired of a particular project, simply switching to some other project gets me reinvigorated. Programming is much like writing – while most non-tech folks may not think of it as creative, it actually takes a lot of various forms of thought to craft software. Not to mention a particular project may involve thinking and writing in several languages (for example SQL to talk to the database, c# to do a lot of the logic, HTML to craft the look of the page, JavaScript and JavaScript libraries to make the page respond to actions).
Lately, I have started on a new personal programming project outside of the various sites I maintain. I had an itch to try some new techniques and technologies, and I have not given myself a deadline for this. I do have to limit myself to no more than 4 hours a week, so as to not neglect everything else I have going on. But perhaps the most interesting thing about this project is I am coding without a design. I kind of know what I want to build, and I start coding and see where the data structures and logic get me to. Its a really interesting way to build software (though I would not recommend it for business software development..). One nice byproduct of this technique is the objects I create are very adaptable and simple – as I know at any point I may switch directions and need to pivot a method to do something else. This has given my some ideas on development that I may be able to apply to my other projects, as every software application can benefit from being more adaptable.
So whether writing, coding or doing anything creative, my recommendation is to have multiple projects going at once, and set reasonable deadlines for yourself. You never know, you might be the next Isaac Asimov of coding.