12/08/2016 01:44 pm ET Updated Dec 09, 2017

Does College Make You a Better Coder?

Does college make you a better coder? originally appeared on Quora - the knowledge sharing network where compelling questions are answered by people with unique insights.

Answer by Hadi Partovi, CEO,, tech entrepreneur/investor, on Quora:

Does college make you a better coder? I get asked this question quite a lot, both in my role at, helping bring computer science education to more schools and students, and also as an investor/adviser who has helped dozens of startups with hiring software engineers. A recent Wall Street Journal article sparked my interest in writing a reply.

I should say upfront that this article is entirely my opinion, formed based on my personal experiences. The largest tech companies must have plenty of data on the success of engineers in their workforce, correlated to education background. I'd also add that at, my goal is to help all students get foundational exposure to computer science (just like I learned about photosynthesis or electricity in high school) regardless of whether they want to become lawyers, architects, or software engineers.

My short answer: to be a fantastic software engineer requires a combination of both the education background and the real-world hacking experience. Neither is a substitute for the other.

A university education in computer science will teach concepts that most hackers never learn on their own (unless they're taking university courses online). Here are some examples:

  1. Learning the theory behind algorithmic complexity, to be able to prove the fastest way to implement a solution to a problem.
  2. Designing really complicated data structures especially in a multi-processor environment, to be able to come up with the most optimal data architecture to build something as complicated as a Facebook newsfeed, which is personalized differently for every individual user, pulling data from across a billion profiles.
  3. Understanding the math behind cryptography or compression algorithms, and coming up with entirely new ways to encode/decode, or compress/decompress data.

I'm not saying that these topics are completely inaccessible to somebody who hasn't had a university education, but rather they're not topics you naturally run into and solve on your own when building an iOS app on the job. They require pretty deep study, often with the help of a dedicated teacher, over a longer period of time.

Meanwhile, hacking at home or on the job will teach critically valuable practical methods that most university graduates don't learn in any class (except in summer internships). Here are some examples:

  1. The syntax for some of the most popular programming languages used in the workplace - whether it's Ruby, ObjectiveC, JavaScript or even HTML/CSS - most universities don't teach these languages. Universities mostly teach in C++, Java and Python. I don't mean to suggest that Java or Python are bad languages, but if you require a deep, existing knowledge of a different language, that's usually only available from experience outside the classroom
  2. How to build HTML that works across all the different browsers, including on mobile phones. Not exactly fun work for any software engineer, but it's absolutely critical to most web development. As somebody who led the original Internet Explorer team in the 90s, I'm painfully aware of the problems caused when Microsoft stopped releasing new versions of IE and fell behind in its support for Web standards (even the Web standards it played a role in inventing!). Either way, working around cross-browser and desktop-to-mobile compatibility issues requires experience and working knowledge of different versions of different browsers, and there's no substitute for having done it before.
  3. How to integrate with any existing major platform - whether it's the iOS platform, Android platform, Facebook platform, xBox platform, Salesforce platform, Twitter API, or hundreds of smaller platforms, almost none of these are taught in any university class.

At the end of the day, the best engineers have both the education and the practical experience. If a company requires immediate and deep working knowledge of a specific platform or language, there's absolutely no substitute for the experience. But a sharp, passionate college-educated computer scientist can develop that experience with enough time.

Any programming language or platform can be learned in a month and mastered in 6 months on the job. But a college education takes years of dedicated study. As a result, if I'm forced to choose between education and experience, I personally choose education. Of course there are exceptions to every rule, and there are many college-dropouts who are hire-in-a-heartbeat geniuses. But to be safe, I recommend hiring for both. And for the hacker who hasn't gone to college, I'd recommend taking a university data structures and algorithms course online.

This question originally appeared on Quora - the knowledge sharing network where compelling questions are answered by people with unique insights. You can follow Quora on Twitter, Facebook, and Google+.

More questions: