Why should a machine do my work?

I keep thinking about abstractions all the time ever since I begun to understand large scale software development. In the early days of programming I took a lot of pride in understanding code in depth and writing the most efficient code. I was fortunate to start learning programming from the rudimentary steps like creating adders using logic gates. From there on progressed to assembly, BASIC and C.

If we take a step back, late 90s and early 2000s we are talking about super expensive hardware in Indian currency terms. To give an idea, a simple desktop pc setup costed the entire year’s income of a middle class household. On top of it internet had dial up charges and subscription charges. This meant people had to be frugal and extract the maximum out of their machines. For many years I have never been able to run an IDE on my machine because of limited hardware and ended up using text editors. Also efficiency was at the back of my mind of writing small footprint programs which consumed a lot more time than producing software that is reasonably performant but needs good hardware.

Collectively this scarcity based mindset made a lot of people approach with frugality, often having a lower specced computer for their personal use. Even when hardware became more affordable and software development technologies leapfrogged, I witnessed that people fought against upgrades and learning newer ways to do. Developers refused to learn to work with IDEs which made development significantly faster, test automation was in no one’s land as both devs and QAs avoided adopting it.

Photo by Andrea De Santis on Pexels.com

The difference between the teams using IDEs, continuous integration, build and release automation, test automation all which consumed a lot of hardware was around 3-4x. It was very visible that we removed dedicated roles like infra engineer, DBA, reduced the dev-qa ratio, reduced the number of leads and managers. A 40 member team was replaced with a 12 member one when high degree of automation was used with an added expense of hardware costs but overall it was much much better than running a 40 member team. One thing that changed which I did not expect was it increased the number of Business Analysts needed now to define the requirements better.

Only a few companies succeeded in taking advantage of this and it took more than a decade for people to catchup. We are at a similar point now to take advantage of new tools that can change the team composition and get more out of less in software development. Just like in previous waves of development, it is not going to eliminate people entirely from this. Instead it frees up a lot of people to solve more higher order problems. Companies can now focus exponentially on what was traditionally expensive with less people able to do more. Examples I can think of is accelerating development of new medicines and treatments to the extent it can be custom made for every person; predict, fight and prevent large scale natural disasters with precision; strengthen the security posture making it difficult more expensive and difficult to cheat; revolutionise entertainment by localising with actors, accents and languages than traditional dubbing and subtitles. The list goes on, jump on the new wave and ride new highs.

Leave a comment