“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 lot more complicated, I believe that the software abstractions that developers create should intentionally leak to some extent to let non-developers design the right product experience.


Get articles on coding, software and product development, managing software teams, scaling organisations and enhancing productivity by subscribing to my blog

Taking a concrete example, let us say that you are creating a search utility which goes over a lot of data. Your algorithm has two steps, one that works on recent data and the other, older data. Recent search is blazing fast while searching through old data is slow. You do both in parallel, combine the results and display it to the user. You have two options here; you can abstract this two-pronged approach from the product teams and act as if the search is a single step process or you can leak this abstraction so that they can take this into account while designing the product.

What can the product team do with this information?
They have multiple options.

Show the faster results first without waiting for the slower ones. Where the older results are displayed, show a loading placeholder, and then populate the results as and when they become available.

Another option is to make this a two-step process by showing only the recent results and then asking the users explicitly whether they want to search through old data too.

They can do this only if your abstraction leaks through informing them of the internal search nuances.

You need to be judicious with what you expose, and what not, so that the product teams are not burdened with unnecessary details – striking the right balance is essential.

Image by Jesse Bridgewater from Pixabay

New Feature Efficacy

You have an established product, and you introduce a radically new/different feature. You are very enthusiastic, but the metrics show users are hardly using this.

There could be two reasons:
1. Users do not see a value.
2. Could be resistance to newness.



It is essential to zero in on the above to decide whether to put in more effort into the feature. If this is indeed resistance to newness, there might be multiple ways to nudge your users towards the feature gently.

A straightforward way to figure this out is to measure the stickiness of the feature. Of the small percentage of your users who do interact with the features, how many of them come back to it subsequently, i.e. once people are acquainted with the feature, do they come back to it later? If you see stickiness in this cohort, it is a good indicator that the feature is of value, you are doing a lousy job in educating your users and leading them to it. If not, it is time to cull the feature and invest that time and energy in something else.

Consumer tech

I was reading this article about a startup that is launching satellites for imaging the earth. A line from the article stuck with me, the startup is leveraging technology developed for consumer devices like laptops and mobile phones in their satellites. This is a reversal from the olden days where technology that was developed for defense/space would find their way into consumer tech. Now a days, you see technology that was specifically targeted at consumer tech making ways into defense/space. Another specific example that I can think of is Palantir. Ways found out by engineers during their days at Paypal to fight fraud shaped into Palantir which now focuses on hunting down terrorists/hackers based on data like call records, etc.

Another point of note is consumer tech driving futuristic technology. Take google’s driverless cars for example, where is the money coming from? From consumer tech like search. Where did Elon Musk get his money from to bootstrap Tesla motors? Again consumer tech like paypal etc. As of today, I see consumer tech driving research and development more than defense and space which in a way is good for us as consumers because we get a taste of the shiny new thing without having to wait for decades for it to be made mainstream.

Future is in the photos

I was going through the VC interaction posted by Everpix guys. If you go through the letters, you see this repeated a lot, “You guys are in a crowded space which the biggies(Facebook, Dropbox, Google, Apple, etc) are after”. Everpix is/was a service to store and organize photos. Why is this such a hot space?

Take a peek at the acquisitions carried out by Facebook. Can you spot a pattern? A common recurring theme around these companies is photo sharing, image recognition, mobile and analytics. As mobile devices/digital cameras become ubiquitous, internet connectivity becomes omnipresent, people are going to upload snaps/videos in ever increasing numbers. Photos/videos reveal a lot about you without you consciously intending to. A stream of photos that you upload on a regular basis is as good as a life journal that you are not explicitly writing. How about mining this information to show relevant ads?

Your photo reveals that you wear spectacles, show eye wear ads to you. Your photo stream shows that you regularly take overseas vacation, you are a hot target for the travel industry. Your photos suggest that you have an entry level car and you tell Facebook that you got a new job, time to show the next segment car ads in your wall? In most of the photos you wear denim and t-shirt, maybe Levi’s would be very interested in you.

Think about it, the amount of information a stream of photo gives out about you is endless. This is a gold mine for companies that want to tailor ads for you.

Path of least resistance

I fractured my leg and Pavitra wanted to send the x-ray to my brother in law who is a doctor. He insisted on her not e-mailing but sending it through WhatsApp. I do not use WhatsApp because I do not have a smartphone(sic, sic) but almost all of my friends are on WhatsApp these days. What is the differentiator between these new day instant messengers versus the dinosaurs(Google, Yahoo!, MSN, etc)? I would says it is the path of least resistance. On boarding is quick and easy, they do not suffer from feature bloat, using them is a child’s play, you need not be a tech guru to figure out “How do I do this?”.

Path of least resistance is a tenant everyone in a product company should live by. Take for example a signup form. Given a sign up form with two fields versus one that takes gazillion of fields, which do you think will appeal more to your users? Now you may say my product needs a phone number field to send sms. Ask yourself this, do I need to take this field during sign up or can I ask the user to enter their phone number during the course of usage? When you sign up users, do you really need the confirm password field? Or, for that matter, do you really need users to sign up to use the product? A few days back, I was carrying out comparative analysis of a product on a couple of e-com sites. I had different sites open, one of them allowed me to sign up using gmail while the other required a custom sign up. I did not even bother with the one that asked for the custom sign up and went on with the one that allowed me to login through gmail.

Can a product compete in a deeply entrenched market with the only differentiator being it’s simplicity? I would say so. Take a look at the mobile instant messenger market.The new kids on the block have successfully waged a battle against the Goliaths and have emerged on the winning side. They have done this by being laser focused on simplicity.

When we are part of a product, use it day in and day out, we become so entwined with it that we can use it with our eyes closed. But our customers are not on the same boat, some usage patterns which might seem obvious to us might feel like navigating through a maze to our customers. It is extremely important that we keep reminding ourselves of this each and every day.


Whenever I hear about the government upgrading some utility website, I die a bit inside. I am strongly of the opinion that the government has no business to be in the business of building end user utility websites. A government should act as an enabler, not as a provider. How does this apply to utility websites?

Instead of getting it’s feet wet with building UIs, which usually are crappy, government should concentrate on trying to build robust apis/backends and let the citizens exploit it to their hearts content. There is a huge demand for any sort of utility api, I can vouch for this after being in charge of FreeCharge for an year now. We are rummaging for robust apis for utility services, while the whole spectrum is filled with crappy government websites.

Take for example how amazing it would be if IRCTC was an api provider/consumer instead of the website it is today. Think of all the cool apps/websites people would have built around this api. How many travel sites would have mushroomed around this concept? Along with spiking curiosity and entrepreneurship in people, this would also have lead to job creation.

This does not apply only to governments, but in general to anyone. Open up the gates, let people clamor to build UIs over your services. There are two major advantages in doing this, one, you get out of the distribution problem, two, you broaden the reach of your services. A classic case in point, twitter in it’s early days.

Building robust user interfaces may sound an easy job, but being in the consumer web for the better part of my career, I can confidently say that it is not as easy as it sounds. Does the line “If you build it, they will come” ring any bell?

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 paypal?