LifeSoftware EngineeringGoalsPlansPassion

Starting a new chapter...

12 min read

About a week back was my last day at Tarka Labs. So many people have asked me why I have left a wonderful organization, this post is to gather and summarize my thought process…

A little about me, my name is Gaurav Agarwal. I was born 10019 days ago, as on the day of publishing this article, and I have no idea how many more are to come. I have an extremely blessed life and am thankful for all the stars that aligned to bring me to this world. I have found technology and business to be my calling ever since I was a child. Make no mistake, I wasn’t a child prodigy in any way, just a curious soul - got my first computer at the age of 9, used it to experience video games and sometimes make presentations for school and for fun. I also ran small honest businesses since I was 11.

Guiding Principles

Some of my guiding principles to take on this new challenge and plunge into the unknown are:

Let me briefly, expand on each of these:

Find a path to non-linear growth

Let me first explain the concept of linear growth, in terms of money first…

You put in ‘X’ hours of time each week, you make ‘Y’ amount of money for each hour worked. You will have X*Y amount at the end of each week. This applies whether you are salaried, consultant or a trainer. You are trading time for money.

Once you stop working you make no more money. Of course you can increase ‘Y’ by certain percentages periodically using increments (raising your hourly rate as a consultant) or job changes. But you still can’t generate revenue when you stop.

What are examples of non-linear growth then ?

Investing is the first thing which comes to mind. It could be summarised in a tweet by Jon Yongfook (@yongfook).

Everything other than salary falls into this category. Every other thing doesn’t exactly require your attention for it to generate revenue for you.

Non-linear growth is not only about money, though. It can be extended into your learning and personal life as well.

It’s about not putting all the pressure for your happiness and curiosity on one thing and one person. I will have only a special someone in my life forever, someone for whom I can strive to be better each day. But I can’t expect them to come up with all the interesting conversations I would ever have for the rest of my life.

Growth in terms of learning means keeping your cup empty, taking life as it comes. I had strived to become super specialized in one or two things at one point of time, which isn’t a bad thing. Personally, being a generalist programmer and natural curiosity makes me a learner. I dive into topics only when it’s required, otherwise I know a thing or two about the things which are related to the current work at hand. For eg, I have programed in 12 different languages professionally. I was aware about the existence of those languages even before I would have ever had the opportunity to use them. I was familiar with the syntax and the general paradigm of the languages, except for one, Ruby, but that was only cause it was the first language I learnt right out of college. Which brings me to…

Learn & teach or even teach & learn

This is something which is a hit-or-miss when it comes to consulting or working in a traditional job. Sometimes all you want to do is solve interesting problems and then deal with the crud work. With consulting, being dependent on every client to bring interesting challenges all the time is delusional.

I find consulting > salaried job cause it gives me a greater freedom and flexibility it terms of saying no and walking away from a project which is going downhill. I especially lose interest when some false assumptions are made:

All requirements have been nailed down (Unicorn)

Like the mythical creature, these projects don’t exist in the real world. No matter how detailed you go in your mock ups and interactions, you can’t capture all of the edge cases and weird quirks of the user without actually building the product.

Deadline-driven development as defined in the linked article is self-explanatory. The main idea behind it is as a craftsman you tend to ship working products, products which you are proud of putting your name on. When all 3 dimensions (quality, cost or time, scope) of building a product are to be controlled for, it’s usually quality which silently suffers, especially when there are…

No customers or real stakeholders

I have been fortunate enough to work with Agile teams and get to see the power of feedback first hand. During the inception phase (requirements gathering phase - for readers familiar with waterfall model of development), some features seem too important to miss and yet others seem not so important. This is due to inherent human bias, we give importance to things based on their novelty, rather than usefulness.

That’s how you get blockchain and ML being applied in every product out there when a simple version control or a complex control structure would do. I am in no way trying to downplay the usefulness of these technologies, see this cool demo.

To be able to build something useful, you either disrupt industries, where user feedback isn’t useful until you have built the first iteration of the product, or you build a less disruptive MVVVP propping it up against the incumbents. See the story of Jio in India. The gist is they went ahead and launched a not so great service, gained customers and then worked through the issues to improve up to a stable enough modern 4G system. Which leads me to…

Shipping too late

Perfection is a virtue only if applied to craftsmanship in moderation. Being embarrassed about what you have built is a common feeling among artists and makers. We hold ourselves to a higher standard than required while judging our work.

Anecdotally, it’s only when I embrace my work with it’s flaws and put it out in the world, will I ever get real feedback. This doesn’t mean put things which are broken, that’s a surefire way to lose credibility quickly.

What you need to do instead is build something which works, but isn’t feature rich, can still be useful. Focus on providing value, versus building something perfect. Perfection can come as a result of polishing your work. After you grind away the rough edges and smoothen out the surface of your product. But even then, with software a final product is always a moving target.

Once the rubber hits the road, new use cases are discovered. Without observing how the software interacts with the user, we end up building a robotic solution which is only capable of interacting with other robotic systems. Treating humans as mere systems, and not as complex organisms with different tastes and sensibilities will lead to solutions which are way more complicated and unrealistic in their use cases than ever intended.1

No learning required

We as a species for the first time in history have all the knowledge available to us at our finger tips, just a few taps away. We have never been this connected. Some of us, the lucky ones, even finding love through the medium of technology, others finding it easier to stay connected through the use of technology.

Software isn’t just about building a product and making money out of it. Or building from mockups as is, see the cool demo above. When you build a system, which people interact with, complex use cases evolve which can’t be anticipated. Any project or endeavor assuming no new use cases will be discovered or be found while building, unless it is an extremely bare minimum design, will fail.

As a generalist, building such software becomes easier when there is enough room to learn and evolve the system. After all, technology is best applied when it’s augumented with human intelligence.2

Taking all these above points into consideration and keeping the ever-changing wide technological landscape in perspective, there is no reasonable way for one single human to stay relevant, alone!

We are social creatures not by design but through selection. We adapt and overcome challenges as a tribe and as a species. We get to enjoy this only through learning and sharing with each other.

When you are part of an organization, you don’t seek out or even have as many opportunities to teach or learn when everyone seems to be at the same level. You tend to build this artificial bubble around you, and think only the people in your circle are competent. This creates a sense of isolation, an island of its own.

No man is an island and shouldn’t strive to be one. I have learnt this over the years and began to imbibe it through my actions. Which brings me to…

Help and give back as much as possible without wrecking personal life

I am not going to expand much on this topic. There is nothing new I would be talking about giving than what hasn’t been said before. Charity begins at home, after all.

For me personally, giving is a form of releasing myself from all the debt, all the good things I have received throughout. I couldn’t be happier without sharing my happiness with others.

I also realise giving at the expense of me time and personal time is risking too much. I need to be healthy and work on myself as much to be able to bring my best self.

Maximize the enjoyment out of life (without compromising on any of your principles)

By diversifying my experiences and varying them enough, I might make my ‘Box of daily experience’ rich and full of zeal.

Of course, novelty just for the sake of novelty isn’t a worthwhile endeavour. I have been there done that, FOMO shouldn’t be an issue. Neither the pursuit of a hedonist lifestyle.

Steps / challenges / experiments I am planning to take on in the next 2 years

I hope I will have positive things to report back at the end of these experiments. These are my thought process, promises, hopes and dreams for the next 2 years of my life. Please post your comments, questions and concerns in the comment section below or DM me on twitter (@algogrit). Thank you for reading!

Bibliography

  1. The Lean Startup by Eric Reis
  2. The Second Machine Age: Work, Progress, and Prosperity in a Time of Brilliant Technologies by Erik Brynjolfsson, Andrew McAfee
  3. Thinking in systems: A Primer by Donella H. Meadows, Diana Wright

Other links and references have been inlined to keep this section short.

Related Articles