It's Harder to Read Code Than Write It
matt-rickard.com
matt-rickard.com
What's difficult is if you don't already know the algorithm. Still writing code that does what you want can be done incrementally without fully knowing an algorithm and building it up from parts and edge-cases. This can lead to code with accidental complexity. Reading this kind of code is indeed difficult.
Code that's well written with any advanced or situation-specific algorithm can also be hard to read. Rewriting it won't help. It may not have been hard to write for the author who did know the algorithm. The best thing to do is document the approach, either in a PR description that can be found on GitHub from a git blame commit hash. Alternatively some choice comments can make it much easier to understand, e.g. before/after or loop invariants.
The problem isn't 'reading code' or 'writing code' as each statement is easy enough to parse, but understanding the whole may not naturally follow from understanding the statements.
So really 'writing code' is often spelling out what you already know, which is easy. Reading code to gain an understanding of an approach you don't already know is a different skill than writing, so will be more difficult without practice. More often than not however is that there is excess cognitive load from poor naming of methods, variables, classes, or subdivision of the problem.
Writing code only appears easier. But once you factor in the cost of it becoming correct over time it's much harder.
In other words, our ability to modify existing code will degrade.
I can read almost any block of code from almost any language and I bet almost everyone can as well.
You typically dont need to be able to even write code in a given language to understand it.
Of course programmers can read code and understand the atoms but can they decipher a big system? Even 12 year old children can read English but what is their understanding of something complex written in English? In my experience, I've often run into peers who are not good at diving into systems. IE to clarify and try to get on the same page. I'm contending that the OP was talking about reverse engineering and I feel like a lot of developers are better at engineering than reverse engineering.
By the way, the very definition of utopia is that it is an imagined fantasy land and most often used in negative ways to suggest delusion.
This is more in line with what I've experienced. https://www.joelonsoftware.com/2000/04/06/things-you-should-...
https://www.joelonsoftware.com/2000/04/06/things-you-should-...