I have heard of:
“Programs must be written for people to read, and only incidentally for machines to execute.”
― Harold Abelson, Structure and Interpretation of Computer Programs
and Donald Knuth said that too:
https://www.youtube.com/watch?v=CDokMxVtB3k&feature=youtu.be&t=1768
but very often at work, I just read programs that have lines of lines of them, without saying what it tries to do. For example, I can be reading 17 lines of code, and wonder what the programmer wanted to do, and after a couple of minutes, only to found out it was just to filter out some data into 2 sets and get the intersection. The same thing could be done in 2 or 3 lines. Or if there was a comment at the beginning of the 17, 18 lines
# put data into 2 sets and get the intersection
then I wouldn't have to follow line by line and find out what it was trying to do.
Some people say: "you should be able to understand the code 'as is'". While that is true, why waste 5 minutes again and again here and there, and for other people as well, when 2, 3 lines of code, or 1 line of comment of what the intention was could let anybody know in a few seconds? A lot of times, programmers have to face 500,000 lines of code, 800,000 lines of code, or more; why waste them 5 minutes here and there if they are looking for something else and not interested in reading the intersection code line by line?
But at the same time, my coworkers might even say, that he removed every single line of comments -- programmers should read code, not read comments.
Should software engineers write code for people to read? I can only think of 2 contrary cases:
If you write code that is easy for human to understand, that means the company can easily fire you. People who write code that are difficult to understand, the company needs them to stay.
If other people "read you like an open book", they may think you are weak. They may keep themselves hard to understand, to maintain their power.