Self-Taught Programmers vs CS-Educated Programmers

Foodfight

Lately I've been thinking a lot about self-taught programmers vs those formally educated thanks to this question on Quora that I found through Hacker News

I've worked with and for many programmers throughout the years, both self-taught and formally-educated. I've had a wide array of experiences. Bad self-taught ones and talented self-taught ones. Bad formally-educated ones and good formally-educated ones.

For the record I'm a formally-educated one from a good school. But before I went to college I was self-taught and after college I consider myself to be self-teaching all the time. Learning should never end.

Learning a Language vs Learning Programming vs Learning Computer Science

I think it's worth making a few distinctions in this debate.

A computer science education uses programming and a language to teach theoretical concepts. This is why those formally-educated may lack some of the skills that come with work experience such as clean code, commenting, and version control. Simply put, most CS programs don't consider these obligatory skills to graduate. Ergo, in the process of learning computer science, students learn to program and they pick up a few languages and spend some trivial time around the aforementioned practical skills.

On the other end, typically self-taught programmers take the other approach. They start with a language and then they learn programming and, along the way, learn some computer science. Without a doubt, there are hackers out there who pick up the same texts used at university to learn computer science theory.

Perhaps this is a subtle distinction but there's a difference. 

Hello, World!

Helloworld

For example, I love learning new spoken languages ("Obrigado!") and have spent a good time learning them through Pimsleur language learning courses. I even own some texts. But when I learn a new language, I'm not learning the concepts of language all over again. I already understand grammatical structure, the relationships between subject/object/verb and the uses of prepositions.

Learning a new language simply teaches me to communicate the same thoughts and feelings but in a different way. This is the same with programming languages: you accomplish the same tasks in a different language that has different syntax. 

But language is simply a vehicle to manage communication (amongst the other ways we communicate). We use it to do much more complicated things like tell stories, convey metaphors and similes and express emotion. In this same notion, languages are simply used to create complicated algorithms, large platforms and other complex uses.

So what's the point? Formally-educated computer science students are better programmers? No.

The point is that learning a language and learning to program is really one small piece of computer science. The truly talented self-taught programmers are really self-taught computer science students. Also learning to program and learning a language isn't exactly equivalent to a formal education. 

But does it matter?

The truth is that for some it does and for some it doesn't. But it's the same question if you look beyond programming. Does getting a college education matter when enter the work force?

After all, in most trades, how often do you use what you learned in school in your job? Typically one learns theoretical concepts so they can understand the practical implications of their work. Computer science is no different.

Like other trades, there will be talented self-taught people. But why do employers pay so much attention to education? Because it's a filter. It's the probability of hiring someone who is of high caliber. It says you were able to make it through this rigorous program.

Again, this is not to say that one is better than the other. I'm simply putting forth why I think distinctions are made.  

Personally, I think the differences come at the top end. I think computer science students who've spent a lot of time doing research (particularly Ph.D.s) gain something that can't be self-taught.

For the rest of us, I think many skills can be learned outside of school and the quality of a programmer has more to do with determination and time spent practicing their trade every day and spending time constantly learning. Sometimes education is a crutch that people know they can fall on and they become lazy. Whereas those who don't have that degree are incentivized to spend much more time and effort honing their trade which can make them better in the long run. I see these two situations happen all the time.

Anyway, I wonder how much this question matters in the long run. So many of my classmates from school have gone in different directions with their careers. They've become product managers or got their MBA and now have more of a business role. Others have become managers. 

In the Workplace

Now that I'm an entrepreneur and looking for co-founders / core engineering team, I can tell you I don't care which school you came from. I just want seriously smart, passionate and determined hackers on my team. So if you're interested in a location-based social network that helps professionals network at events using their mobile device (PLUG!) please read more about SpotSift.

Le Chef

Le Chef

Entrepreneur, hacker, and avid Cal football fan.

Product guy with a passion for consumer web and social products.

Hacker with a penchant for clean code.

Cal football 'til I die. Jeremy Lin fan boy.

Archive

2012 (2)
2011 (10)

Contributors

by

| Viewed
times
Posterous theme by Cory Watilo