There are a many different educational online platforms for becoming a developer. Just to name a few: Codecademy, Udacity, EDx, Udemy and Coursera. Their appeal is very strong: take a few online courses and then you can get hired as a programmer. Udacity even has a money back guarantee. With affordable online courses like these, why would you choose to learn any other way?
There’s a very simple reason: these platforms teach you a very limited number of skills needed to become a developer, mostly related to following memorizing the steps needed to build a specific pieces of software.
Let me explain with a simple metaphor: becoming a developer through online courses is like becoming a chef by looking at recipes on Youtube. Indeed, if being a chef was simply a matter of following recipes, then all the resources are at your disposal at no cost. You just need to find the motivation to hunker down and follow a few hundred hours of cooking videos from the convenience of your own kitchen.
As any chef will tell you, being a chef isn’t about following recipes. A chef needs to be able to assess the quality of produce, manage his inventory, manage his staff and suppliers, learn about new cooking techniques, invent new recipes and adapt old ones. Chefs also possess something else that’s valuable: a network of relationships with other chefs. Through this network a chef can learn about new cooking techniques, get advice about the problems they are currently facing and discuss the market trends facing the industry. Academics in the field of sociology have called this a chef’s “social capital”.
There are two ways to learn these skills and gain social capital. The first, and most obvious, way is to simply go to culinary school. At culinary school you will get the opportunity to interact with your teacher and peers and, through these learning communities, you will learn many of the skills needed later on and, furthermore, some of the theory needed to make decisions at the workplace. Cooking schools aren’t cheap, but they provide a clear and unambiguous path to success.
The other way is only available to a select few: start working on your own culinary projects. With sufficient passion, would-be chefs can learn these skills and build their social capital by creating things they are passionate about. Indeed, many chefs have not gone to culinary school and have instead honed their skills through their own projects. Some mentorship or formal instruction might have sped up this process, but even without them they did well for themselves.
Let’s look at one particular skill that is of extraordinary importance, yet is very hard to learn by oneself: asking another chef for help. Here’s the setup: you absolutely want to make cheese cake but you’ve never done it before. You make a small batch just to test things out and it turns out horrible. The cake is lumpy and sour. Undeterred, you seek out the help of your friend who lives in another city. How do you approach him? What questions do you ask him? What kind of information would be relevant to him? Which words do you use to communicate all of this? You can imagine the difficulty here. Now multiply it by a hundred.
When I would encounter an insurmountable problem at Google, I would provide a full report of what I did and how the behaviour of the system was different from what I expected. I made sure to make appropriate use of developer lingo and to provide any pieces of information that I knew they would find useful. I also went through the process of isolating the problem so that my fellow software engineer would be able to quickly understand and help me without having to understand a complicated system.
To contrast When I teach software development, I often have students point to the screen and tell me, point blank: “Why doesn’t it work?”
How does this apply to programming? Codecademy, Udacity, EDx, Udemy and Coursera can teach you the steps to build a software system like a mobile application or a website. However, they cannot teach you other very important skills or give you the social capital which are necessary to succeed.
As a software developer at Google I would run into these problems all the time. I constantly had to work with systems that were completely unknown to me and the documentation provided was often inadequate or inaccurate. If I wasn’t able to get the help I needed to solve an issue, I would either give up or spend a ridiculous amount of time to solve something that should have taken 5 minutes.
The next time you’re considering following an online course promising to make you a developer, keep in mind that you’ll become more of a development recipe follower. This is all you need if you have software development on the brains and you’ll stop at nothing to achieve your goals. For the majority of aspiring software developers, however, you will need to get additional skills by interacting with peers and seasoned professionals.