How much planning is enough?

Few years back, I was sitting in Bunker Coffee with Luke for our 1:1.

Luke tells me, “you know, no matter how hard you plan, the error rate of our decision doesn’t change much. If we take path A today versus next week, after having a whole lot more meetings, we still don’t know what we don’t know. What do you think?” He’s always polite to leave space for me to respond.

We were just coming from a team discussion on how to implement a feature. The team couldn’t arrive at a decision. Our most experienced devs wanted to spend more time thinking and white-boarding a solution.

Luke was right of course. We needed to move forward and discover unknowns. But when do you “just start” versus spend time in the drawing board?

Luke doesn’t just write code. He also builds houses. He’s worked through many building projects to know that there has to be a solid plan. However, software is far more malleable. Most decisions made in code can be changed. What truly matters is understanding dependencies in the work being performed. Dependencies can make altering decisions far more challenging.

Generally speaking, further down the stack you go, more upfront thinking is required. In other words, volatility in code and product increases as systems get closer to customers. Remember images like below that encouraged us to front load all issue tackling to save money? Well, they are wrong. Most solutions can do with making mistakes and validating assumptions sooner than later.

Image showing cost of fixing bugs at different stages of development. Fixing in production is 150x costlier.

Not everything fits this model

The feature we were debating was for a mobile app that didn’t have a large number of users at this stage. That is the second piece to consider: customer impact. For systems that have broad customer impact, more consideration needs to be taken. If millions of users are going to be affected by a certain identity verification system, perhaps more thought should have been given. This is why as products scale, feature development does take a little longer.

Even when there are changes that are high impacting, there are tricks to go faster. It is even more important to learn about unknowns and arrive at informed decisions in these products. A simple way to get there is to reduce scope of changes. Scope can be reduced by either limiting customer exposure or breaking the change down to small iterations.

If you are running a project, always ask your team how something can be delivered in half the time. You can’t bend time and space; things will take longer than predicted. But you can have achieve outcomes sooner than you think.

Dependencies and customer impact

Many tend to be very risk averse, especially in high revenue environments. Like I talked about in “Companies Grow” post, this can become an attribute of growing companies, even to the point of rejecting innovative ideas altogether. More planning becomes the answer to please this conservativeness.

Moreover, developers are always looking to develop the ideal system; they hate writing throwaway stuff. There is natural inertia towards being careful with every change.

We should always keep in mind that these actions have a price attached to it. Being agile fundamentally requires us to try things, learn from them, and try again. We are always wiser for having reworked our solutions with new insight. Mature teams understand this. They aren’t afraid to test solutions, validate assumptions and go back to the drawing board. They aren’t afraid to fail. Like Luke reminded me, there is just always a chance of failure.

Lastly, remember… (maybe this is a construction industry thing) …as my house builder points out, “a plan is just a starting point.” Actual work lays ahead of you.

🎧 Difference between RGB, CMYK and Pantone

https://www.theverge.com/2022/11/17/23464129/ai-photoshop-robot-art-and-a-big-fight-about-the-future-of-colors

AI Photoshop, robot art, and a big fight about the future of colors. We covered all that on the latest episode of The Vergecast, along with what Dall-E and other platforms will mean for copyright law, the difference between CMYK and RGB, and much more. AI art is coming, y’all!

I finally know why Pantone colors exist.

Conflict Resolution

Recently, my friend shared this story over dinner. He is an iOS developer.

He had been tasked to create a core component for his company’s design system: a container view that sweeps over other views. But there was an issue with how padding was applied. The designer in charge of the component insisted there should be a fixed padding set for content. Most developers who used the component wanted to define custom padding. He was getting lots of requests by others in the company saying their designs can’t be achieved with the new container’s implementation.

Those who worked with me on frontend projects know, bad margins and padding really drives me crazy. They seem to be the trickiest thing for large companies.

My friend goes back to the design partner to change the requirements for the padding. “Let’s set it to zero and let people put things inside a layout view”. The designer explains, “design system needs to be opinionated; all views inside the container need to have the same padding set for consistency”. The tennis match was one of stamina. Conveying how practical usage is suffering didn’t really matter. My friend got tired and gave up after running around the court.

Conflicts like this happen all the time. Perhaps, it would help to think through a framework that helps both parties arrive at shared understanding and agreement.

Eliyahu Goldratt, in the book It’s Not LUCK, guides conflict resolution towards finding common objective. Each action in conflict is motivated by a requirement, which in turn, is motivated by an objective. If we can work back to find the common objective in a conflict, we have the opportunity to inspect underlaying assumptions and work towards resolving the conflict.

So in our story, we have…

Developer: [A. Leveraging the design system to unlock consistency]← [B. Flexible system that matches feature designs] ← [D. Remove default padding]

Designer: [A. Leveraging the design system to unlock consistency] ← [C. Consistent component behaviour through fixed values] ← [D’. Apply default padding]

My favourite thing about this framework is its invitation to show empathy. It forces us to inspect motivations on both sides. Conflicts are part of working as a diverse group of individuals. Being able to understand differences and learning to view problems from many lenses helps teams do amazing things.

Let’s take another piece of wisdom from (the super awesome book) Crucial Conversations by Kerry Patterson to help us.

Often, a conflict exist because each party doesn’t have the full picture. Much like a Venn diagram with two partially overlapping circles, each party has unique knowledge with some shared understanding between the two. We should approach conversations with a level of curiosity to close the gap on shared understanding (bring those circles closer together). What do you know that they don’t? More importantly, what do they know?

Going into a debate thinking you want to “win it” yields no favourable outcomes; only annoyed people having formed a poor opinion of you.

Again, this is sounding a lot like empathy.

A. Leveraging the design system to unlock consistency

Going back to our conflict, I played the designer and debated with my friend. We both asked “why” a whole bunch and tried to explain the differences of theoretical and practical issues.

This is where we arrived (if you care for technical details)…

Some containers describe layout patterns while others define interaction patterns. For example, a Card is a way to lay content out. A Dialog or a Split View may be more of an interaction pattern. Perhaps, we need to have an a rule in the design system on how to approach these two types of components. It make sense for layout views to pad content. How about interaction patterns? Perhaps the rule is to pair interaction components with a layout.

This seemed like a path forward to figuring out how to resolve the conflict.

Conflict resolution is all about empathy. Empathy builds great teamwork, which builds great products.

🎧 Is Google Search getting worse?

Great Freakanomics podcast episode to inspect if Google Search is getting worse.

There is a part in there about how Google accidentally ran a 1% hold out group that don’t see ads for 8 years. They found “3 percent more searches from people who had ads than didn’t”.

Great insight.

If you liked that episode, here’s another recent favourite of mine: Are personal finance gurus giving you bad advice?

Companies Grow

As successful products increase in revenue, companies grow. Growth allows a company to improve their products, support more customers and create additional value-add services.

Growing up isn't easy. As a handful of engineers become hundreds, or even thousands, the added weight introduces many issues. These can often lead to the opposite outcomes of what growth should have brought: products falling short of providing value and unhappy customers.

-

Why is that?

As companies grow in size, chaos takes over. There is a need for structure to allow humans to successfully exist with one another. Typically, employees are grouped into "teams" and each team is assigned ownership over part of the product. This allows teams to work alongside others to achieve a larger outcome. Often, metrics are put around these areas to understand if progress is being made.

For example, an e-commerce product would usually be split up based on customer flow (or funnel). There will be teams tackling home and landing pages, search, product pages, payment, receipts and so on. Landing and homepage teams only work to increase SEO rankings and "click through rate" to product listings. Product page teams care about converting customers by sliding them to payment.

To ensure all these groups work well, we add management. Managers keep track of progress and tackle a constant stream of people problems. Sometimes, they are also to blame for these problems.

That's not enough. There has to be a way groups can communicate effectively and coordinate tasks. This layer of protocols is "process". Process mandates its participants work to a standard. When mistakes happen, process tightens up to prevent future occurrences. When efforts are successful, process digs deeper. In all instances, process wins.

These pieces that form the structure -- team layouts, metrics, management layers, process -- overtime leads to an organisation becoming more rigid. Rigidity, unfortunately, takes the innovative drive away from organisations.

-

Safi Bahcall, author of Loonshots, managed to capture this in an equation.

From "Innovation Equation" (HBR): In organisations, the competing forces can be described as “stake in outcome” versus “perks of rank.” When employees feel they have more to gain from the group’s collective output, that’s where they invest their energy. When they feel their greatest rewards come from moving up the corporate ladder, they stop taking chances on risky new ideas whose failure could harm their careers.

M = E x S² x F / G

M = certain size at which human groups shift from embracing radical ideas to quashing them

  • E = equity fraction — the extent to which incentives reflect the outcome of projects as opposed to rank within the organisation
  • F = fitness ratio — relationship between project-skill fit (PSF) and return on politics (ROP): F= PSF/ROP
  • S = management span — average number of direct reports that executives of the company have
  • G = salary growth — average step-up in base salary

He points out that organisations can alter the point in which they become too rigid by employing certain strategies to move the "freezing point".

-

Rigidity has its purpose.

Rigidity brings order to the chaos of having a huge community of people. Society needs laws, companies need rules too. Drawing lines between disciplines, roles and product teams help keep things under control. But, of course, you won't find innovation in excel spreadsheets.

Rigidity helps an organisation be more disciplined and operationally excellent. It protects revenue. That is a key thing to think about: at some point, the organisation will squash attempts to innovate because it could hurt current revenue. Only proven, incremental changes are allowed. Changes have to be discussed, reviewed, checked, approved by many layers of management (that's why most employees just sit in meetings all day without building stuff). It won't even matter if the products are slowly degrading, as long as revenue stays on green.

If an organisation is full of professionals and makers, can't they override these tendencies? It is not quite that simple. In 1960s, Stanley Milgram ran an experiment to understand authority and obedience. He had an authoritative figure order a teacher (participant) to give increasing amount of electric shocks to a learner as they incorrectly answered questions. Two-thirds delivered fatal shocks to learner and no one checked on the suffering humans in the next room or stopped the experiment. Milgram concluded that people can exist in two states: autonomous, where they direct their own actions and, agentic, where they pass off responsibility of consequences to someone else.

Yep, it is hard to break out of a hierarchy of authority. Autonomy doesn't come for free. We have to create the right environment for it to flourish.

It is tough to steer culture back. It can be done.

-

Some companies try to break out by hiring high profile individuals from already successful companies. In the book Inspired, Marty Cargan talks about how many of these new hires have acclimatised to an organisation that's slowed its growth. So they aren't always best equipped to push the organisation towards innovation.

I've only had the opportunity experience the reversal of rigidity in one team thus far. In my previous team, the leadership team actively worked to bring part of the organisation to a more fluid state. While it will take this entire series of posts to explain pieces of it, there are some basic observations I made.

  1. We made a hard turn to focus heavily on outcomes
  2. We dropped all notions of what process works. We taught everyone how we worked and told them to change it.
  3. We worked extremely hard to take power away from leadership and push it down to the grassroots. In fact, we went as far as to break HR management hierarchy from the project work we did.
  4. We came up with a new branding for people who were willing to forego their silo and breakout... we called them Makers.

Wise words from a tall man: playing the long game

Vithun with some words of wisdom: vithun.com/posts/playing-the-long-game

...the longer the game one is in, the more they have got to be able to let something go. And not just let it go, but take it off their mind and start from blank for the next thing coming their way. Reacting to everything is something one does when having a shorter-term mindset.

Leave some balls. Thanks @vithungajendra.

Changing jobs

I left my job at the end of August. It was scary to leave Expedia Group after 8 years. There were a lot of good times, growth and friendships 💌.

Given the global spread of 125 makers reporting up to me, the job was challenging and stressful. In the last 8 weeks, I've refocused my energy towards creative pursuits and resetting.

Good stats to prove:

Perhaps the best data point of all is this…

Resting heart rate down by 10bpm

Resting heart rate down by 10bpm

Many have asked if I sleep in more… no I don’t. Something I realised in my time off is that true freedom is the ability to spend time on things you want. Time is the ultimate luxury item.

What's next?

I will be joining GoDaddy as Senior Director, Engineering for the Managed Wordpress team. I've never worked on an open source product as a full time gig. This is going to be a lot of fun!

App Store

Something we used to talk about in university was the impact an operating system can have on people. A system designer imagines the future and creates capabilities that its users can leverage. It is a form of influence on users to adopt the imagined future. Users, however, behave in unpredictable ways. A system starts to take a life of its own when users leverage these capabilities in creative and innovative ways the author didn't anticipate. This leads to a relationship between the two parties where they influence the future together through observation, experimentation and imagination.

Mobile operating systems are the most impactful operating system of our day. Billions of people are in a serious, intimate relationship with their mobile devices. This relationship, however, is not a traditional 2-way pairing. Modern operating systems have APIs that application developers can take advantage to enter into this conversation between users and system authors.

App stores are a crucial piece of this relationship. They directly impact the type of relationships we have and who we meet in this ecosystem. That shapes our experience and our future.

Apple should be careful steering its App Store.

App Store policies have a specific function: policies keep the ecosystem at a healthy state. Healthy ecosystems grow and flourish. Apple's main viewpoint in keeping its store healthy is to create a safe environment. This ecosystem is diverse, many of whom are non-tech-sperts (like my mum), who needs help with technology. This is a good strategic differentiation for Apple's brand and offering.

Safety has a lot of layers. To name a few: protecting users from scams, preventing issues on devices, enforcing age appropriate content and privacy, are all parts of feeling safe. These help users.

Developers also need safety. That is done by having access to robust tools, cover from external pressures (like litigation) and an environment where they can compete fairly to gain the favour of users.

App Store does implement many policies around these issues. They scan applications, weed out bad actors, have features like "privacy labels" to ensure transparency. For developers, they provide tools, APIs that make it easier to build wonderful experiences and at times, protection from litigation (from pesky patent trolls).

The issue is that App Store policies aren't all targeted at creating a "healthy ecosystem". They are also targeted at the ecosystem yielding high revenue. Now that most people who needs an iPhone has an iPhone, growth has to come from services and future hardware products. App Store revenue is important to this formula. This is similar to issues faced by Netflix: successful companies running out of room to grow.

There are few spots being targeted for revenue on the App Store: payments, ads and competing services.

Ads are not on brand for Apple. It is a premium product, nobody wants to see cheap casino ads. The issue here is that ads are in direct competition with privacy. Good ads are context sensitive and relevant to the user. Recent ads debacles show that they need to dive deeper to make a great ads product (the kind Kevin Systrom will be proud of).

The payments situation is a mess. There was clear thinking around app sales tax (30%) and in-app purchases for a while. However, users and developers are behaving in unpredictable ways. Technology is moving quickly with new payment types and ways to deliver experiences. The system author has given rise to these innovations but now has to grapple with the reality that they don't generate revenue.

Few things come to mind:

  • Bitcoin, Blockchains and NFTs have ushered in new ways to own and purchase goods. App Store policies are hurting NFT trading altogether.
  • Games are moving towards subscriptions and "stream on any device" models. App Store policies simply don't allow for such innovations to play in the ecosystem.
  • Modern day social media was born out of iPhones. Their existence has transformed many areas like marketing, shopping and entertainment. App Store is yet again trying to apply old rules onto these new spaces.

Read more: Apple flexes its control over App Store

These actions show App Store is unprepared for the innovation that is flourishing in the ecosystem.

Beyond payments, Apple is competing with other services in the App Store like music streaming. This is causing developers to realise the relationship is not built on mutual trust and equality. There is a clear dominant party here.

So, there are some problems.

Apple's focus has been to increase revenue from its service offerings. That has required them to test the boundaries of the relationship they have with developers and users. All the while, the platform is moving forward in unpredictable ways. Innovation is taking place under their noses.

I think it is time for Apple to observe and adjust its policies and systems so that innovation continues on their platform. I dislike seeing developers pull features from their apps on iOS. It is feeling like owning an iPhone has become a disadvantage.

There is nothing wrong with getting return on the investments made on these amazing devices and software platforms. It has to be done in a way that doesn't strain the relationship we have with them. The only real way to make long term revenue from services is to work on keeping the ecosystem healthy. It needs to stay safe and have room to grow.

🎧 The amazing history behind The Pirate Bay and its fight to stay open

A gripping story about a few kids getting together and fighting power in the open Internet. Account given by one of the founders. Love it. Have a listen.

https://darknetdiaries.com/episode/92/

The Pirate Bay is a website, a search engine, which has an index of torrent files. A lot of copyrighted material is listed on the site, but the site doesn’t store any of the copyrighted material. It just points the user to where you can download it from. So for a while The Pirate Bay has been the largest places you can find pirated movies, music, games, and apps. But this site first came up 2003. And is still up and operation now, 18 years later! You would think someone would shut this place down by now. How does the biggest source for copyrighted material stay up and online for that long? Listen to this episode to find out.

If you liked this episode, Money Maker #102 and Synthetic Remittance #124 are great too!

Hackathons

I don't like Hackathons.

I remember when they went from fun to not-so-fun. I was part of the frontend modernisation project at Expedia. It was a long arduous project, filled with many many technical and people challenges. I loved it. Every day felt like a rush and we were doing something difficult that was going to have major impact. When the next company hackathon came along, I was more interested in carrying on with my regular work. What I was doing was more important and rewarding.

Hmm... does this mean people who love Hackathons just don't like what they are working on? Perhaps, they have a better idea to move the needle for the company? 🤔

From then on, Hackathons felt like a surface fix for a larger problem the organisation didn't know how to address.

Why do people love Hackathons?

Answers I've gotten over the years:

  • It's my idea
  • No processes or reporting
  • Something different
  • Low bureaucracy
  • Get to the end quickly
  • Opportunity to learn something new
  • Don't have to have a dozen meetings

In other words,

  • mastery
  • autonomy
  • purpose

People feel more driven.

This is no different when you work on home projects. Or when I write these posts. We have greater motivation.

I say, forego hackathons. Create outlets in every day operations to help people engage at the level of a hackathon.

  1. Make sure people understand why and are engaged in the problem being solved. It is more important that makers fall in love with the problem to be solved, more than the solution.
  2. Create opportunities to pitch and test new ideas out. According to Marty Sagan in the product management book "Inspired", most good ideas for the product come from the dev and UX teams. Provide a way to let those great ideas bubble up. Work on them.
  3. Generate a structure that is high in autonomy. Trust the people you hire. It is difficult to build great products in a top-down tyranny.

Don't encourage doing all-nighters though.

Recently, my good friend Jacquie sent me this YouTube by Corridor Crew. We were saying, they seem to have a lot of fun at work. Can yours been this cool?

Make every day work meaningful; make it fun.