Work Principles I Believe In
Be ethical
A mistake is an opportunity for learning, not a time for blame
Better to make a mistake of commission than one of omission
Productivity over predictability
Don’t confuse urgent for important
Know what you can control and what not
You can’t control everything. B players refuse to acknowledge this and keep demanding stubbornly, “I want this! I want this! I want this!” On the other hand, A players understand the levers they have and pull them appropriately:
Better wrong than indecisive
When in doubt, have a bias for action, rather than for analysis. If you’re sending a rocket to Mars, you don’t guess the amount of fuel needed, load a random amount, and see what happens. You can calculate the fuel need precisely based on the laws of physics, and you do. Many of us smart engineers apply this mindset to our work. But in our work, we don’t deal with problems of physics or mathematics that can be analysed in this way. It’s messy, and uncomfortable for smart engineers. It’s tempting to create a mental model and deal with that, but we should eschew that urge and instead deal with reality directly, by having a bias for action. Instead of modelling yourself after a scientist, model yourself after a skater, who acts rather than theorizes. Better wrong than indecisive.
When you’d rather be wrong than indecisive, you fail fast, in a week rather than the month that an indecisive person would take. Some fraction of the things you do will fail anyway. Don’t try to prevent it with careful planning — it won’t work. Instead fail in a week rather than a month, so that you have three more weeks to try something else that may succeed.
Prefer self-correcting mistakes
You can’t avoid all mistakes. But some mistakes are self-correcting.
For example, I often hire engineers and engineering leaders on behalf of my clients, on their payroll. When I do this, I conduct multiple interviews to evaluate a candidate comprehensively. I’ve good good results by following my progress. CTOs and CEOs have told me that the people I hired went on to do well in the company. However, if a client insists that I conduct only one interview to speed things up, I’ll tell him that my approach is proven, but I don’t mind trying a new approach once to see whether it works equally well. But if it doesn’t, he’ll have to take the risk. So, with the right expectations, I’ll take a risk. If it fails, I’ll go back to my original, proven approach. If it’s a mistake, it’s a self-correcting mistake.
The alternative is to not even try anything new. As the years and decades go by, we add more and more beliefs to our belief system, making us ossified. And that causes our career to decline.
Trying something new is a self-correcting mistake (if it’s a mistake). Trying nothing new is a non-self-correcting mistake. You won’t get feedback and won’t even know that you’re going in the wrong direction. These mistakes are dangerous. Avoid them.
Keep experimenting with a bounded loss
From time to time, do something different, whose worst-case scenario you can quantify. If you hire a designer to build a website for you for a fee of 1 lakh, you’ll lose 1 lakh if it doesn’t work out. That was a risk I was comfortable taking. Keep doing such similar experiments. Otherwise, you’ll stagnate at your current level of ability.
Growth Mindset
When a person with a fixed mindset fails, he tells himself, “I’m not good at this.” When a person with growth mindset fails, he tells himself, “I’m not good at this YET.”
Abundance Mindset
When a consulting prospect doesn’t convert, I tell myself there are plenty of other fish in the sea. By contrast, a scarcity mindset makes you desperate about getting this client, so you take on gigs you shouldn’t.
Be willing to look like a fool
If you’re in a group and someone mentions something you don’t know, instead of trying to act cool hoping no one will notice, say, “I don’t know”. Keep doing new things. For example, I wrote a case study on my consulting site. I had put it off for almost a year since I didn’t know how to write one. I finally did, and iterated several times: once by adding a video, then by adding testimonials, then by adding a flowchart, and so on. I received a lot of negative feedback which was well-intentioned and appropriate, but made me feel frustrated. We have to put up with this to get ahead.
Launch and iterate
Don’t wait for things to be perfect. Make them one step better and launch, and continue to improve them. When I was asked, “Is this good enough to launch?” I’d respond with “Is it worse than what we already have in production? No? Then launch.”
Launch and iterate, don’t iterate and launch, where you keep improving it out of perfectionism.
Many people are held back by fear of making mistakes. Do you remember the day Instagram launched? People won’t remember your launch, either. If you’re not breaking things some percentage, you’re being too conservative. Putting out something bad out there doesn’t mean you’re bad. Life is not an exam where you’re being evaluated every second.
Ask for forgiveness, not permission
Some of us think that responsibility in a company is cleanly split into areas, like plots in a city, and each area is assigned to one person, and that you should not interfere in something that’s not been assigned to you, like planting a garden in your neighbor’s property. That’s not the reality. The reality is that managers don’t know everything going on, and even if they did know, are overburdened by taking care of a hundred other things. So people who step up and do things are a huge asset to the company.
Disagree and commit
We can debate an issue, but once the debate is over, we should all work wholeheartedly towards implementing what was decided, rather than sulking in a corner because we didn’t get our way, or bringing up the issue again and again as the months go by. The other side of the Disagree and commit is honoring agreements once made.
Make flexible plans
Some plans try to nail everything down: we’ll do this the first week, then this the second, then this the third, and so on till the 10th. If something unexpected happens the fourth week and that week’s milestone takes an additional week, that will cause the next fifth milestone to be delayed, and the sixth, and so on till the end. Over the time it takes for a project, you can be sure something surprising will happen, so such rigid plans are bound to fail. Instead, make flexible plans that are robust and can handle unforeseen situations without breaking down.
Avoid failure demand
Say your app is buggy, so your engineers have to get on a lot of tech support calls, which makes it harder for them to find time to fix the root cause, resulting in a vicious cycle. Failure demand is additional work created by not doing something properly. Don’t get into such situations.
Results, not process
We should try one way of doing things, and if it doesn’t work, try another way. Process is not handed down from the heavens for us mere mortals to blindly follow.
A healthy disrespect for the status quo
The masses accept the status quo as a given, like a law of nature, and reject any new way of looking at things as wrong or dumb. If you want to do anything new, a certain degree of skepticism about the way things are is necessary in a startup.
Progress despite ambiguity
As a child, when I went to the computer lab in my school with a program that wasn’t fully planned out, I was sent back and told to be clear about what I’m doing and only then enter the lab. Needing clarity before embarking on a task is one of many diametrically wrong mental models the education system leaves us with. Acting on the task reduces ambiguity, as opposed to sitting on your ass.
Tactical Retreat
An army sometimes retreats to regroup and be in a better position to attack the enemy. My startup Futurecam has failed. But if I were to go back in time, I’d do it again, because I got a decade of growth in 3 years. Failure that equips you better for the future is not a failure; it’s a tactical retreat.
Fail your way to success
When you do something new for the first time, like managing people or running a startup, you’ll fail. You’ll try something else, and fail again. Then you’ll try a third thing, and that will work. So don’t look at these initial failures as failures, but as a step on the path to success.
Try ideas on for size
When you buy clothes, you try them on to see if the size fits you. Similarly, try out ideas before you’re fully convinced. If it doesn’t work for you, you can always go back. In fact, trying them on will convince you. You can’t always be convinced before you try on an idea. So, try, then decide, not the other way around.
Be transparent
Share as much information and give as much context as possible. When in doubt whether to share something, default to yes. Two people can achieve better results working as a team, with no barriers between them, than by withholding information from each other.
Proactive vs reactive
Too many Indian startups are reactive. They’re caught up in events. When emergencies happen, they scramble and paper over them, without stopping to ask what the root causes are and fixing them. One of the value additions my consulting brings is that I know when to take a step back and be proactive.
At the same time, some things can be over-engineered or over-planned (“Let’s do A, B, C and D now”), and I can recognise when that’s happening and course-correct: “Let’s do A and B now, and we can do C and D when we see the latency go up.” Here we’re being proactive about A and B, and reactive about C and D. Neither proactive nor reactive is always right; it’s about using each when appropriate.
Have blameless conversations
This principle comes from DevOps, where if you have an outage, you’re supposed to have a blameless postmortem/retrospective. This principle can be generalised beyond SRE: when we work together, things invariably go wrong sooner or later. When they do, you should have a conversation without blame, reminding yourself that the other person is no less competent than you, and try to understand what happened. If after an open-minded conversation, blame is justified, you can blame him, but not to begin with.
Think second order
Many people, when making a decision, think only of the immediate consequences. For example, “my car runs the same after servicing as compared to before. So maybe I can skip servicing it?” That’s first-order thinking. Second order thinking asks, “and then what?” Your car will eventually break down, costing more in time and inconvenience than servicing it up front.
Businesspeople often make this mistake, abusing their tech till it falls apart and customers are unhappy, there’s attrition among engineers, they can’t onboard more customers, the software is buggy, and so on. Then they wonder why they’re having these problems. Second-order thinking would prevent this.
Don’t compromise for the sake of social cohesion
Some people agree for the sake of social cohesion, but this is immature: if you hold firm on your point of view, and the other person takes it personally, that’s an immature reaction on their part, and if we’re worried about that, that would be immaturity on our part.
Have an emergency exit
Buildings have a clearly identified and marked emergency exit. When there’s a fire and the rooms are full of smoke and you can’t see clearly, that’s not the time to design the emergency exit. If you try, you’ll be trapped and burnt.
The same principle applies to work: design an emergency exit before shit hits the fan. For example, if I were to start a startup again, I’d divide my money into two buckets: mine and the startup’s. If the startup’s money runs out, I’d shut down the startup. This is an example of planning an emergency exit ahead of time. Another example is my consulting: I begin every engagement with enthusiasm and good intentions to do the best I can, but I also have a clearly defined emergency exit. Agree on the emergency exit with the people you’re working with, when the going is good and trust is high. Don’t trap yourself.