Hacking and Computer Science Education

Note: This post isn’t talking about everyone. It’s talking about “hackers.” Hackers are defined as, “Individuals who try to write interesting software and use computers as a medium to express themselves.”

Perhaps one day “computer science” will, like Yugoslavia, get broken up into its component parts. That might be a good thing. Especially if it meant independence for my native land, hacking. — Paul Graham
Hackers need to understand the theory of computation about as much as painters need to understand paint chemistry. — Paul Graham

The preceding quotes really got me thinking about the future of computer science education. Fundamentally computer science involves math, heavy theory and algorithms. I’ve been thinking as of late about the future of such an education. Back in the 90s computer science was much less popular than it is today and the programmers back then stood true to what computer science is. Now, I feel like that’s not quite the case and I believe there will be a shift away from studying computer science and more to hacking / hacker schools.

I believe this is the case because:

  1. Lots of curriculums are rigid and start really low (which goes against current trends).

2. People want to create products and abstraction is the hot thing.

3. School becomes a barrier.

Point 1: Curriculums are rigid and and start really low.

Fundamentally brick and mortar education isn’t going to change. There’s too much at stake and it probably isn’t feasible for a school to change curriculum. This in itself is a massive issue especially in computer science. Now, people are taking the initiative to learn how to code early in their teens (or even earlier in some cases). In learning in your teens you create products and you’re exposed to computer science concepts out of pure necessity. (Ex. If your algorithm is too slow the game won’t be fun. You have to have classes and good object oriented principles to create a custom feature etc.)

This I believe creates two problems for computer science education. First, when hackers enter first year they are sometimes being taught introductory material that they have been exposed to before. Sometimes they are only exposed to new material in upper years (which with the hacker mentality is way too long of a wait). This ends up creating problems because you’re caught up doing string manipulation based assignments, learning about classes etc. for quite a bit of time, which is not optimal. Second, I believe in the long term it will cause computer science faculties to lower standards. If the wave of hackers is really massive (which current trends show), people aren’t necessarily interested in the content and the institution can’t move fast enough people will inevitably get lower marks even though they understand the content. (Marks doesn’t always equal understanding the content). This could really cause a lot of people to fail and standards will have to be lowered.

Point 2: People want to create products and abstraction is the hot thing.

I really believe the reason computer science is popular is because people want to make stuff. Whether it’s a silly app or some world changing technology. You can’t get the former from studying computer science in school as that’s not what a computer science curriculum teaches plain and simple. I don’t believe studying computer science will get you the latter either. If you’re truly passionate about creating a world changing technology with software you should take on the initiative to self study (the resources online are staggering! Research papers on amazing technology and MOOCs are readily available at a click) and hack around to see what works and doesn’t.

In addition to this, abstraction is the hot thing. Hackers and the flock of incoming students don’t want to deal with pointers, memory allocation and all the like. People want abstraction. They want to write such high level programs that it’s essentially like English and they want to do it as fast as possible. That in itself goes against the core of computer science. But goes right in line with hacking / creating products as it’s advantageous to use the most powerful tool possible. Often times that tool is extremely abstract.

Point 3: School becomes a barrier.

Traditional computer science education creates a massive barrier for hackers and I believe it caps off their personal growth. I know so many amazing hackers who when given free time create products that people use / download. (I’m not just talking small numbers, I’m talking 500k+ and in some cases 2m+). But that free time is so scarce because of the rigour of computer science education. This wouldn’t be as bad if what you learned in class often related to your hacks, but I find that’s rarely ever the case. (When will you have to implement [insert your favourite sorting algorithm name here]?) And as I mentioned earlier if you do, out of pure neccesity you can learn and the +/- in time works in your favour.

With such a barrier you have to think about what could be and the inner frustrations hackers trapped in computer science face.

If computer science and hacking are separated (as Paul Graham hopes) perhaps there will be less of a stigma with dropping out of a computer science program to hack (or join a Hacker school). This could potentially release a new wave of interesting products that solve interesting problems.

All in all, I really believe there’s a gap in computer science education and the hacker mentality. I believe this will continue to escalate as people start coding earlier in their lives.

It will be interesting to see how things like MakeSchool will progress.