A New Way to Learn Tech Skills
If I had the resources, here's what I would build
Something has been on my mind for a little while. An idea for a large project that could revolutionize education — or at least make learning a lot more fun and engaging.
The Problems with Typical Education Approaches
Since I was a kid I've thought the way we learn is broken. We have arbitrary exams that measure little of consequence and we forget what we've learned as soon as it's over. We are largely taught not to cooperate when completing assignments, and we are taught that looking things up or doing things the easy way is "cheating". When you grow up and enter the real world, this education doesn't prepare us for the real world. When we get jobs, what matters isn't really how hard we work, it's the results we get and how well we can solve employers' and customers' problems.
Education is a frustrating experience for many people; it's not often pleasant or fun, and so often we feel like we have to learn things that don't matter. There are so many things I studied in university that I've never had cause to bring to mind since I finished the final exam.
One thing I really like about software development as a profession is that you don't need a formal education. There's no governing body that tells you that you are or are not allowed to be a programmer. If you can sit down at a computer, read some documentation, and get code running that solves a problem for yourself or someone else then congratulations — you're a developer.
But learning to be a software developer, especially a good and well-rounded one, is hard. There are many skills one has to learn — like working in a command line, algorithms and data structures, program construction, analysis, database optimization, markup languages, user interface design, and so on. Tech is a fast-moving industry so there are always new and (ostensibly) better ways of doing things. This is exciting but sometimes frustrating. It's likely a person could burn out trying to keep up.
Imagine a World...
A better way to learn might be a community that can take some of the best parts of learning in a real educational institution, but combine that with some of the best parts of online video game worlds. Instead of plodding your way through textbooks and stressful final exams, what if a developer education were a series of smaller, but meaningful tasks that could be completed for some kind of reward?
A good model for this could be an online role-playing game. Imagine playing World of Warcraft but it makes you a kick-ass web developer. You are a "character", you choose a "class" or career path (which, of course, you could switch at any time), and you complete "quests" which might involve building web pages for other people (or maybe non-player characters or actual businesses). Maybe some of these tasks are even real-world tasks that have a bounty on them that you can earn real money for completing. What if a small business wanted a home page? They could put it up for a bounty in this game.
As you complete tasks, you gain experience points or other various rewards that give you a standard way to show off how knowledgeable you are. And you could earn and learn as quickly or as slowly as you're comfortable.
I think this "world" could have many people working towards common goals and the player/students would be encouraged to help others with their tasks and would be rewarded for doing so, maybe a bit like on Stack Overflow. Players could learn and grow together and foster friendships as they progress towards their goals and become more skilled in their chosen fields.
I don't think this system needs to have high-budget video game style graphics or elaborate fantasy stories, necessarily — but that could be appealing to some as an enhancement to this system.
If you find this sort of content interesting, I'd love to connect with you on Twitter!.