yaobin.wen

Yaobin's Blog

View on GitHub
27 January 2021

Rethinking of Software Development Learning

by yaobin.wen

1. How to Learn

It’s easy to get overwhelmed by how much there is to learn. People have talked about this in many articles so I won’t bother to talk about it anymore. Just search “software developer feeling of overwhelmed” to find them. Here are my thoughts of how to learn:

1.1 Mix quick learning and slow learning

Quick learning is to learn just enough knowledge to solve the problems at hand. Quick learning can help you make progress quickly but may not give you a solid understanding of the technology. Quick learning is for short-term benefits.

Slow learning is to better understand the technologies you need to use. Slow learning takes time but can give you a solid and thorough understanding of the technologies so you will make fewer mistakes and learn related technologies faster in the future. Slow learning is for long-term benefits.

Quick learning can be done by searching on Google. Whenever I find some subjects that I would like to look into further, I’ll put them to a list and create a series of “Tech Dash” sessions to study them. A “Tech Dash” is a personal study session that I usually do over the weekends, sometimes during the evenings if I don’t have other arrangements.

1.2 Stop listing; start integrating

If you search on GitHub, you’ll find many repositories that list a bunch of awesome stuff. Although I believe such lists do have some value, they have more serious problems:

The knowledge doesn’t belong to you if you simply list it somewhere; only after you integrate the knowledge into your own knowledge base will it truly belong to you.

Stop listing; start integrating. Create your own knowledge base in some form: It could be a bunch of Markdown files in your GitHub repository, or could be a huge mind map on your Google Drive. When you come across some new knowledge, try to find a place for it in your knowledge base. You can still append new items to the list for further integration, but do not just list them.

1.3 Build side projects

Practice solidifies learning. If you have ideas for side projects, try to build them using the knowledge you have learned, or let the side projects lead you to learning what is needed to complete the projects.

If you don’t have ideas for side projects, try to re-create the wheels: How about re-implementing a simple container or a simple web browser?

2. What to Learn

Learn the technologies and theories that are fundamental and may not change very much over time, hence less likely to be replaced quickly. For example, data structures, algorithms, design patterns, etc..

The technologies that have been around for at least 10 years and which people are still discussing today may be good potentials.

Another way I’m thinking about is to look at the undergraduate courses of the computer science programs of the top universities, such as Carnegie Mellon, MIT, Stanford, and UC Berkeley. These top universities usually know better what knowledge is more fundamental and important to the software development industry.

Tags: Learning