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.

One of my mentors, pointed out that I was gritty in making things happen but I should also watch out for willpower depletion as time flies by. That is the time he got me into systems thinking, every decision that we take in a day causes an imbalance and a build up of that causes decision fatigue.

I have written many times about this topic of habits vs goals. The reason I chose this today is because I complete 15 years streak of writing at least one blog post a month. Initially I started with a goal of 50 blogs a year, I achieved it but the learning was, it was super draining the moment I hit that milestone, it looked like I am pulling back the throttle. Why did I want to write so many blogs? I wanted to improve my articulation, I wanted to expose my knowledge to the outside world, I also wanted it to be a snapshot of my mind at that point of time. From my mentor’s inputs, I changed my mind from a big goal based mindset to a systems based mindset. I went to a sustainable streak with a micro goal of a blog a month instead of x blogs a year.

Photo by Moe Magners on Pexels.com

I was able to apply this to a lot of other areas at work and life; especially when the change is transformative, it looks daunting and takes a heroic effort to get there. Mentor, coaches, veterans were the key people to help me break down big goals into systems and habits. A very good example was when I turned 30, I was going down the path of abdominal obesity, I gained 3 sizes very rapidly. I tried doing many things like swimming, walking and nothing worked. No amount of reading up and trying different things turned useful. I ended up talking to a sports physio who drew a plan not for the goal of getting to normal BMI and waist but healthy eating and regular exercise.

He told me, that I will regress and go back to my old ways if I just workout heavily and bring things back to normal. A diet plan consisting of normal south indian non veg food, with occasional allowances of indulgence. The dietician told me that your willpower will get exhausted if you don’t treat yourselves sometimes so take a decision like “I will eat only one dessert a week”. Also the dietician ingrained one strong message – “You cannot outrun a bad diet with heavy exercise”. The change in habits took a month or so but I have been able to keep up the right BMI and waist size for years now.

If you are pursuing something big, always get some help from a veteran in that field and break it down to small sustainable habits instead of taking a resolution and going towards it from the word get go. Always remember that will power fades away, reduce decisions to be taken and convert them to habits.

It is very hard to move from one social class to another unless there is a big low probability windfall that happens. Especially moving away from poverty to a middle class life is extremely difficult. Poverty traps like poor health, bad nutrition and inadequate education can create a self-reinforcing cycle that will keep sustaining. While poverty was very evident before with visible signs like clothing, upkeep, housing, food etc; neo poverty is not very evident.

There is no proper definition of neo poverty. But the concept is the same as poverty, it is very hard to move up from a position. People look successful from the outside but they are hustling in a dead end job. When it comes to software development, there was a natural progression of doing one’s job every day and gaining skills to become a senior, lead, architect, chief architect without much deliberate effort. The reason was that people were able to upskill themselves easily. Complexity of work, quantum of workload, learning horizon were manageable enough to upskill and move ahead.

Photo by Mikhail Nilov on Pexels.com

Work became increasingly complex in software engineering. What looked like a natural progression is no longer easily feasible. Just like how a nurse cannot become a doctor just by working in the hospital, unless pursues a degree outside of working hours to become a doctor; same is becoming true for software engineers. The increasing demand of longer working works and hustle culture has forced people to repetitively do the same things again and again without the progress that was once possible.

This perpetual cycle of getting stuck in one position is one of the neo poverty situations we have. It looks rewarding in the short term when we comply with neo poverty traps like 996, but it ruins the chances for pause, rest, reflect and upskill. Ask yourselves if you are stuck in a loop of doing the same things over and over, then you have to be deliberate to alleviate yourself from neo poverty.