Some things we now know to be good ideas:
Writing operating systems in a compiled machine-independent programming language.
Performing file I/O by reading, writing, or overwriting integral numbers of bytes at integral offsets.
Creating processes by duplicating existing processes.
Null-terminated byte strings.
Investing a substantial proportion of programmers’ time in building tooling to make themselves more productive.
When explaining a new programming technique, starting with “Hello, world”.
Connecting programs together by piping the output of one to the input of the other.
It’s hard to believe that there was a time when any of these weren’t conventional wisdom, but there was such a time. Unix combines more obvious-in-retrospect engineering design choices than anything else I’ve seen or am likely to see in my lifetime.
It is impossible — absolutely impossible — to overstate the debt my profession owes to Dennis Ritchie. I’ve been living in a world he helped invent for over thirty years.