Opposite paths to extraordinary outcomes

https://twitter.com/austen/status/1328374281588273152?lang=en One way to get extraordinary outcomes is by being consistent with the mundane. It may sound easy, but it is not. Everyone knows what it takes to keep one's weight in check. But, if you see around, every other person is overweight. Doing the mundane once in a while is easy, but consistently doing … Continue reading Opposite paths to extraordinary outcomes

The rise of the Full Stack Engineer

The software world is moving away from specialist roles to generalist roles. When I started working, the term "Full Stack Engineer" was not to be heard. Today, everyone knows the "Full Stack Engineer." What gives to this trend? Better abstractions.Economies of scale.Market forces. Better abstractions Software abstractions are getting better day by day. You can … Continue reading The rise of the Full Stack Engineer

“The way” of product development

Simple yet powerful product development framework. A simple yet powerful framework for life is: Do many small experiments.Double down on the wins.Ruthlessly cull the failures.Rinse and repeat. As long as your experiments do not entirely wipe you out, you are on the right path. Borrowing the above philosophy to product development. Try many small product … Continue reading “The way” of product development

Lagom—just about right

How to think while designing the architecture of an application. Lagom is a Swedish word that translates in spirit to "just about right." I came across this word while listening to Tim Ferriss's conversation with Daniel Ek(Spotify founder). The design phase of an application is a stressful time. Developers have to grapple with unknowns and make assumptions. … Continue reading Lagom—just about right

My system for listening to podcasts

I love listening to podcasts. I started three years ago, never looked back. Thanks to podcasts, reading books has taken a backseat. Authors appear as podcast guests when they launch their books. Podcasts seem to be on their way to becoming the primary marketing platform for book launches. During the show, authors highlight the big … Continue reading My system for listening to podcasts

Hmm, will this scale?

Practical tips for identifying when you are over-engineering. A simple way to think about over-engineering is—are you wasting your today for an unknown tomorrow? "Unknown" is the keyword here. Are you building for a million users—at a time—when a couple of hundred users use your application? While building features, are you trying to accommodate fictitious(assumed … Continue reading Hmm, will this scale?

Three not so obvious duties of a manager

Giving everyone their due There are charismatic people in your team. They know how to talk glibly and build a reputation in the organization. They excel at the art of self-promotion(intentionally or not). Senior leadership knows them. When you, their manager, makes a case for their raise or promotion, it smoothly goes through. Then, there … Continue reading Three not so obvious duties of a manager

Day to day application of the CAP theorem

When someone explains the CAP theorem, they do it in the context of distributed data stores. But, if you understand the CAP theorem's essence, you can use it in your day-to-day application design. Nowadays, most applications(even rudimentary ones) are distributed applications—they invoke external APIs and services. Hence, understanding and applying the CAP theorem to application … Continue reading Day to day application of the CAP theorem

Why the heck is she doing that?

Good Will Hunting is the story of Will(Matt Damon), a janitor at MIT, who is an undiscovered maths savant. Will is an orphan who spends his spare time drinking with his buddies and getting into petty scuffles. Professor Lambeau(Stellan Skarsgård) discovers Will's mathematical acumen and promises Will a fulfilling life. Professor Lambeau tries to get … Continue reading Why the heck is she doing that?

Uncomfortable and Confrontational

No one has an incentive to tell you hard-hitting uncomfortable truths about yourself that you are blind to. Giving hard feedback is an awkward confrontational situation—to the person giving feedback and the person receiving feedback. We avoid confrontation with people we know. This behavior(avoiding face to face confrontation) of ours might have something to do … Continue reading Uncomfortable and Confrontational

Communication Architecture

Organizations do not give attention to their internal communication architecture. Internal communication evolves organically. Deliberately designing the internal communication architecture makes a difference. By internal communication architecture, I mean: How does information flow? How do team members communicate with each other? When do they communicate? What is the medium they use for communication? A decoupled(push-based … Continue reading Communication Architecture

Fighting FUD

FUD stands for fear, uncertainty, and doubt. FUD is the strategy of influencing perception by spreading false and dubious information. Fighting FUD takes energy leaving no steam for real work. Marc Andreessen, a Silicon Valley venture capitalist, recently wrote a post saying: It's Time to Build. The gist of the writing is—in the US, people are no longer … Continue reading Fighting FUD

The three pillars of scalability

The three pillars of scalability are statelessness, idempotency, and coding to interfaces. If you keep the above three in mind, your application can scale a long way with your users. Of course, I am not implying these are the only three things to keep in mind while designing scalable applications. Statelessness: If an application does not store … Continue reading The three pillars of scalability

Should I or Should I Not

This post walks you through a framework for adopting new technologies. Microservices is a placeholder in this post. It is a generic framework that you can apply to any new technology that you are planning to adopt. Should we do microservices? The above question plagues the minds of software developers. Popular programming culture made microservices … Continue reading Should I or Should I Not

Wild Wild World of External Calls

Today, while developing software, external calls are a given—your code talks to external HTTP services, databases, and caches. These external communications happen over networks that are fast and work well most of the time. Once in a while, networks do show their true color—they become slow, congested, and unreliable. Even the external services can get … Continue reading Wild Wild World of External Calls

Murphy’s Law Of Software Abstractions

All software abstractions, sooner or later, leak. When this happens, it hurts. To drive a car, you need not know how it works internally. The mechanics of an automobile is well abstracted from the driver. Similarly, software libraries, tools, and frameworks promise abstraction to the engineers using them. They promise that one can use them … Continue reading Murphy’s Law Of Software Abstractions

Enablers, not doers

How do you run effective Platform Engineering teams? All organizations have Platform Engineering teams in one form or the other; these are centralized engineering teams providing building blocks for other engineering groups within the company. The customers for these teams are the internal engineers, not the end-users of the product. For Platform Engineering teams to … Continue reading Enablers, not doers

Generalization – The Superpower

I was reading this Twitter thread on Ben Horowitz's new book on culture. The book's content is apparent to anyone who has spent time in a corporate setup. I have been listening to the audiobook - "Zen: The Art of Simple Living." Again, the content is not radically new, something you would already know instinctually. Off late, … Continue reading Generalization – The Superpower

Thoughts on Product and Feature Development

The post is a listicle on product and feature development in no particular order. There are three rules for creating a successful product. Unfortunately, no one knows what they are.1 If the success of your product depends on changing a deeply ingrained habit, it is going to be challenging. Your product should be attractive enough … Continue reading Thoughts on Product and Feature Development

Designing A Great Meeting Room Experience

This post is a thought experiment in designing a great meeting room experience. This post will not go into the productive ways to conduct meetings but will deal with the mundane yet essential logistics part of meetings. We will try to design the experience based on a couple of simple, timeless principles: 1. Nudging people … Continue reading Designing A Great Meeting Room Experience

Creating Quality Software

Creating software is easy; creating quality software is hard. In today's world of umpteen open source libraries, cloud computing platforms, and StackOverflow, creating software is child's play. You can look up things on the internet, glue together components, and voila - you have created something. What is hard is creating quality software. Software that scales; … Continue reading Creating Quality Software

Distributed System Fundamentals With An Imaginary Key-Value Store

The CAP theorem says that in the event of a network partition, a distributed system can be either consistent or available, not both. Let us first define some of the terms in the CAP theorem. A distributed system is a group of independent computers coordinating with each other to solve a problem. The group of … Continue reading Distributed System Fundamentals With An Imaginary Key-Value Store

“Intentionally” Leaky Abstractions

Software abstractions that developers create should leak enough to let non-developers design the right product experience. Eons back in internet history, Joel Spolsky wrote a post on leaky abstractions. The gist of the writing is that even though we create software abstractions to make life easy, they somehow unintentionally leak through. With technology getting a … Continue reading “Intentionally” Leaky Abstractions

Competitive advantage

Are you focussing on developer productivity? If not, read why you should. Technology is getting commoditized. In the yesteryears, you could have counted on your software frameworks and technologies, hardware prowess, access to capital and talent pool as competitive advantages. In a world, which is getting commoditized, the access to these has been democratized, thus … Continue reading Competitive advantage

Knowing Versus Doing

Over-engineering is ripe in the software industry; this mainly manifests in three ways: 1. Needlessly complicated design. 2. Lift and shift engineering - Picking up technology and practices from other places without understanding the context in which it was developed. 3. Being trendy - Using frameworks and languages that are currently in fashion irrespective of … Continue reading Knowing Versus Doing

Sherlock Versus Calvin Ball

We can classify software development into: 1. Maintaining and enhancing existing software. 2. Software development from scratch. Given a choice between the two, developers usually gravitate towards from scratch development. Developing something from scratch is an intensive creative work where you have the freedom to shape the product the way you see fit. Hence, it … Continue reading Sherlock Versus Calvin Ball

Switching programming languages

Many are apprehensive about switching programming languages. It is OK to have preferences—I am heavily biased towards statically typed languages with great tooling support—but being dogmatic is not something one should aim for. What could be the downsides of switching programming languages? I am disregarding the psychological aversion to change and sticking to hard facts. 1. One … Continue reading Switching programming languages

Testing legacy applications

When contemplating on introducing automated testing in legacy applications, it is easy to get bogged down in terminology; unit testing, integration testing, regression testing, black box testing, white box testing, stress testing, etc. Quite a bit of time is spent in debates on unit testing versus integration testing, I have written about this before too. … Continue reading Testing legacy applications

10 things you did not know about Vietnam

Sorry, could not help with the snarky title. We recently took a vacation to Vietnam and this is a collection of unconnected thoughts and observations about the country and our journey. During our travel, we visited Ho Chi Minh City, Da Nang, Hoi An, Hue, Hanoi and Halong Bay. In all these places, infrastructure was … Continue reading 10 things you did not know about Vietnam

In search of that unique idea?

Why google when there was lycos?Why myspace when there was friendster?Why facebook when there was myspace?Why wordpress when there was blogger?Why tumblr when there was wordpress?Why posterous when there was tumblr?Why instagram when there was facebook?Why twitter when there was facebook?Why etsy when there was ebay?Why pandodaily when there was techcrunch?Why stripe when there was … Continue reading In search of that unique idea?