Before I came to 8th Light, I didn’t write code all the time. I took some CS classes in college and I enjoyed programming a lot, but I rarely wrote code outside of class. I never pursued my stupid ideas for apps, and usually this was because I had no idea where to start. Writing code in my spare time was hindered by my lack of skill.
You’ll Need More Than Skills
Then I took an apprenticeship at 8th Light, a little over a year ago. I learned languages, tools, design patterns, thought patterns, and the principles that make me the professional that I am today. I had all the skills and resources that I would need to be able to write just about any kind of code. Although, until recently, I haven’t started many of my own projects.
This was especially strange, given that Friday afternoons at 8th Light are dedicated to open source projects (we call it Waza). With all of this extra time to write code, I rarely had a project of my own. So it wasn’t just my skills holding me back from personal projects before.
Open Source != Dev Tools
I would think, "what could I make that people would use? What kind of tool would be good for my everyday development?" Then I realized, that I was trying too hard to think of a development tool to make.
A lot of the Craftsmen at 8th Light have made great development tools, and as one of the younger Craftsmen, I look up to my more senior colleagues. I wanted to contribute to the software community the way many of them have. I wanted to make something that people would use.
Just Make Something
What I needed to do was just make something. Anything. Write some code for any stupid idea that I could come up with.
Once I realized that, I noticed other 8th Lighters had been doing the same all along. The Craftsmen of 8th Light have produced great dev tools, like Joodo, REPL-y, and many more. But there are also plenty of ridiculous programs, like one that makes a unicorn fly across the screen and a WAT Button .
Ridiculous Apps are Not Useless
Steve Kim just gave a talk at Chicago Code Camp about Chrome extensions. And how did he begin learning about Chrome extensions? By creating the WAT Button, of course!
While there are many ways to practice writing code ( katas, koans, etc.), small, entertaining apps are essential. If Steve had tried to learn about Chrome extensions with a kata, he probably would have failed. A kata is great practice, but is more about the discipline it teaches. The WAT Button gave him something to experiment with. He was allowed to fail, because it meant nothing. But having succeeded, he mastered a new technology.
The purpose of the stupid ideas is not just for the entertainment, but to learn something new, while keeping the process interesting. If the project is interesting, then it is easier to follow through on it and learn something. By wasting my time trying to think of practical applications to work on, I was depriving myself of time that could be spent learning new things and honing my craft.
Taking a lead from my fellow Craftsmen at 8th Light, I have begun to make an Applause-O-Meter. I’m sure very few people, if anyone, will get any use from it, but it will teach me something. I will use it to learn a little about the Java Audio library, and soon the Android SDK.
Don’t worry about how useful the idea is and use it as a platform for learning. Write down any idea that comes to mind, no matter how bad it is. The usefulness of the program is not as important as the fun you have writing it. So think of some stupid ideas and just write some code.