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

Small company advantage

Below tweet appeared on my timeline. https://twitter.com/therealfitz/status/1301278933497909248 The tweet brought back a quote(paraphrased from memory; I do not know the author). Every employee does two jobs. The job and the job to prove that they are doing the job. Arduous performance reviews, stakeholder management, timeline-based project management, long term project planning, justifying project delays, and creating visibility are typically … Continue reading Small company advantage

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 significant competitive advantages. In a world, which is getting commoditized day by day, the access to these … 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

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

Nothing is sacrosanct

There is an interesting bug opened against Kafka. For those of you too lazy to click on the link and read through the description, I am reproducing it here in full.It appears that validation of configuration properties is performed in the ConsumerConfig and ProducerConfig constructors. This is generally bad practice as it couples object construction … Continue reading Nothing is sacrosanct

The social taboo – body and mind

I just finished reading this and my mind was contemplating over the society's taboo of using your body to advance yourself in life. I do not think Sasha Grey's parents adore their daughter's achievements in the adult film industry but I am sure Nate Silver's parents are proud of his mathematical acumen. The world today is … Continue reading The social taboo – body and mind

The Algorithm and Data Structures Conundrum

Hacker news denizens have a penchant for articles on hiring. Every once in a while, a post appears on the home page followed by a passionate and vituperative debate. People conversing on this can be divided into two camps; one argues that math, algorithm and data structures are critical and interview candidates should be quizzed … Continue reading The Algorithm and Data Structures Conundrum

Gandhians With Keyboards

6th January 1980; young, 20 something artist; supremely gifted with a melodious voice; has no connections in the entertainment industry; zilch sugar daddies who can put her in touch with the right people in the recording business. How can this artist unleash her hidden talent on the unsuspecting world? The same situation forwarded to 6th January 2013.  Records her … Continue reading Gandhians With Keyboards