There are many times when programmers should study programming, such as when they are first starting out, or in the process of solving some especially difficult problem. For certain developers, however, improving one’s programming skills seems to be a kind of go-to solution for dissatisfaction with life and career. I think that’s an error.
This is a follow-up to my earlier post on Organizational Variety, or Why Startups Should Hire Developers with Broad Experience.
Choose Mastery or Get Off the Treadmill
Last week, Seth Godin wrote a post called The Myth of Preparation in which he described three phases of skill development (or levels of polish depending on whether you’re talking about a person or a product). At first, quality increases rapidly with time, but then it levels off and progress becomes gradual. He calls these phases beginner, novice, and expert, but I have a different interpretation. The stages I’m interested in are familiarity, competency, and mastery. At every level, the increase in time required is exponential. Become a master is a worthy task, but it has to be a vocation because the investment required is huge. Competency, on the other hand, just takes a few years of dedicated effort. Once you’ve reached competency, the gains from, say, learning a new programming language or testing out the Latest Cool Thing are pretty low. You should already be getting enough of that at work. This is the time to get off the competency treadmill and head into the jungle.
Do Something Scary
The “jungle” is the place where you start over. Studying programming is easy. Pursuing your buried desire requires more. It’s usually a bit scary because:
- You have to become a beginner again.
- You might do something you’ve always wanted to, which also means you might fail at something you always hoped for.
The first is just a bit of ego bruising. The second is more difficult, but if you keep going, the satisfaction is worth the doubts. The experience of failure, when it comes, is almost never as bad as the anticipation.
Cultivate Your Business, Not Your Code
Whether or not you’re pursuing long-lost dreams, you are probably at least concerned with your professional success. In a software career, there are many factors that affect success, technical prowess only being one of them. For many developers, however, programming is the only one that’s really been explored. Here are a two more that merit investigation:
The first is communication, which I mentioned in the previous article. If something helps you understand project requirements, helps you promote yourself, improves your social life, and enables a new activity, such as writing, it’s probably worth your time!
Another is business, and in particular, entrepreneurship. This is as much of a commitment to enter the jungle as it is a self-made course in wilderness survival.
In December, Giles Bowkett posted a video describing reasons that it’s better to spend one’s time improving business savvy (and launching businesses) than on perfecting programming talents. He put the choice in rather dramatic terms as a decision whether to build your own business and become independent or to descend into a “Dilbert Hell” of cubicle oppression. I don’t think that every programming job is a Dilbert Hell. A lot of them are pretty cushy. But if you want to spend your time in that beginner’s rapid-learning state and less on the competency treadmill, starting your own business(es) might be a good way to go.
Once you have taken up a new skill or started your own business, you will develop new models of thought and new domains of knowledge. Once you’ve achieved multiple competencies, you can start synthesizing them and producing novel products targeted to the niche at their intersection. By diversifying your skills, you actually become more specialized with regard to their combination. For example:
- You love food so you became a chef as well as a programmer? Great, now you are specially positioned to create all kinds of products for chefs: iPhone apps, community sites, technology training, etc.
- You started a company? Now you understand the needs of small businesses. Startups for startups are a genre that Paul Graham has specifically announced he’d like to fund.
Enrich Your Life
The most important reason, however, to do something different is that it will enrich your life. The world is wide, full of fantastic things. The internet is a poor way to experience most of them. Having a powerful second focus in your life is a great reminder of everything we don’t know. For me, that’s highly encouraging.