While some of us might consider ourselves to be creative most of us do not. I’ll go with the 80/20 rule here. Twenty percent of us are creative and eighty percent are not. So, as part of the great unwashed 80%, how does one come up with good ideas for side projects?
I’m going to give you some sources of ideas but that’s not the point of this post. The point is to think on your own two feet, so to speak. Idea generation is work. To get good at it you have to work at it. There is no magic answer. I used to study music composition and the biggest takeaway was that the only way to learn how to compose is to compose. No one was going to do it for me. Software development is the same. It just works better if you understand the process and come up with your own solutions.
So, to start, I’m going to change the 80/20 rule to the 90/10 rule. Also, I’m going to say that the 90% are the creatives and the 10% are the non-creatives. I’ll concede that there are people in the world who have no capacity for inventing an idea, however, most of us do. If you have lasted for more than a week as a software developer then you are creative. After all, we come up with solutions to problems and that’s what it means to be creative.
Creativity = Problem solving
I will make an illustrative comparison. A software developer is given a problem. This problem is turned into a set of requirements and the developer comes up with a solution. This is a high level solution: the platform, what the UI will be, what the data store will be, etc. Along the way, the developer solves many more smaller problems: how to pass data around, class interfaces, functions, how to get stupid widget a to talk to stupid widget b, and so on.
Composers and painters (traditional “creatives”) do pretty much the same thing. There is a problem: in painting this might be a subject or installation location and in music it might be a setting for an opera or a dance or a genre of music. The painter/composer comes up with a solution: oil on canvas or an opera set in 23rd century China, say. Along the way, many smaller problems are solved using techniques familiar to painters and composers.
Software developers : programming and technology :: Artists : paint brushes, paint, pianos.
So, you see, software development itself is a creative endeavor. Coming up with ideas is a creative endeavor. Ergo, software developers can come up with, or invent, ideas.
Great, so we’re all creative. How do we do all that creativity?
- The idea doesn’t have to be the be-all/end-all. It doesn’t have to be the greatest thing and it can be the thing that’s been done a million times. Maybe it’s a good thing if it has been done before. Working on a well known idea or problem could get your creativity going.
- Where does your domain expertise lie? What do you know about? What do you like to do? Developers get requirements from domain experts – generally business people. In this case, you are the domain expert.
- Think of ideas without really thinking. The biggest hurdle to creativity is overthinking. You come up with an idea and right away it is subconsciously criticized and rejected. Don’t do this. Just think of an idea, write it down, forget it and move on. Keep doing this as long as you can. When you go over the list most ideas won’t be good but you will find some. In fact, you will probably find more ideas than you will ever have time for.
- Sit still and stare into space. Get away from the computer, turn the TV off, turn the music off, turn the spouse and kids off. Just sit there and be quiet. Don’t think. Thoughts will start to come and they will connect in crazy ways to other thoughts. If negativity, sad thoughts, life stuff starts to intrude shake it off and start over. It takes practice but you can do it.
- Make lists. When you think of something write it down. If you don’t, I guarantee you will forget it. Write down your areas of expertise. Write down your ideas. Keep writing. Don’t use a computer. Use a paper and pen.
- Be open minded. Think of every idea as being a good idea. Follow it and see where it goes. On its own it might turn out to be less than great but it might lead to something good. Optimism is better for the soul than negativity.
Very few ideas come out of whole cloth. Even the creative geniuses of history had some help. Newton stood on the shoulders of giants. Mozart wrote operas based on popular stories, Picasso painted bulls and women with guitars which apparently were plentiful in 1920’s Paris.
Here are some sources of ideas:
- Other people. Mix with other technology people. Mingle with business people. Talk to the weird kid next door about what he’s doing in his robotics club. Talk to the person standing alone at a meetup or who is sitting at the next bar stool. That random thing on the TV isn’t that interesting anyway. There’s a good chance the person works in some industry or other and, better yet, might not be technical. I recently met someone who does event planning for a boutique hotel. I don’t know much about hotels other than having stayed at some but I came up with at least three ideas within the 10 minute conversation.
- Go to hack-a-thons. I live in New York and there are tons of these around for all manner of technologies. I’m sure it’s similar in most cities. You can go with a friend or, better yet, you can meet people (shiver). You only have a day or so to get something built so your idea and solution will be quick and dirty. That’s a good thing. After the event you can build it out more robustly.
- Meetups. Here in New York there are thousands and, again, I would imagine it’s similar elsewhere. One in particular that is interesting to me is Hack & Tell.
- Reddit. Covers pretty much everything. I’ve been looking for data sets and /r/datasets has been a life changer.
- Old books. Go back to those books you haven’t read in a while. How were problems solved then? How can you solve them now? It is likely that there are packages for that now but the nice thing is that you can safely ignore them and come up with your own solution. The results might not be slick but you will learn a lot.
I wrote this entry because I’m in the idea generation stage for a side project. It references itself in that I created it in order to follow the advice it is giving. Now I think I’m going to sit in the sun and start writing down ideas.