5 Things I've Learned Teaching Hundreds of People How to Code
Our company has taught a lot of people how to code -- with more than 1,200 total enrollments selected from over 3,000 applications submitted for our programs. Reflecting on the past three years, I couldn't help but pause and think how far we've come from our first class of 17 students.
It's been a roller coaster, to say the least. But along with the ride's bumps, turns, ups and downs, I've learned some pretty profound lessons.
1. Education is one of the most fulfilling endeavors.
Even today, I often think about the early success stories that drove me to build our program from its start as a very intensive side hobby.
I initially found my way into the coding industry as a self-taught programmer. I'd worked for a variety of startups over nearly a decade. I'd learned an incredible amount about building things, solving problems and running a business.
But I'd never before built something with the ability to make such a successful impact in another human being's life. I began teaching people how to code as a side project in 2013, and it didn't take long to see positive effects. I've witnessed people take incredible, empowered leaps forward into lucrative careers that dramatically change the trajectory of their lives. These were the same people who came to the program hating their jobs, desperately needing career advancement or simply unemployed at the moment. Nothing else I've ever built can come close to making those kinds of claims.
I believe this is one reason why so many people love teaching. There's an innate passion for connecting with another soul to impart knowledge, then watching someone learn new skills and better themselves. Many of our teachers describe this as moment "when the lights go on" behind a student's eyes. It's thrilling, fun and wonderfully impactful.
2. Almost anyone can learn to code.
There's a common misperception that in order to work as a coder, developer or programmer, you must be a mathematical genius or hold some kind of an advanced degree. This may have been the norm in decades past, but it's far from true today.
There are two reasons for this shift.
First, as software continues eating the world, there's a nearly impossible-to-fill skills gap that's widening between the number of programming-related jobs and the people skilled enough to fill them. Combine this insatiable demand for talent with a sub-cultural shift of regarding labels such as "nerd" and "dweeb" as positive indicators of nuanced passion rather than pariah-like brands, and you end up with many more people interested in coding. This is bad news for elitism but great news for diversity.
Second, the field changes drastically. This is due in part to a wider variety of jobs requiring talent in computer engineering. The lines are blurring everywhere. There are still companies with traditionally siloed divisions, but more businesses see real value in crossover among marketing, sales, customer services and other departments. Think of the the "growth hacker" label as a prime example.
Our program has welcomed artists, graphic designers, political scientists, former fast food workers, salespeople, MBAs and many others. And they've excelled. In fact, this diversity of skill sets is an asset as our graduates bring unique perspectives to our program, their new employers and the coding industry. Fin Tech companies love accountants-turned-programmers. Startups love engineers who can wear multiple hats.
The field is as accessible and diverse as it ever has been, and it's only getting better.
3. Arrogance is learning's No. 1 enemy.
We've selected, taught, evaluated and seen hundreds of students successfully graduate and move on to great careers. The longer I'm involved, the more convinced I become that certain traits and characteristics prove detrimental to learning. No. 1 on my list is arrogance.
Arrogance is a natural enemy to learning because learning itself requires recognizing there are things you don't yet know and must work to master. People who struggle with a sense of arrogance or superiority want only to prove how much more they know than others. They create nearly insurmountable blind spots about their own deficiencies and overestimate their mastery of topics.
These people are hard to teach because they constantly seek to one-up the teacher or ask questions that aren't really questions. Instead, they're comments designed to showcase personal expertise on the subject. They're equally difficult to mentor. They lack the humility needed to understand it's not the syntax itself that's frustrating them, but rather their own inability to master the correct syntax.
Even more lamentable, arrogant people often find trouble getting hired. When or if they do land with a employer, they find fit with the wrong kinds of businesses. Not surprisingly, arrogant individuals are drawn to companies that value false bravado over a humble earnestness to learn and grow.
4. Classrooms should be laboratories.
Ever been to a restaurant where the menu always changes? It's a bit of a gamble for you and the restaurateur, too. A shifting product line is risky because humans generally seek goods and services that are predictable and consistent in quality.
Early on in our program, we worried greatly that students might perceive our curriculum, teaching methods or assessments as far too malleable and iterative. We didn't want to send the wrong message or contribute to false perceptions.
The benefits of this dynamic type of instruction far outweigh the risks. We view our classrooms as laboratories. We're constantly experimenting with new methods, curricula options, tools and educational delivery styles to produce optimal results. We're a Research & Development institution that produces a high-quality product -- it just happens to be educational in nature.
How I wish I could see more of this in traditional education! The most economical incentive for educators leads them to build a lesson plan once and apply only minor tweaks 10 minute prior to class. In reality, this is both selfish and completely counterproductive. Curriculum development should be iterative. And teaching methods themselves should be fluid, ever-improving and subject to nearly real-time adjustments. To remain relevant and provide value, educational institutions must take a hard look at what they're teaching and how they're teaching it.
5. So much more needs to be done.
Here's one among my thousands of paranoias that used to keep me up at night: "What if we put ourselves out of business?" I assumed there was some finite market of people ready to learn to code and an equally finite number of businesses wanting to hire them. It feels as silly now to type it as it does to see it on the screen. Obviously, our steady stream of applicants and successful hires proves that one fear, at least, was unfounded.
Companies will continue to need talented workers who can perform, learn and develop their skills in-house. Similarly, people always will look for better and more efficient ways to learn new concepts without gambling on a cost curve that far outpaces inflation. For now, we're talking only about code. But we realize many industries have yet to be born. The standard "ivory tower" educational approach will be ill-suited to serve these emerging disciplines.
The world is changing at an increasing pace. Likewise, our views on education must adapt. We need to empower more people, prepare them better and teach them more effectively. The opportunities are out there, but we can't rely on what's always been done. And we certainly can't pin our hopes on outdated methods and overly bureaucratic educational institutions. Less than 20 years into the 21st Century, it's clear these "answers" will be woefully insufficient to meet the demands. Technology continues to improve at exponential rates -- education has much work ahead to catch up.