This is a personal reflection that I decided to share. It expresses my views of a subject and may contain errors or approximations. Feel free to contribute by contacting me here. Any help will be credited!


In engineering school, two inspiring software engineering professors taught us what they called the 3R rule for developers : readability, readability, readability. Softwares are developed by teams. The more readable the code, the easier it is to maintain, integrate, or extend. It is commonly accepted that a vast majority of developers spend more time reading code than writing it. Most of the code that we interact with is written by someone else. Unfortunately, reading code is a very challenging task. It requires capacities such as independence, concentration, abstraction, the ability to synthesize information, and connecting the dots.

In people’s minds, the super developer is someone who writes fast, incredible software with very good code. And, many schools focus their efforts on teaching how to write code.

The further I progress in my career, the more I feel that knowing how to read code is what makes the biggest difference.
Finding what isn’t working in a pull request that everyone has approved, solving a difficult error by debugging and understanding a framework’s internals, understanding code written in unmastered languages, or being able to work independently on any feature just by reading other people’s code.

We have entered an era where AI writes more code than developers. Writing code is no longer as impactful as it used to be. This partly explains why it is becoming increasingly difficult for junior developers to break into the job market. They are losing their ability to make an impact in the area they were initially trained: writing code. It has become easier, but reading and understanding code is still as difficult as ever. It makes the skill even more impactful in developer careers.

When we debug, we end up learning a lot about all sorts of parts of software. And the code we write after really digging into the existing code tends to be especially high-leverage. So go ahead, debug deeply, understand the reasons behind your bugs in library code, and dive into developments on your own without asking others for help or explanations. Of course, AI is immensely helpful when you’re trying to understand complex code in depth!

Code reading is uncomfortable and difficult. You have to be willing to dive into the unknown. You must accept that you won’t understand everything. But you can always find a starting point from which to gradually unravel the thread that leads to understanding.

Persisting on this path sharpens the mind and makes us better developers.