Kenny's Blog

04 Oct 2014

Programmer's Block

Programmer’s block is similar to http://en.wikipedia.org/wiki/Writer’s_block, where “A writer may run out of inspiration, or be distracted by other events”. In contrast to writer’s block, however, programmer’s block occurs when a developer or engineer has too many ideas and is distracted by attempting to design and implement all of the ideas into his/her design.

The widespread use of the internet has given a large portion of the population access to more information than ever before. Developers and engineers now have free and easy access to more tools, methodologies and techniques than in the past. The free and open source software community is a prime result of this new information wealth.

One downside, however, is that there are now perhaps too many things to choose, and too many things to implement. A common tagline with creative types is this: “there are just not enough hours in the day”. Such types like to create - they like to build, design, test and then repeat the cycle again. A risk comes when there are too many projects to pursue and not enough focus.

Artists suffer from the same thing - a piece of artwork is never done, just abandoned.

Developers get stuck at the design phase for this very reason. “Why don’t we design this right, so we won’t have to make all of those changes and fixes later on?” Implementing good starting design to ensure that you have a better time later on is great, but it really doesn’t help if you don’t get started at all.

Now I’m not saying that this is a huge issue for senior developers and professionals - this may be more of an issue for junior developers and engineers who may also be students. For someone inexperienced, it can be a daunting task to know where to start, especially if you’ve been thrown on a project that hasn’t been built up yet. So, to help get past programmer’s block, here are some helpful tips:

  1. Recognize that you’re stuck in a rut; it is essential to do this to start reducing stress
  2. Breath, take a step back and re-organize your high-level thoughts. Do you have a clear functional idea of what you’re trying to build?
  3. Remember no-one is perfect. Don’t be afraid to make mistakes.
  4. Just start on something! Use your experience to pick something and start it. If you need to change things later, you need to change things later.
  5. Talk to people - if you’re unsure about something, use others to bounce ideas off and get a different perspective.

One of the biggest advantages of software development compared to other fields is the highly-iterable nature of the work. Modern software developers use this to their advantage; tools and workflows such as continious integration and scrum have evolved to take advantage of this characteristic of software development. This doesn’t guarantee good software, but is rather a fact that can be leveraged by good software developers to show that there is a advantage over different fields.

The most important thing to take from this is that often times, the quickest way to do something in software is to just write it. If it breaks, fix it and test it again. Seasoned developers have honed this skill for themselves and mitigate programmer’s block from experience. So why not just try it (whatever you’re stuck on) right now?