Hobby Hacking: Exploring Your Passion
Androids: The Missing Pieces, Part III
Like the previous article in this series, the content below was originally written in a different form for the book, Androids: The Team That Built the Android Operating System. But, also like the previous article, it was eventually cut for brevity and focus. I’m reviving it here for those that are interested in the topic.
While conducting interviews for Androids: The Team That Built the Android Operating System, I was struck by the number of people who took on major programming projects as kids and as adults, on the side, simply for the love of technology. There are two things that stand out about what I’ll call “hobby programming” (though as you’ll see below, these hobbies often resulted in more tangible outcomes than typical “professional programming”).
First, hobby projects are a great way to learn. There’s nothing more motivating for learning a new thing than having a concrete goal. I always find it easier to learn new concepts (languages, data structures, user interface APIs — whatever) when I use them to write a specific application.
For example, maybe I want an easy way to log exercise events. I’d need a user interface to record the data. Then I’d need time and date mechanisms in the platform to record the data correctly, and a storage mechanism to save the data outside of the application. I would also probably want some kind of backend mechanism ( both communication and storage) in order to cache the data off-device. I don’t necessarily known many of these technologies already — but when I can selfishly use them for writing my app, I can learn the things that I need.
The other element of hobby programming is that it is a clear demonstration of passion about the domain. Many people can program, because education works and people can be taught. But the work that someone can do just to get a paycheck is not necessarily going to be at the same level as the work that someone can perform if they actually enjoy what they’re doing. If they’re having fun, then they are self-motivated: I believe they will work harder, faster, and more creatively because they actually care about the results, and are curious about how to improve things along the way. Constantly. Programming is essentially puzzle-solving for a living. People who enjoy solving those puzzles excel at the job.
Android benefitted from people who were major hobby programmers. These people took on side projects that taught them a lot about programming, and computer systems, as a result. They understood software, and aspects of operating systems in particular, deeper than they would have otherwise because of the time they spent exploring it for their own hobby projects. At the same time, they demonstrated interest and passion in the field in a way that lists of degrees, employers, and skills on a resume cannot match. Their excitement about tech, and the concrete results of their projects, brought them to the attention of potential employers who hired them and put them to work building more skills which eventually contributed to the Android platform.
The Place to Be
Years before Android began, Be Inc. hired at least three future Android engineers on the basis of their hobby work: Mathias Agopian, Brian Swetland, and Hiroshi Lockheimer.
Mathias’s first substantial hobby project was a sound tracker for the Atari Falcon. Writing this app taught him assembly, C, and low-level DSP (Digital Signal Processing) techniques which would come in handy in his later work on Android’s GPU and sensors. He then became intrigued by printing, writing Epson drivers for the Falcon and then for BeOS. The latter work introduced him to engineers and hiring managers at Be, where he soon landed a job that brought him to Silicon Valley to work on Be’s printing and graphics software.
Brian Swetland had taken a break from college to focus on work and his own hobby projects, when he saw that Be had come out with a port of BeOS to x86. Curious, he installed the OS, but could not get it to work with his SCSI hard drive. He realized that it needed a driver, so he figured he’d write one. He reached out to the company through a Usenet group and got a reference driver from one of the Be engineers. But in writing it, he found an endian (the byte order in x86 vs BeBox architectures) bug. Brian reported this bug analysis back to the Be engineer, who asked if he wanted a job. A few days and interviews later, Brian found himself moving out to California to start work at Be.
Hiroshi Lockheimer was in Japan doing contract programming work. On the side, he developed and open-sourced a text engine for BeOS. This library got him noticed by Be and he, too, found himself moving to California to start his Silicon Valley career at Be.
What’s Your Passion?
What tech makes you excited? What do you, or can you, do with it in your spare time? Is there something related you can do to create some finished project that might help you demonstrate that passion and knowledge to future employers?
Even if you don’t take the project that far, or have designs on finding a job through the effort, is it something you can simply play with to learn more and explore what excites you about this domain? If nothing else, anything you enjoy doing* is worth doing for its own sake. And in the meantime, it just might broaden your work options and lead to possibilities doing more with what excites you in tech.
* Okay, “anything” is probably going a bit too far. There are many enjoyable things that would be awful, dangerous, or just plain bad ideas as hobbies.
If you find this topic interesting, I’d invite you to check out the book, either in paperback or ebook form from No Starch Press (also available on Amazon, other online print and ebook stores, and local bookstores as well), or in the audiobook from Tantor Media. All profits from all formats are being donated to tech-related charities.