I enjoyed watching the latest talk by brilliant Johnathan Blow called “Preventing the Collapse of Civilization”. I like how he brought up the idea that Elon Musk expressed in one of his interviews, that because of the stagnation in the space exploration industry in the US, the skills and knowledge would be lost over generations of specialists. There’s a notion of institutional knowledge. I also like the quote from somewhere that one can’t be considered a runner if they have done a marathon two years ago and they haven’t run since. Johnathan Blow transferred this idea to software engineering, and I think I agree with him on this point. I would expect that my fellow average frontend engineer haven’t written much assembly in their career. I don’t feel any sadness or fear though. I think everything is ought to pass eventually. Though, if possible, we should enjoy the ride.
It is perhaps that inherent complexity of software has changed over time. Software itself is different these days, in a way. Yes, it’s still all about making computers to do what we want them to do. However:
Did anyone require from the systems built in 1960s and 1970s to conform to ethical values?
Did we have an ability at that time to install multiple telescreens per person in every home?
Or even simpler — how many people had personal computers at home? How many of them had cameras?
Was there an urgent need to regulate computer networks with laws?
Were there legacy 10-20-30 year old systems on people’s personal computers at that time?
Were there market competition that would require software companies crunch out updates for marketing reasons?
I can continue further, but won’t. This list of questions is very sporadic — I didn’t spend much time to make a coherent questionaire out of it.
Anyone developing a system that is going to be used by several hundred thousand users (again, would that even be possible in the 1970s?) should most likely consider these problems.
But I sympathize with the talk on the point that many programming processes take too many layers of indirection, and perhaps we could have solved all of the cultural problems mentioned above without several of these layers. I really wish there would be such a universe with this outcome.
A friend of mine is a very enthusiastic cyclist. He lives in a city where casual cycling is not widespread at all. Everyone pretty much has to use a car to have a decent way of living. Traffic jams is a norm, you’re expected to have at least some portion of this draining experience every day. My friend wishes that people in this city would organise their lives in a way that cycling would become a norm, and that they would drive their cars less. But it’s very foolish to think that people would give away comfort of their cars for an utopian vision of a Dutch-like urban cycling culture. So instead he waits and eagerly expects for the society to buy more cars, to spend more time in traffic, all until the current system will explode and the society will reach a tipping point of discomfort where it has to change something.
So perhaps we’ll experience the same blow up in the software department, where the complexity would be at a such higher level that we’ll be forced to reinvent the world. I expect the soon to be fulfilled prophecy of the end of Moore’s law will contribute to that big time.
For now, my best takeaway from this dystopian world view is the following: truly absorb Fred Brook’s “No Silver Bullet” and do things that matter, one step at a time. Don’t allow yourself to go into bikeshedding. Be lazy to type and hungry for thought.