No Rocket Science
The day is 23rd August of 2023.
Today Chandrayaan-3 has landed on the South pole of the Moon. An incredible achievement for India and humankind. It's a proud and difficult thing to achieve, isn't it? but what exactly is it that makes Rocket Science difficult?
My hypothesis is that the science and theory behind space travel are not more or less mysterious than other disciplines of science and engineering. But what makes it incredibly difficult is the environment in which the system runs is entirely different from where the system is built and tested.
We used to do this in Software engineering. We used to write program in the local machine and send it to the mainframe for execution, possibly using timesharing with multiple users. But over time we kept improving this development model, using local machine for development and short-time testing (REPL or TDD) where the runtime on local machine was the same or closer to the production environment; but this was not close enough; we still had significant enough differences that led to unexpected errors because of this in production.
Then came docker.
Every Industry goes through a periodic cycle of disruptive changes caused by a strategic inflection point that fundamentally changes the rules of that industry.
One such strategic inflection point was when we started using docker. This is a fascinating example of a disruptive change for me because this rarely happens in other industries.
When other developers were trying to match the runtime of the development/local machine with the production machines
The docker developers said, let me just ship my local machine to production.
This way the environment in which you run your system is exactly the same as the production system. This is like shipping Sriharikota to the moon so that the rocket can work as expected.
Over time software engineering, or any other engineering for that matter I would bet tends to reduce the feedback loop from development to running in the intended environment shorter and shorter. A smaller feedback loop is a hallmark of an intelligent and functional system. If you want to improve your system/process and don't know where to start? make the feedback loop shorter and you'll be in the right direction.