Tuesday, October 26, 2010

The Beginning ...

I just realized I've been a software developer for more than a quarter of a century! After all these years I sure can say that there seems to be no end to all the new stuff being created. Just when you think technology is at a peak, something new comes up that wows the entire world.

I have done a lot of technical training before but recently I found myself giving more and more talks on the topic of creative thinking and problem solving in software development. I now offer this as a full seminar and workshop but I've also decided to write this blog as well in order to share to share the techniques I've learned through the years to everyone who may be interested in it.

This all started in 1997 when I started work in an animation company as Head of Research and Development. It was a great job for me since I'm a natural tinkerer and I enjoy looking into new technologies, but when the company grew and I had to hire programmers to work in my department, there was a question that I kept asking myself. The question was "How do I give the members of the team the skills to fulfill the department's mission?" In my boss's terms, the department's mission was simple: "Come up with new ideas to make the things we do better, faster or cheaper."

There were a number of techniques that we used from time to time to help the creative process, like brainstorming, for example. All of these techniques were helpful in some way. The great thing was during that time I worked with both software developers and artists and that was when I realized something.

The artists were able to pull ideas from thin air much faster and easier than software developers. It didn't mean the ideas were better or worse, it was just faster. For example, I ask people from both groups to draw a box. I asked the software developers how they came up with their idea. They said they'd have thoughts of size, type of material, etc. before drawing the box. I asked artists about their process and it's basically "Well, it's the first thing that popped into my head".

Software developers, because of the nature of their training and work have a logical "voice" that kicks in during their thought processes. This is of course a necessary skill that we use in our work, but I also found that a lot of times this auto-censors and prevents certain ideas from coming through.

Because of that I started to develop some simple exercises and techniques tailored to the way software developers work to help my team use more of their creative abilitie. So how do these techniques that I'll write about complement all the other creative thinking techniques out there?

Imagine if creative thinking were a sport like basketball. If in creative thinking, there are techniques like brainstorming, mindmapping, storyboarding, etc. then in basketball these would be the equivalent of techniques like jump shots, lay-ups, dunks, free throws. But in basketball, there are things a player needs to do in order to improve a technique like a dunk. If the player is fat then the player needs to diet. If the player is skinny, the player should do weights to improve the lower body's muscles in order to be able to jump higher.

The techniques I teach are more of the latter class of techniques. These are various methods tailored to the way a software developer / programmer normally works, that improve the results when they do brainstorming, mindmapping, storyboarding or some other existing creative thinking or problem solving technique.

No comments:

Post a Comment