I’ve never written a blog post like this before, with those catchy “x steps to [insert topic here]” which are meant to be consumed like mental crackers in little bite-sized snippets. However I’ve been running into a repeating series of stories, thoughts, and other suggestions that have led me to believe that it is a useful practice to not only read articles like this to keep you “inspired” but also to write them as well.
So, here is my simple 5 steps to a successful side project:
Step 1: Get it working (keep it working)
If you have an idea for something cool, you need to get it to a working state as quickly as possible. What this means is you dont worry about architecture, clean code, or spending hours tweaking that 2D renderer or that AJAX request call. You get it WORKING. Tear away anything and everything that stands in the way of your core idea showing up on the screen. Forget pretty graphics, or for writers forget spell checking and formatting. The key here is to take it out of your brain and on the screen as quickly as possible. If your idea cannot be realized in a few days of throwing code together (or writing a few paragraphs – if you are writing) then look again at the idea. What aspect of it is core? What can you do to distill the idea down into something very simple? This is a critical step. Dont fix anything or rewrite things. Just get it into code or words.
Step 2: Get it out there
I’m sure you are thinking “what? you just told me to write my code as crappy and fast as possible to get it working, and now you want me to show it to someone else?”. YES! Each of these steps are intended to help you separate the really good ideas from the bad ones. If you could not get the idea working in a few days, then it’s not worth your time right now. If you are to embarrassed to show your project to someone else (perhaps even just a small group of trusted friends) then perhaps you are more concerned about your coding style than your idea, and you might consider just going to pick up some contract work instead where you can take someone else’s idea and write pretty code. Still with me?
Step 3: Listen to your community
Now that it’s out in the world, and you have people looking at it, actually LISTEN to what they have to say! Perhaps there’s some angle or aspect that you didn’t think of. Perhaps there’s an application for this idea that you overlooked. Be sure to set up some kind of forum or mailing list for the people whom you are sharing your idea/project with. Solicit feedback and read it all carefully.
Step 4: Iterate like Mad
Ok. Now you have a working project. You have gotten some feedback on how it works, and you probably have a list a mile long of the things you want to fix and change. You are now going into the most interesting phase of your project. You iterate on it like crazy. Every day, find something to change or fix. You have to keep steps 1, 2, and 3 going as well. Every iteration it should continue to work, it should be something you share with your community, and you should be getting feedback on every iteration. For a story this means that your revisions always result in a coherent story. For an app, it should always be “working”. No matter what! If you lose any of steps 1 through 3 then you have to stop here till you get them back. If you fail to do this, your idea/project will die.
Step 5: Open the Source
This one is probably the hardest to do of any steps you’ve run across so far. Why in the world would you want to take all your hard work, and essentially give it away for free? Someone’s going to steal your idea and do something really cool with it! Someone’s going to do it better! AAAAAAAH! It takes a radical shift in thinking to realize that not only is this something that may happen, it’s something you WANT to happen. You want to be the origin of GREAT IDEAS. You want folks coming to your GitHub and finding great stuff to work with. There are licenses to help protect your work – in terms of getting credit and all, but seriously if all you are looking for is to get credit for great coding, then once again go grab some contracting work and make a name for yourself there. Instead you will discover that your idea will grow and flourish in this new environment. You may have to give up a few sacred cows of ideas, but in the end you will discover that your project has a “life of its own” and will ultimately give you much more satisfaction than if you held it close to your chest and shared it with no one. You need to see this is a two way street. Once you begin to do this, and tell others to do the same, you will begin to discover other great projects that you may find inspiration from. Or you might be able to fix a bug in someone else’s code that has been vexing them for weeks. And they may do the same for you!
Each of these steps builds on the previous one. You have to keep them all at heart if you want your side project to be successful. You will discover that some projects die off, and others that you really didn’t expect to take off will flourish. This will help you learn how to direct your time and energy, because ultimately you are creating something that you want others to use, and if they feel like they can make an investment in your project and in you, they will stick around and become hard core fans.
I want to take these ideas to heart. Look at this article. Is there something missing? Should I have added a step? Do you have some good examples I can use? Let me know! I will update and revise it based on your feedback.