Wednesday, February 28, 2018
Self-taught (but Not Self-educated)
When I was in school to be a teacher, the first iPhone came out and about a year later the first SDK came out. I knew immediately that I wanted to build something for it. The first app I (poorly) wrote was to help me check answers for some students I was tutoring. But I kept learning from my mistakes and read a ton.
Back then it was a lot easier to be a single developer on the App Store so I was able to make some extra money on the side while building a portfolio at the same time. That portfolio got me my foot in the door as a developer as I transitioned away from being a teacher. Having projects that were available for employers to see and play with that I could say I built from the ground up was vital to the transition.
Building something to solve a problem that you are facing or in a domain you know a lot about is important. It keeps you motivated and lets you focus on tackling the next technical issue rather than trying to solve for a problem you don’t know about. Start simple and keep making it better and better.
Some caveats to learning on your own… it takes a lot of time and effort. You have to be prepared to fail a lot and be willing to keeping coming back. I was lucky to be able to spend time during college and then having a half-time schedule my first few years as a teacher. I was privileged to not have to work full-time in college and had no kids or dependents to take care of.
Now some benefits to learning on your own… you are going to have different skills than someone coming from a comp-sci background. As a teacher I facilitated discussions and lessons with 20-30 students all with different needs, interests, and skills. That translates directly to being able to talk with your team to figure out what you are building and how it should be built. Coming in and being to scaffold conversations and identify where someone is coming from is a huge advantage. That’s not to say it’s impossible to come from a comp-sci background with these skills but I don’t think there is emphasis on these more ”human” skills.
These skills are more important than ever. In the last few years, I think we’ve seen that tech sector get into trouble when we forget that when we build something it gets put into a world of humans. Some examples of this failure:
- Fake news comes from the fact that Facebook and Twitter enabled everyone to communicate with each other directly (which is good) but failed to give the tools to discern who should be trusted (or who is even real).
- Jeff Bezos asks for ideas of how to use his fortune to help the world, but doesn’t see that on of the biggest things he could do is pay his warehouse workers more and let them unionize.
- Uber and Lyft offer lower prices than existing taxis but run at a loss and only exist on the bet that self driving cars come before the VC spigot runs out
Computer science education needs to put an emphasis on re-humanizing the field. For now, having some experience outside of it has some advantages.