Hurdles in Software Development: My Experience

Great Wave off Kanagawa, by Hokusai

I’ve been intermittently working on a little GUI-based (GUI stands for “graphical user interface”) Ruby application for my department.  This is my first real piece of software in about a decade.  Interestingly, I encountered many of the same issues I recurrently wrestled with in college while writing programs.

The natural history of software development, for me, seems to go something like this:


I start working on a project, and things go pretty smoothly until I encounter hurdles, such as any of the following:

1. Lack of knowledge (e.g., not knowing how to create a GUI wrapper for a Ruby program).

SOLUTION: Search online or in a book until I find the right information (e.g., how to create GUIs in Ruby).

2.  A broken system (e.g., a particular Ruby gem, for example, green_shoes, just will not install on my particular Mac OS X installation).

SOLUTION: Give up entirely, after bashing your head against the problem by trying many different possible solutions, or switch to a different system (e.g., green_shoes installed successfully on my Linux machine.)

3. Lack of insight (e.g., not realizing that I should have coded something a different way).

SOLUTION: That “Eureka!” moment when you suddenly realize what you did wrong and go back and fix it.  This often comes to you when you’re not programming at all but are doing something entirely different.  (Some people attribute these solutions to the “unconscious mind”.)

4. THE FINAL HURDLE.  There is always (almost always, anyway) a final hurdle that is way, way bigger than any of those that came before it.  You won’t finish your program without surmounting this tsunami.  Sometimes, THE FINAL HURDLE is followed by “aftershock” hurdles that try to trip you up before you reach the finish line.  THE FINAL HURDLE in my current project took several times longer to surmount than any that came before it:  I wrote my basic Ruby program in a half hour, it worked, and then I wrapped a GUI around it by jumping over several minor/submajor hurdles.  I didn’t anticipate being blindsided by THE FINAL HURDLE, though, which was that green_shoes just would not install on my OS.  (Why did I use green_shoes instead of the original shoes.rb, you ask?  It’s because I couldn’t install gems additional to those already included in shoes…trust me, I tried every reasonable thing.  Anyway, green_shoes is a more elegant solution than shoes because it’s a gem included in your program.)

SOLUTION:  Cycle through the solutions to hurdles 1-3 until you surmount THE FINAL HURDLE and finish your program.   Save some energy for any sneaky minor/submajor hurdles waiting for you before the finish line.  You don’t want to die before you get there.

Programming takes a lot of perseverance.  You’re an explorer, often lost and grappling with profound difficulties, but you’re getting stronger.  Eventually, if you stick with it long-enough, you get better and the hurdles become smaller, for whatever that’s worth.

However, the programming world is always changing, so new programming languages and other systems are popping up all the time, with new 100-ft tsunamis headed your way…


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s