Master of one

If you want to be a successful programmer, then you need to be a master of one. I won’t tell you what that one thing is because you will have to decide for yourself. The statement is counterintuitive to what you will hear from “reputable” sources. However, the reality is that the limitation on time and energy, as well as the ridiculous pace at which new technologies are available, will never allow you to learn everything you hear you are supposed to know in order to be a successful programmer.

Most programmers have already heard about the 90/10 rule as it relates to this idea. It goes something like this: “Ninety-percent of programmers suck at their job, and know next to nothing, while the other ten percent know exactly what they are doing, and just about everything else, too.” Of course, that is a paraphrase, but it nicely sums up how you feel after getting the impression you fall into the ninety-percent. If you subscribe to the master of one rule, then you will fit nicely into that ninety-percent. We’re happy to have you.

Never mind your passion for that one thing that you do well, or how much you enjoy it, because somewhere along the line, someone will tell you that you just don’t know enough. It might be unit testing, algorithms, source control, the command line, database normalization, cloud computing, functional programming, or even how to make a good cup of coffee for your department. You will always be lacking in some area of expertise, and slightly incompetent.

I wonder if doctors are the same way. Are the brain surgeons thumbing down the heart surgeons because they crack open ribs instead of skulls? Do ear, nose and throat doctors snicker at urologists because they look at genitalia all day? Substitute any other profession, and I wonder how many live by the same 90/10 rule. Of course, there are no medical exams to pass, or residency requirements to uphold as a programmer. Yet, nobody would deny that there are still a good number of quacks.

The initial common response of course is to spend every waking hour you have learning a vegetable medley of technologies you may not ever use, and more importantly, that you have no interest in learning. Gasp. Yes, I do believe it’s okay to dislike a wide array of technologies simply because you can’t stand working with them purely out of personal preference.

For instance, I like C# language syntax, so I like working with JavaScript, PHP, Java, and C#. I don’t like functional languages, because I find them unreadable, and I don’t like Ruby because I constantly feel like I’m swatting flies with a baseball bat. As far as Python, well, I honestly can’t say much about it because I don’t have the time to learn it, and I have little interest because it isn’t commercially viable in my market space. Again, welcome to the ninety-percent.

To be completely honest, I have known very few programmers who fit within the highly revered ten percent, and the most talented individuals I have had the privilege to work with do not know a lot of everything, but tend to know one thing extremely well. They also have the capacity, if called upon, to learn other technologies quickly. Yet, they usually have a sustained interest in a single “stack”, and maintain that proficiency very well.

Don’t be fooled by job descriptions that speak to the contrary. Most are written by recruiters and non-technical folks from human resources who want the largest possible audience to apply. It’s more likely they have an immediate need, and the only way to know for sure is to send in your resume. An interview will reveal the truth, and if indeed there is such an unbelievable need, you had better be ready to request an unbelievable salary, because you will be working unbelievable hours (or be applying for a spot as CTO).

There is also a glaring contradiction to the assumption that programmers should be experts in a great variety of languages and technologies, and that is that clients often want and need focused experience, including proof positive of said experience. Especially in smaller technology services firms, it is detrimental to try and maintain a know-all attitude all the time. In my experience the vendors who can’t own up to a core set of competencies constantly disappoint.

The most common argument of course is that you will soon find yourself out of work if you are unwilling to adapt and embrace new technologies. To a small extent I would agree, but for how long does FORTRAN and COBOL get to be used as the measuring stick? As a matter of fact, most of us will simply gravitate toward evolving technologies instead. If you were using ASP, then you’re more than likely using .NET and .NET MVC, or if Java, then Spring, and JSF, or if PHP, then OOP in PHP.

I don’t want to undermine the passionate few who do dedicate much of their life to learn in great detail all of these new and exciting technologies, but you are probably not in the ten percent. Quite possibly, you are one-tenth of a percent, and you are not the norm. To the rest of us I would say become the master of one, love it, be passionate about it, and take the time to enjoy your career.

One Response to “Master of one”

  1. Liz CW Says:

    A very refreshing article. As a part-time web developer, former C programmer, I often feel that I’m running to catch up with the train. I agree its vital to make some executive choices and just let some go by. Thanks for making my day!

d’bug shares tips, tricks, and advice with Web development professionals