Building software — that you’re both proud of AND meets business needs — means making a few tradeoffs.
By Poornima Vijayashanker (Founder, BizeeBee & Femgineer)
As technologists we want to build software that is friendly, fast, beautiful, reliable, secure and scalable. And we expect ourselves to deliver it on time and under budget, because our ultimate goal is to have lots of happy customers who can do what they want: cue Daft Punk’s Technologic!
But time and energy are finite, and we simply cannot deliver it all at once. We need to choose our priorities, and this choice is one we should make consciously.
Evaluating our software development priorities while dealing with constraints is known as the tradeoff space, and is influenced by:
- Your technology stack
- Your business model and customer needs
- Cost of a mistake and a company’s appetite for risk
- Onboarding employees
I recently interviewed Jocelyn Goldfein, the former Director of Engineering at Facebook to talk about the tradeoff space, and how to evaluate tradeoffs when building software products.
Read on to learn how you can make smart tradeoffs when developing software products.
Start with Your Technology Stack
“Different technology stacks lend themselves to different solutions.” – Jocelyn Goldfein
When you’re developing web applications, you’re at the top of the stack so you get to build quickly, reuse, and deploy on your own servers. You don’t have to worry about testing on a variety of environments, and if things break you push out a fix quickly.
As you continue to move down the stack you gain more control of application, but there is not as much reuse. You also don’t have access to the hardware, because you’re typically deploying your application to third party hardware. This means that the third party has to certify your application, i.e. the Apple Store. This means you have less control when it comes to updating your application.
Jocelyn tells us, “You have to think differently about how frequently you can update.”
Next, Factor in Your Business Model and Customer Needs
As technologists we get really wedded to the products that we’re building, that we often neglect the business model we’re operating in, and most importantly customer needs. Jocelyn reminds us, “It’s not a technology driven decision alone.” And to really ask ourselves, “ “What does it cost me and what are the benefits?” “Benefits are driven by your business model.”
What matters most to your customers and what are their expectations?
Well if you’re building enterprise software, then reliability is usually the top priority. If instead you’re building a consumer internet application, then you need to think about compelling users to want to use it versus need to use.
It doesn’t matter if your tech stack has the capability to do more, if that’s not what’s a top priority to your customer.
Jocelyn sums it up pretty well, “We have to be motivated by the person using our software. We have to remember that we cannot do everything in the world we’d like to do, so we should do what matters most to that person. When we design for the person we do our best work.”
Weigh the Cost of a Development Mistake Against Your Company’s Appetite for Risk
Jocelyn starts off by saying, “It’s easy to think of appetite for risk as a character trait or a moral quality. But it’s not. We think it’s just about philosophy or (founder) personality. If you make a mistake, what is the cost to fix it? And what is the pain to my customer?”
You can reason about it:
- Go back to the two main dimensions: technology stack and business model.
- As you move down the stack the cost of fixing it goes up and the pain to users goes up
- Higher in the stack pain to users is less
- Reasonable for consumer web to make a lot of mistake and fix them
- Systems level software the cost of a mistake is two orders of magnitude higher, so it’s OK to have a careful process, and test before you release
Onboard New Employees So They Know Your Values and Tradeoffs
And Jocelyn’s parting words for us are, “Software is a team effort.”
This means that as we’re recruiting people, we want to hire people who are aligned. The last thing we want is for people to make tradeoffs that cancel each other out.
So when you bring in leaders, you need to be conscious that the come from a background that emphasizes the same values as your organization. Or that they can adapt and you onboard them thoughtfully.
To learn more from Jocelyn, watch the interview on Femgineer TV.
Has your company recently made a tradeoff in software development? How did you feel about any risks involved? Let me know in the comments below.