You can’t do anything really well unless you love it, and if you love to hack you’ll inevitably be working on projects of your own. —Paul Graham, Hackers & Painters
Many years back, when I was in my twenties, I worked part-time as a programmer at a local startup that was developing a kiosk for printing business cards. The CTO of the company, Bob, was what I considered to be a “real” programmer—the type of guy who not only kept books on Yacc (a compiler constructer), but actually read them. One day as I was talking to Bob about a task I was working on, I noted that he was looking a little tired. “Yep,” he said, with a satisfied smile. “I wasn’t happy with the bitmap editor I was using, so I decided to stay overnight and write my own.” I was taken aback. There was no way I would give up an evening’s sleep to make an image-editing program—especial when there were dozens of versions freely available. This stands out as the time when I began to realize that I was not cut out for a career in software engineering. I would never be able to compete with the Bobs of the world—people who are sharp, dedicated, and absolutely love writing code. For Bob, programming was playful and fun; for me, it was a job.
Over the ensuing years, as I considered different paths on my circuitous journey to becoming a career counselor, I’d ask myself: if I choose this direction, will it be play or will it be a job? Every time I’ve chosen the job path it’s ended badly—a waste of energy, time and passion. Now, I can finally see the obvious: Work needs to be fun. Not just interesting and rewarding, but out-and-out play.
An insightful discussion of play in one’s work can be found in the book, Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman, by Dave Hoover (2). Hoover, who began his career as a child and family therapist and then transitioned to working as software engineer, has a unique perspective drawing from both careers. He stresses the importance of building “breakable toys”—small projects, tools, and work products that allow you to have fun and learn. For programmers, examples include writing your own wiki, calendar or address book. The idea is to build something from start to finish primarily for your enjoyment. This gives you the chance to experiment (and to fail), without worrying about the expectations of others.
Dave Hoover: software engineer, angel investor and author
I’ve found that most craftsman engage in building small-scale projects for their own exploration and entertainment (although they might not call them toys). Here are some examples I’ve seen:
I recently built a toy for my own work. I wanted an online place to track of my coaching client’s tasks, personal visions and session notes. Although there are many coaching platforms available, I was curious to make my own software—especially since I wanted something suited to my holistic approach. I spent many late nights getting the system online, and this got me to thinking back to how Bob had stayed up all night to script his bitmap editor. Although I’ll never be a “real” programmer like Bob, I hope I’ll someday be a bona fide career coach—at least in the sense that I’m fascinated with all the little details, inluding making toys.
Example client home page from my "toy" coaching site