Some ten years ago, I was employed by a local private college to teach web development at weekends. A few years earlier I had taught myself a bit of PHP, html and css. Enough to build a decent ‘database driven website’, as they were called in those days. But I only knew the stuff I needed for that startup and nothing else.
I didn’t realise it before I signed up because I’d taken the job to just boost my income, but teaching programming is what taught me a lot of what was to become a very useful skill. A year later I used the skills at another internet startup where I built a content management system for their content publishing business.
Another year later, reading 7 Habits of highly effective people (good to read it if you haven’t, and if you have, you probably know reading it again will reveal new things) I could clearly relate to the learning practice recommended in the book. Early in the book, Covey advises that the best way to get the habits, is to teach them soon after learning them. This, he said, would ensure that the person understands deeply what they are learning, and it also commits them to uphold what they teach.
For me, just knowing that I would need to teach someone who was very unfamiliar with even the basics of web development (some didn’t even have the prerequisite knowledge required thanks to colleges not caring) ensured I understood it enough to explain it in different ways to different people in the simplest of terms.
We have all been in situations where even setting up your development environment gets so complicated you want to put it off for another day. If you will need to teach someone how to set up their environment, there’s no quitting. You look for the answers until you find them, and you quickly discover that they are easily findable. You realise that the reason we quit so early is because we don’t have to be accountable to anyone. It’s as if we’re looking for the first available excuse to retreat to our comfort zones.
It can be learning Ruby on Rails that you have been putting off for more than a year now. Committing to teach it means you have to start learning it. Why not sign up to teach a lesson called “Basic a introduction to writing your first Ruby on Rails script“. Once you have someone signed up for that class, you have to learn it.
Or maybe you don’t even know if Ruby is the right language to learn. So maybe teach a lesson titled “Choosing the right programming language to learn: The dead simple basics explained for non-programmers“. My point is that you don’t even need to have some complex prerequisite knowledge to teach (to learn). You just need to know you are embarking on something you will need to teach.
Can be Android apps development. Or Objective-C. Or the deeper waters of data structures. Whatever it is, signing up to teach it is what will spur you to learn it and understand it.
The only reason I’m harping on about this common knowledge is that we have a skills problem in Zimbabwe. In the world in fact. Even as open as the internet is, and as filled as it is with great tutorials about how to do stuff, we still have a skills problem. Not enough people are learning how to write code.
Even at a non-engineering level where you are building atop existing frameworks (essentially assembling pieces together like they do to cars at Willowvale), we don’t have enough people. In fact, especially the piecing together kind of programming.
If we would teach each other, we would all learn faster and be able to apply those skills on our apps. Be able to quickly hack simple code together to rapidly test out ideas. Fewer ideas would wither away in our heads untested. You don’t need to become a software engineer; you just need to be able to build the first version of Twitter, or the first version of Yo. Those kind of things can be done by an average person who has no background at all in computer science. You can go on and hire proper engineers when you have the problem of needing to scale the app so that it can handle 10,000 users a day. What a good problem to have that will be.