Reading code is one way to start bridging the gap between knowledge and skill.
I believe that code reading is one of the most underdeveloped skills in new software engineers. It is underdeveloped because it is not taught well or practiced often, for a variety of reasons. This lack of code reading skill then contributes directly to a lack of code writing skill.
When you read books, watch videos, or listen to podcasts, you’re getting an abstract, distilled view of the world. These help you to build mental models and maps, and to ease into new ideas. But remember, The map is not the territory. The reality of software engineering is in the code, and in the interactions between the people who build the code, not in the tutorials and the books.
Reading code will help you to understand how other engineers applied their knowledge of software engineering to solve a specific set of problems. Reading code also allows you to test your comprehension. What is this code doing? How does it work? Why did they implement it this specific way, and not some other way? How does this relate to other ideas I’ve been learning? This is where you start to bridge the gap between knowledge and skill.
Reading code will help you to understand how other engineers applied their knowledge of software engineering to solve a specific problem. It helps you to see how your peers, and industry experts, transition from theoretical knowledge to applied skill. You should start to see clear connections between the introductory material, your deeper reading, and these practical applications.
Reading and navigating unfamiliar code relies on existing knowledge and helps build new knowledge. You should strive to build your code reading fluency to the point where you can open almost any repository, in almost any high level language and have a general understanding of what’s going on. There will be some details that you don’t immediately understand, because the language, libraries, or domain are unfamiliar, but you should not often feel totally lost.
For almost any type of problem that you will need to solve in your software engineering career, some other engineers have already solved similar problems, and have shared their source code in public repositories, Learn from them by reading their code!
Read more about the other modes of learning for software engineers:
- [[Four modes of learning in software engineering]]
- [[Learning Mode 1 - Broaden Your Knowledge with Introductory Content]]
- [[Learning Mode 2 - Deepen Your Knowledge By Reading Books and Documentation]]
- [[Learning Mode 4 - Build Your Skill by Writing Code]]
- [[Break Out of Tutorial Hell and Overcome Impostor Syndrome]]