The art of debugging life

Mariano Capezzani
9 min readMar 24, 2018

--

Why do we choose to build products?

I think all of us, in this profession, have an engrained sense of adventure. We climb mount Everest on the South side. We choose to build awesome products not because it is easy, but because it is hard.

Debugging life

Why do this? What motivates us? What makes us tick? What kind of people are we? What are we here to do?

We’re here to do one thing, folks. We’re here to create stuff, and get love in return. We build awesome products to make our customers awesome, and they’ll love us for it.

For me it began when I built my first app, 10 years ago. I was lucky enough for Apple editorial to choose it as a “New and Noteworthy” app, and instantly started getting hundreds of user reviews and emails. I have to say, there was some hate mail, but there was also love. Much love.

Random customers from across the world would confess: “I love this, can’t remember my life before Babymate” and “You’re awesome, this app is the best thing that’s ever happened to me”.

Should have been humbling, but in fact I just became instantly addicted to the feeling, to this power.

The power to create positive change in people’s lives.

A kind of glorious superpower. One flick of a switch and 4 million users will love or hate you, depending on how the gamble goes.

If we choose not to be evil beings, then this power can be used to solve many problems in everyday life. We debug life. We truly care about people. We’re selfless philanthropists.

But, as Uncle Ben warned, with great power comes great responsibility. So we must make sure we’re putting all our minds and hearts to this, and doing the best job we can.

So here are 7 essential skills for this tricky profession.

Read minds

First thing you need to learn to do, is read people’s minds. Remember the problem we’re trying to solve. We want to debug life. We want to understand what our customers do, what every day tasks they go through, and how we can aim to improve it by clever use of technology. We need to put our heads in their minds, think how they think. Sometimes asking customers what they want is not enough, you have to see life through their eyes.

Become the ultimate customer. Consume services as they do, not as they should. Stand from a position of potential discomfort for you. Pretend you don’t understand what you’re designing.

It’s easy to get locked in, resonating to a particular frequency and therefore unable to listen on other frequencies. It’s very easy to find what appears to be a great solution to a problem but, by optimizing it in predictable ways, reaching a local maximum. You need to avoid local maximums (maximi?), introduce a mutation factor, and regularly refresh your point of view.

Get out there and talk to people. Demand dissent. Question your foundations and validate or invalidate them.

This, to be honest, is not something you will hope to do in isolation. There are many bright beacons out there, so know thy space, thy industry, thy competitors, the opportunities and challenges, and capture the trends and patterns that emerge.

You must make it a habit of ingesting petabytes of information from all possible sources of insight. Though not all insight is information-driven. A lot of great solutions in this profession come from deep introspection and reflection. I call it a state of data-intoxicated intuition. Where you’ve learned so much that these patterns just emerge, while data keeps you honest.

Know the road, build the road

You’re the guy showing the way. If there’s a road, follow it, if there’s no road, build it. Make sure people follow. I find sometimes good PM’s have a hard time having people follow, and that’s because they are unable to tell a great story.

You need to create an epic tale.

A majestic story about why what we do as a team is relevant, how we’re facing challenges and attempting to creating something new and valuable for customers. Articulate the product vision in such a way that everybody can understand it. How this vision aligns with the company’s goals and creates value for both customers and business.

People love stories. Though sometimes this story becomes a bit vague, distant. I try to simplify the problem by articulating a near-future state of the product. Not the 12 months view, which is great, but something closer, attainable. I ask my designers to build prototypes of what the product will look like in a few months, with all our planned features and design updates. It provides a realistic sense of confidence and is a useful tool to illustrate what the roadmap is all about.

Sometimes this is not enough though. Sometimes to get your stakeholders to support you you have to master the art of corporate seduction. This means translating everything you think about into the right language your business partners will understand. Maybe a feature being “cool” makes no sense to anyone, but a feature contributing to churn reduction or brand positioning does. So fine tune your language. Less product-y and more business-y.

Once everyone is onboard, and know where to go, you realize that building stuff is hard, consumes resources, so it’s crucial to select the right things to build…

Focus on key problems first, big and important. Small later. Learn to say no, it’s immensely difficult. Use the acid test for every new feature you think of: does it follow the vision, the goals, does it add value to the majority, value on key journeys, good engagement, etc.

Once it does pass the test, comes the tricky art of prioritization. What to do next? Sometimes there are so many variables involved that it becomes a multi-dimensional balancing act. New features, enhancements, tech debt, platform changes, UI revamping, while making sure the release has a theme or a good mix of new features vs. improvements. I tend to build at least one key feature per release, and if there are a lot of pending improvements, I sacrifice the opportunity to add another feature to be able to add net positive value increment for users faster.

Dive into Tech

Knowing the road is good. All PM’s must do this right. But not all PM’s get tech.

You have to. You have to dive deep and understand not just how it works, but how your engineers use it.

Programming languages, development environments, frameworks, dependencies, packaging, testing suite, automated testing, pipeline builds, environments, deployments, production readiness checks, instrumentation, monitoring, devops practices, etc.

Don’t take production for granted. Take care of ops, production issues will unbalance your team and slow down product roadmap, make sure to add some slack to sprint planning if you run a devops team.

Not only this is a lot to take in and understand, but it’s not static. Tech is a movie, a series in episodes. Not a photo. Treat technology as a feature. You have to constantly improve it as well. Because tech degrades. Leave it alone and in 2 years you’ll have a product that might not be fit to continually improve. And then you’ll learn all too dearly about the economics of tech and its high compound interest.

Think function, breathe aesthetics

Design is as important as technology. Experience was everything to Steve jobs, it informed technology what to do.

To me, design is the art of putting emotion at the service of function.

A key task for a PM is to work with designers to make sure the experience and visual design does the job, where all possible complexity has been taken away,. It’s the art of removing everything while retaining function.

While doing so, make sure the product retains a good structure. A UX that feels cohesive, scales well as you add new features. Typically you’d prefer to use native patterns on whatever platform OS you build on. Why not adopt what’s common to other apps?

However, that doesn’t mean you can invent your own paradigms. But if you do, stay classy. Don’t over think the UI and over design.

Don’t be afraid to be inspired by other people’s good ideas. Steal. Embrace something you see and make it your own, improve on it, evolve it.

Stay afloat

This is about building a platform that does not sink. It’s what happens after the cute UX has captured customer’s attention. The emotion has subsided and rationality kicks in. It’s the night after.

Your business has to be sustainable. Many startups survive on piles of VC cash. When it runs out, they pitch again and get more. I’m not against it, that’s the way it is, because as you’ll see, it’s not that different in a big company.

I guess, what’s important is being honest to your customers, to create a product that can survives when things go wrong. Don’t promise zero fees forever and then introduce fees back 6 months later. You might cover it by saying you’re “transparent”, but really you have lousy strategic thinking or an ingrained sense of opportunism.

So, design for maximum buoyancy. A business model ensures you can deliver value continually without altering the essence of your product. Remain true.

I know, it’s hard to be successful without assumptions on growth but surely you can attempt to be cautious and not to over-promise, and question or fine tune the assumptions as you go along, to be sure you still have a solid product.

Over-promising is under-delivering.

Captain, not boss

Think Avengers.

They’re all super heroes, some of them gods even. Yet it’s the Cap that sets the moral standard, the one they will follow. He’s not their boss, obviously, but an inspiring leader.

Same in a great product team. Every one has superpowers. Every one is a leader in itself. But there is one guy that embodies the team’s spirit, the product’s essence. It’s the guy with charisma that will get the best out of people, create an environment and a culture that attracts top talent, and also makes hard choices when someone doesn’t fit.

Fire if you have to. I know I’ve hesitated and results weren’t great. Ive suffered from not firing sooner. In the end, it’s your responsibility to make team work and deliver the product.

So, get a great team of avengers, let them self-organize to do their best. Inject clarity and energy into the team. And make sure they understand you trust them, and you empower them to do their jobs, make their own decisions, find whatever path is best to deliver the product.

Love the product

Finally, perhaps the most important element. Passion, love for the product.

Choose a product you love, a product you want for yourself. Something you want so bad you will devote part of your life to it. Some product that you feel connected to. Love it like it’s your child.

I’ve been fortunate enough to work for products I’ve loved, and also ones I’ve hated. For those ones, I did my job OK, very professional, but I never went the extra mile. That really important extra bit where the best ideas come from.

Do you love your product?

--

--