Passion defines programmers

Jeff Attwood over at CodingHorror has a good post on Skill Disparities in Programming. I thought these two statements were particularly insightful:

  1. Unless you truly enjoy programming you should seek another profession. Be realistic: are you programming to collect a paycheck, or are you programming because you are driven to? I know this sounds harsh, but it's an economic reality-- in an enviroment of global offshoring, the world simply can't support any more highly paid mediocre coders. There are a hundred thousand well educated Indian developers who will do what you do at a fraction of the price, and thousands more coming of age in other third world countries. Blame the Internet if you want, but just being "good with computers" is no longer a free ticket to a high paying tech job.
  2. If you're reading this blog (and by this blog, I mean any programming blog at all), the above almost certainly does not apply to you. You're already spending your own personal time on professional development. I'm not saying you should spend every waking moment in front of a computer like I do-- it's unhealthy-- but the only way to keep our jobs is to actively keep improving. Treat your job like what it is: a highly skilled engineering profession that takes ongoing study.

I think Jeff nailed it. The circumstances surrounding our industry have changed. Technological skill is no longer limited to a select few; the average competence of the population as a whole is increasing. Simply "being good with computers" is no longer a differentiator. This will only become more true over time, as technology penetrates more and more aspects of our society. There will come a day when using a computer with be on par with writing or speaking -- it will be a skill that you need to have just to function in society. Today, no employer pays a premium for people who can speak their native language. In a few years, the same thing will be true with respect to computer use.

The same phenomenon is happening in the programming space. A few years ago, the number of people who could program a computer was very small with respect to the overall population. If you could do *anything* related to programming, that skill demanded premium compensation -- regardless of how good you were. Unfortunately, times have changed. Advances in development tools have drastically lowered barrier to entry in the industry. Advances in communications technology have globalized the marketplace. If you want a high-paying job, it's no longer enough to simply be able to program -- realistically, the number of people who are able to program is already large and steadily increasing. To succeed, you must differentiate yourself from the rest of the market and prove to your boss that you have something that nobody else has.

It is not skill or experience that differentiates within our industry, but passion. In todays world, skill is transitory. Technology moves so fast that a skills in one area are often made obsolete and irrelevant by new advancements. The skills in demand today are at risk of being left in the dust when the technological world changes. Similarly, raw experience is a phantom indicator -- 10 years of experience on outdated and irrelevant technologies is not necessarily an indicator for success. If you were hiring for a .NET web services architect, would you hire the guy with 15 years of experience building COBOL solutions for mainframes simply because he has 15 years of experience? Probably not. Experience can be a red herring in this business.

Rather, it is passion for the subject at hand that truly differentiates one programmer from another. Passionate people drive themselves to continual self-improvement not because they have to, but because they want to. From passion flows skill, and from skill flows experience. If that internal hunger for learning is there, passionate people can adapt to anything that the technology world throws at them.

The bottom line is that in this industry, if you don't love what you do you will eventually be eclipsed by someone who does. It's only a matter of time.

#1 Darrell on 9.07.2004 at 7:29 AM

I agree about passion.Someone that is willing to learn on the own time and master something very quickly is a key contributor to any team.And if you add in the ability to work well in ateam, you're golden IMO. Face it, how many software projects are developed individually nowadays?Not many.:)

#2 Nino on 9.07.2004 at 5:54 PM

Well said, Steve.

#3 Mats Helander on 9.08.2004 at 10:21 AM

Brilliant post! I think perhaps the best blog post I've read!"From passion flows skill, and from skill flows experience"You just coined my new motto! :-)/Mats