1 Comment

Fantastic piece. I agree with all of your points but my take on software is slightly different. My reason is as follows.

It's easier to adapt to a complex environment than to manage it. That's why farming is so much more work than hunting & gathering, even though the farm is much less complex as an ecosystem than a forest. And to adapt to survival in the forest, operating on the surface and in the moment is paramount, just as you have said.

However, we don't adapt to a piece of software. We create it and require it to adapt to ourselves. We impose regularity and correctness requirements on the software. Which means it inner working has to be simple and easy to reason about. This is where "deep", fundamental, mathematical knowledge about computer science plays a crucial role: it allows us to create manageable and correct software. I believe unmanaged complexity is the plague of software industry and the reason why software development is so costly, brought about by ad-hoc development without fundamental understanding.

Software is best not thought of as product to be sold but a means of delivering of solutions which are what are really sold and bought. It is the knife and not the cutting; and studying the fundamentals of programming will help us make a general-purpose knife of quality and durability.

Expand full comment