Exacting and disciplined approaches to research and construction.
Engineering involves the efficient disposal of a limited quantity (of time, resources, etc) towards the accomplishment of some goal.
The study of engineering is one means of solving the disposable plastic crisis of software.
What distinguishes engineering from other approaches to building?
Comparing the Eiffel Tower to the Great Pyramid of Khufu provides an instructive example.
Khufu weighs 5.75 million tons, took 20 years to build, and is 481 ft tall. The Eiffel Tower weighs 7,700 tons, took 3 years to build, and is 1,063 ft tall (over 2x as high as the great pyramid).
Khufu was built by shaping and stacking incredibly heavy stones, pushing this simple stacking approach to its absolute limits. The Eiffel Tower, on the other hand, was "engineered" and does much more with much less in terms of time and resources.
Khufu is admirable for the sheer brute force it took to construct. The Eiffel Tower for its elegance.
This difference is the difference between engineering and other approaches to building.
How is this similar to how software is built?
Software developers today take the Khufu approach of stacking heavy stones in the form of enormous numbers of dependencies, abstraction layers, and bloated languages and runtimes. They have become dependent on Moore's law and growing amounts of compute power, bandwidth, storage, and memory to compensate for their increasingly poor designs.
As Moore's law has slowed due to the breakdown in Dennard scaling, the slowdown in improvements to single CPU compute have been compensated for by increasingly large numbers of parallel compute cores within a single CPU. However most operating systems and software are incapable of taking full advantage of this highly parallel hardware, meaning gains in software speed have been slowing over time.
To combat this waste and bloat we need engineering.
Last update on 7E4B16, edited 1 times. 1/1thh