There are a million questions on the web asking the same question: “How do I learn [put in a random programming language or framework] the fastest way?” Most of the time, the answer is a website, an e-learning course, or a video. Though these resources might be an excellent start, they quickly slack in efficiency with a growing level of knowledge. This is because you rather seldom understand the whole context or even get the purpose of the concept at hand. You thereby take a path your brain will find hard to follow. For a more brain-friendly approach, you should jump right into the language or framework, right after you covered enough of the very basics. But it would be best if you read on before closing this article to get the whole story.
People are, in fact, different, and that is rather amazing than a burden. Diversity of personalities and teams are of great value for any organization. Different preferences, points of view, and approaches are key factors for balanced and thereby healthy and efficient teams. That said, as there are different types of people, this approach might not be for everyone. There is a kind of classification for developers that relies on the Top-Down and Bottom-Up methodology. This is not a sharp separator or black and white thinking. This concept should help people identifying a better way to approach their computer science learning goals.
Top-Down Computer Scientist
The Top-Down engineer chooses the way of going from abstract to practical. So, from the concepts (top, abstract) to the application (bottom, practical). These people usually do naturally well in school, or university as they need a rather low amount of practical experience to understand concepts. These people learn great with books or any other kind of theoretical resource. Jumping right into projects is definitely not the correct approach for people who count their-selves into this group of computer scientists.
Bottom-Up Computer Scientist
In contrast, some people are more likely Bottom-Up computer scientists. Bottom-Up engineers usually find it way easier to try out things, thereby starting at the application (bottom, practical) to understand the overarching concepts (top, abstract) afterward. These people tend to have the so-called “purpose-problem” when learning with purely theoretical resources. (Disclaimer: The purpose problem is nothing scientifically proven, in truth, I created this term myself, as I did not find any studies with psychological evidence for this). If they lack a purpose and context for concepts, they find it rather hard to understand and memorize them. As you will have guessed by now, these people tend to be pretty successful with the “jump-right-into-it”-approach.
Something that will definitely happen when you choose the Bottom-Up approach is making mistakes. But instead of being ashamed, you should be grateful to build up these experiences. The very best of any discipline does not only know about the things that work well but also about the things that don’t work well and why.
A reporter once asked Thomas Edison how it felt to have failed a thousand times with creating a light bulb. Edison replied that he did not fail a thousand times; he simply found a thousand ways of how not to create a light bulb. And that is the way you should handle your mistakes. Sometimes there is nothing as helpful as the fact to have failed with something. I myself, for instance, understood the importance and application of many computer science concepts after I successfully ignored them for a while.
Many, especially large companies, maintain a concept called postmortem document. When a project fails, the team that has worked on that project will write it. These documents do not exist to excuse failure or to blame someone in particular but a summary of what went wrong and why. Mistakes are not a problem but a boon. Once done and solved, they can save large amounts of money and time if everyone has access to it.
Healthy Culture of Error
Google, for example, does especially well here. They celebrate failure and even award employees who did so. This not only fills the purpose of spreading the knowledge and learnings but also promotes a healthy culture of error. A healthy culture of error fills various purposes. People who do not fear failure are usually way more innovative, productive, and comfortable asking any question, no matter how stupid it may sound.
Once you mastered something, you may offer your help to others, because one-to-one mentoring is a very efficient way for people to learn new things quickly.
Also, many people lack any skills in computer science and may need your help. Even though I cannot tell you where to find them, I can promise you, you know someone, or someone else does. Helping others is a great start and beneficial for both of you. To end with something scientifically proven, at least: Giving something to someone else is even more fulfilling than receiving something. So go out there and spread kindness.
If you are still having a hard time finding something fitting and are interested in writing, you may contact us and write technical articles to inspire others!
I am a computer scientist and entrepreneur from Germany. I chose to work in computer science because I love building things and improve people’s lives.