Andrew and I attended a Portland coders meeting last month, where two developers who worked for a large company gave presentations on recent efforts. One shared his custom wrapper of an existing iOS class. What struck me was how the presenter imagined out loud how his code might be utilized: “So let’s say your boss comes to you and asks you to do X…” and “So if your boss wants you to move things around…” Why was a boss’ command the example that popped into his mind? Wouldn’t he ever use his code in his own projects, or in any circumstance of his own volition?! No, “The Boss” comes down from on high, gracing the lowly programmer with his great wisdom, and decrees what new features shall be wrought. It felt gross. What’s it like to be someone who’s imagination only takes them as far as what potential orders they may be given?
These are The Digital Mechanics. They make a good living applying technical skill, enough to live comfortably and support a family. While many programmer job listings still request at least a “BS in Computer Science” (an acronym I’m quite fond of), “equivalent experience” is usually accepted. So without racking up debt on a four-year degree, a person can get a good programming job as long as they’re self-motivated.
If a car mechanic wants to build a car, they need a lot of physical parts. To design and build a line of cars, they’d have their work cut out for them, and need some serious startup capital. Programmers have the huge advantage of working mostly within a digital world, and the things they create have minimal real-world costs. The line between “digital-mechanic” and “digital-creator” is much easier to cross for those so inspired.
It would probably be “cooler” for me to claim I’d always wanted to be a programmer, that it’s my true passion and calling in life, but that just isn’t true. My interests have varied over the years, but the common thread is they all represent creative opportunities. When I was eighteen, I wanted to write songs and play in a band, so I learned to play music. When I needed artwork and a website, I learned how to create those things. When iOS was released, I had apps I wanted to make, so I learned how to build them. Any skill that I’m even marginally good at came about because I wanted to make something. And beyond those initial creative endeavors, I was usually able to apply the new skills to freelance work.
I’m always surprised to meet a developer who doesn’t have any independent products. Did they only aspire to be a “digital-mechanic”? Perhaps they went to school for computer science, took the nice day job, and that’s the end of the story?
Years ago I took piano lessons from a USC doctoral student in music. He was a great pianist and teacher, highly intelligent, and had encyclopedic knowledge of classical music and many other subjects. Being a songwriter, I once asked him if he wrote music. “Oh gosh, no,” he said, “what could I possibly add to what’s already out there? What do I have to say, and who would care?” I was disappointed, but didn’t think his modesty, shyness or embarrassment were surprising. He knew and performed many “Great Works”. How could he ever match them?
These fears are the sticky trap we all have to wade through, and some seem to give up all creative hopes before realizing they can escape its hold. Ira Glass has a nice interview clip where he talks about “the gap” between a beginner’s creative work, which might not be very good yet, and their tastes, which may be highly refined. This gap can be discouraging. A creative beginner needs to remember it’s OK to not be great out of the gate.
I’ve built and released several independent apps which provide a modest revenue stream, but their creation also adds value to my freelance work. It means I might’ve already had a chance to work with new frameworks in the iOS SDK, or might have used some new third-party tools that will benefit a freelance job. Clients pay developers because they have an idea, but lack the skills to implement it. Who would they rather pay, someone who has frequently labored from idea all the way through to product launch and beyond, or someone who has only built what was on the blueprints handed to them?
I recently considered taking a job at Apple as a software engineer, and went through a few phone interviews. The deal-breaker for me was that they would not allow me to do any other business related to programming in my off hours. I couldn’t release independent apps, no freelance work, and I couldn’t continue to operate as part of my two-man LLC, Secret Monkey Science. Taking that job would mean shutting down the part of my programming brain that isn’t just a “digital-mechanic.” I’d go nuts. What creative person would be OK with signing an agreement like that? Someone who might think “Yeah whatever, I hate computers anyway, and I wouldn’t even want to touch one outside of business hours”, or maybe someone who is so blindly in love with Apple that they’d want to give that corporation any and all of their creative output?
If Apple is comprised of “digital-mechanics all the way down,” it makes me wonder where the company is headed. Maybe that worked under an innovative and tyrannical Steve Jobs, but under Tim Cook? Maybe not.
If you want to be a programmer, is it just to pay the bills? Fair enough! We all have to eat. Or maybe it’s because you have things you want to make, and programming is the skill that will help free those pesky ideas from your brain? In my opinion, that’s much better, and you’ll be building great skills that will go towards general programming work. Even if the things you create aren’t great, or don’t take the world by storm, you’ve approached the craft from a more interesting angle, which will help prepare you for all the challenges ahead.