Finding Inspiration

This is the first in a series of articles on a programming project that I am working on.  I thought it would be interesting to share some of the aspects of the project as I go along.  Some of the articles will be technical in nature and some of them will not be.

A career of projects handed to me

The great majority of my career people have told me the projects that I am going to work on.  It started in college when you were given the input files and told exactly what the program should do and it was your job to craft the program to get the desired results.  I feel no ill will against the professors for doing this, as someone who was a professor’s aid and had to grade the programming projects, I can tell you it is a lot easier when everyone is working on the exact same thing.  You can see quickly see if they got the program to compile and run, got the correct output and spend the majority of your time looking at the fit and finish of the program (“Has Ricky ever heard of comments?”).  The nice thing is that college prepared me for the typical Information Technology career where you are handed your assignments.

 

I spent about 1/2 of my career in consulting and about 1/2 of it in industry (with a year off to teach).  For the most part there is little difference in the 2 sides of the profession, there are business problems to solve and they bring in resource use technology to solve the problem.  A lot of the projects that you get assigned to are existing applications that need to be modified, we call those legacy.  Occasionally you are assigned a project that is a new project, these are highly desirable.  Even better is when you get to be on a project where they have not made any decisions about the technology or the business process to be solved, this is pretty much the pinnacle of the projects.  I have been lucky enough to work on two of these in my career.

 

The only think that is better than the project where only the business problem to solve is decided is when you get to pick the problem to solve.  To get this you have to be really lucky, create a startup or work on a side project.  I have picked the side project route.

Lacking Inspiration

I am not a very creative person; I alluded to this in my recent article on crayons and creativity.  It is tough work for me to think of ideas that are true stream of consciousness.  My innate lack of creativity and years of projects being handed to me have really stunted my inspiration.  I really envy people who come up with “an idea a minute” (My buddy Josh Holmes is really good about that – he amazes me with how many ideas he comes up with).

 

One of the most inspired people I know is my wife Jodie.  It is not software related, but she will take something that she sees and turn it into the most incredible window displays at her work.  She will buy an antique camera at a garage sale for $1 and turn it into a wonderful story.  Me, I go right for the screwdriver and try to get the camera working.  When I asked her about how she finds the inspiration she told me:

 

There is art everywhere; you just have to open your eyes
-Jodie Clarkin

Patterns for Inspiration (about programming projects)

I have been thinking a lot about different projects that I can tackle and I have noticed that the general ideas fall into one of a few patterns.  By no means is this a complete list, but I think most inspiration can fall into one of these patterns:

 

I can do that better – Probably one of easiest ways to become inspired is to see something implemented and to recreate the idea, but to do it in a “better” way.  Better is a very suggestive term, because one person’s better is another person’s awful.  Sometimes the difference between the applications is merely cosmetic.

 

I can use that idea, but in a different way –  This is where you see an application of technology and think about other ways you can use the technology (or idea). A great example of this is seeing data (such as hotel locations) displayed on a map in a web application and you think of other map based data that you can overlay on a map in a similar fashion.

 

How would I do that in – This is when you see something implemented, but wonder how you would do it in another technology.  Don’t confuse this with the “I can do it better” pattern; this is implementing the same idea in a radically different way using a different platform.

 

Seeing a problem and fixing it – This is the first one on the list that does not involve a reference implementation, thus it gets a lot harder to implement than the previous ones.  This is taking a pure business problem and dreaming up the solution and implementing it.

 

Radically changing how things are done – The previous pattern was about changing and improving the way things are done (sometimes by leaps and bounds).  This last pattern is about destroying and totally recreating something.

 

Stay tuned for the idea I am going to work on (I have narrowed it down to a couple of choices).

4 thoughts on “Finding Inspiration”

  1. I think the best advice I’ve been given on this topic is from the old Bell Labs motto: "Either you do something very useful or you do something very beautiful", but the most important thing is the "very."

    Right now I’m drawn to the latter by seeing the "beauty" in the STEPS project ideas which has encouraged me to start my own small side project. I think that eventually really beautiful ideas can become quite useful too.

    Good luck, and most importantly — have fun! 🙂

  2. Great insight Larry. I often feel the same about my creativity. I often admire the architects around me that don’t just look to fix a problem, but turn it on its head and come at it from another direction that I didn’t think of. On the other hand, I don’t think of you as having any lack of creativity base on listening to the Thirsty Developer and your comments at the Chicago Architects Group. Perhaps that is something else we can learn, is how much creativity we have that we don’t recognize in ourselves.

  3. The other book that comes to mind is The Art of Problem Solving by Russel Ackoff, which was so good I’ve read it three times. It really forces you to step outside the box, question all of your assumptions, and ultimately demonstrates how useful it is to change perspectives flexibly.

  4. Hi Larry, great topic. This is a really important issue. Creativity in development is what makes the difference between adequate solutions and the kind of phenomenal software that we’re proud of designing. Our jobs are so much more than some deterministic act of writing out business logic (like some instruction scheduling algorithm). We need to see the whole picture, and regularly create and apply metaphors to organize the concepts we use to accomplish our goals. As you’ve already hinted at, we don’t know of anything better than to be faced with a new and unfamiliar challenge, with our whiteboard blank before us like uncharted waters.

    I think you’re quite creative in your writing, and your list of creative techniques is a testimony to that. If you haven’t read them, I highly recommend Michael Michalko’s books: one is Creacking Creativity: The Secrets of Creative Genius, and the other is Thinkertoys: A Handbook of Business Creativity for the 90s. Both of them explore and help you to develop those same kind of creative techniques by using games or techniques that you’ve described.

Leave a Reply

Your email address will not be published. Required fields are marked *