On Forgiveness in UX Design

As engineers and designers, we need to focus on building products that have empathy and forgiveness for their users. 

Software is eating the world, but as it optimizes for engagement and retention, it leaves behind confused and exhausted users. 

Companies raise millions of dollars at billion-dollar valuations. With those valuations comes a drive to add new features. With the move to SaaS for everything, user interfaces and modes of interaction seem to change overnight.

Perhaps we could take inspiration from the consumer packaged goods industry. 

As a new father, I have changed diapers in various circumstances. In the dark, in the park, trying to mitigate a full-on meltdown and sometimes just trying to stem an avalanche of 💩. 

And yet, the diaper works as intended. Forgiveness is built into the design. I can operate it one-handed if I have to, and it gives some protection even when not used correctly. I can be confident that the design won’t change dramatically in the next iteration.

So, dear UX designer, next time you fire up Figma, think of the humble diaper, and a poor sleep-deprived dad dealing with a poop 🌋 at 3am. 

Think of the mistakes a user may make and design your application to forgive them and not punish them when they make those mistakes when addled, distracted, or simply exhausted.

On Resumes

The team at Jeavio just completed our Campus hiring drive for 2021. We processed over 500 applications from talented, enthusiastic and hard working students looking to start their careers in 2022.

I looked through a number of resumes as part of our screening process. It was a surprising and (sometimes) frustrating process. 

A consistent problem was students using the same (or very similar) single-page resume format. A good percentage of the resume also included personal details such as addresses etc. which are not really relevant at this stage of the recruitment process. I also have noted an explosion in folks including their CodeChef or HackerRank scores – again taking up crucial real estate that could have been used to try and differentiate themselves.


After many hours spent combing through hundreds of resumes – here are a few thoughts and tips for making an effective resume for someone just starting their career!


  • First impressions matter! Use a spelling and grammar checker to catch typos, misspelled words and poorly constructed sentences. Google Docs is free and does a fine job.
  • If you put a GitHub link in your resume, make sure it includes work you have done! Just a forked repo with no contributions is useless as a signal.
  • Your CodeChef or HackerRank score is not interesting. Most resumes I looked at this year had these scores and they don’t make your resume stand out.
  • A fancy resume layout is less important than the ability to write clearly. Typos in a beautifully formatted resume are an immediate disqualification from me.
  • Think about what makes you different. Interesting experiences, hobbies and an online portfolio is way more interesting than simply stating your GPA or your school projects.
  • Create a personal website – it’s easy! Use GitHub pages, Medium or any of a number of free services. Use the website to highlight your interests, passions, work and what you are looking for as you start your career. Use video, photos, writing – anything to make you stand out from the crowd!

On Modern Web Development

Tom MacWright wrote a much discussed article on the state of modern web development a couple of weeks ago.

He states that the current default of building a Web Application as a SPA using React, or something similar, in the frontend and an API on the backend is overkill.

This is both an opinionated survey on the current state of web development and an extremely contrarian take on current accepted wisdom on how to build modern web applications. It’s worth a read.


His premise is that we are adding additional levels of abstraction such as Virtual DOMs, Server Side Rendering, Bundle Splitting, etc. He even goes on to say that trying to generic, purely REST-ful APIs is a bit like tilting at windmills, since we end up having them tightly coupled with frontend code anyway.

I am sympathetic to this point of view — mainly because I am rapidly transiting to “grumpy old man” phase of my career, and I find modern web development workflow terrifying complex. I had to work on a React application a couple of years ago. It made me want to run back into the warm embrace of Java Swing development (oh beautiful Java Swing).

The pure beauty of Java Swing

But, I also want to note that software engineering is pretty fashion driven where we bounce around between too much and too little abstraction. Every generation has this battle — Java didn’t have enough features so we ended up with Java EE, Java EE was too bloated so we ended up with Spring, the Java language was too complex so we built Go. Go is missing Generics so we will go ahead and add them. The pendulum keeps swinging and we have a complexity crusade every 5–7 years or so. Unsurprisingly, it has been just about 5 years since React has become the defacto way of building web applications. Time for the backlash!

I am sure we are going to be back at folks writing pure HTML and FTP-ing to an Apache server day now 😉

Less Certainty, More Enquiry

Lessons from Maria Konnikova’s The Biggest Bluff: How I Learned to Pay Attention, Master Myself and Win

The Biggest Bluff by Maria Konnikova

Maria Konnikova is a journalist, writer, and professional poker player. I came across her an interview with her on the excellent Knowledge Project podcast. She intrigued me enough to want to know more about her journey, so I picked up her book, “The Biggest Bluff: How I Learned to Pay Attention, Master Myself and Win.”

The Biggest Bluff is Ms. Konnikova’s account of going from being a complete poker novice to a tournament-winning pro. The book is not a “how-to” guide to making millions in Vegas. It is instead a meditation on learning, paying attention, and making decisions.

I enjoyed following Ms. Konnikova on her journey. Here are some things I took away from the book.


Paying Attention to the Present

Poker is a game of simple rules but complex behaviors. Success relies on luck and the ability to understand and predict what other players on the table might do. Ms. Konnikova had to pay attention to the cards on the table and how the other players had played throughout the day and tried and figured out what their tells were.

She also had to learn to pay attention to herself and identify when she was fatigued, and take appropriate action when going off course.

John Von Neumann describes poker as the perfect game of incomplete information. But, by paying attention, it is possible to identify when emotions get in the way of sound decision-making and to try and predict your competitors’ actions and consequences.

In life, just like in poker, paying attention to the present is table stakes.


Intuition vs. Process

Ms. Konnikova is dismissive of intuition or “gut feeling.” She says we have intuitions all the time, but we are terrible at telling the right ones from wrong. She suggests that we trust our intuition only if we are an expert in the area.

As a novice poker player, she had to work hard to identify and suppress false confidence. She did this by learning to distinguish the action and the outcome from the thought process. In the short term, it didn’t matter if she won or lost a hand provided she was thinking through things correctly. In the long run, this focus on process meant that she would have better inputs and eventually the right conclusion with more experience.

I agree with the author that we are terrible at linking outcome to process. Luck, both good and bad, always adds noise. But by having a thought-through strategy, we can avoid false confidence and learn to avoid the pitfalls of relying on unreliable intuitions.


Avoiding going Full Tilt

In poker parlance, “tilting” is when a player lets irrelevant emotion cloud their thinking. You start tilting when another player or an aggravating circumstance gets under your skin and makes you emotional.

As one of very few professional female poker players, Ms. Konnikova dealt with misogynistic behavior from her fellow players. From being called “little girl” to being propositioned on the poker table — these unpleasant experiences did end up getting under her skin and affected her game.

She came up with techniques to become mindful of her emotions. She wanted to experience them but be self-reflective and not let them affect her thought process.

Humans are emotional. We experience life through emotions and can never be purely rational. Ms. Konnikova says the key is to identify irrelevant feelings and develop strategies to ignore them — avoiding going full tilt.


Making Good Decisions

Poker forces a player to place a monetary value on the opinions driving decisions at the table. Having a flawed decision-making process makes going broke a likely outcome.

As she became a better poker player, Ms. Konnikova became less confident in her opinions. This may seem counter-intuitive — surely becoming more experienced means becoming more confident in your opinions! But Ms. Konnikova made better decisions when she forced herself to question her assumptions. Her decision-making process relied on paying attention, not relying on flawed intuition, and having a well-practiced process.

Judging the success or otherwise of a decision-making process is more straightforward in poker than in real life. If you lose money consistently, you might want to either stop playing or take a close look at how you are playing. Judging success in other domains may not be easy, but having a clear decision-making process remains crucial.


Conclusion: Less Certainty, More Inquiry

We often end up making decisions on auto-pilot. We take received wisdom and our intuitions for granted. When bad things happen, we attribute them to bad luck, crappy circumstances, or other external factors.

But, as Ms. Konnikova’s mentor advises her, it is better to be less certain about things and always inquire, ask questions, and to think through things for yourself.

To have any chance of success in complex domains, it is essential to be aware of blind spots, pay attention to what is happening, and have a deliberate and well-understood decision-making process.

The Biggest Bluff is an entertaining, well-written, and thought-provoking book. Ms. Konnikova’s journey pushed me to take a closer look at how I make decisions and to ponder where my blind spots lay.

Cultivating Range: Lessons for Startups in a Wicked World

Introduction

I recently read David Epstein’s book Range: Why Generalists Triumph in a Specialized World. The book focuses on how to cultivate broad thinking strategies to learn effectively. Epstein’s focus is on individuals. As I made my way through the book, I saw that the points made in this book apply equally well to teams.

Range by David Epstein

I work with and advise early stage technology startups. I learnt a lot while reading “Range”. In this post, I explore how the lessons from “Range” can benefit technology startups or teams looking to launch a new product.


Thriving in Wicked Environments

Epstein introduces the concept of Kind and Wicked environments. A chessboard is a kind environment: the rules are clear, and actions are deterministic. Strategies that work in one situation should work well in similar cases. However, in the real world there are feedback loops and second-order consequences that are difficult to predict. It is a rapidly changing Wicked environment. Strategies that worked well in the past can stop working due to changes to the external environment or the market’s reaction to your previous actions.

We see this pattern repeatedly in the world of startups. Ideas that seem destined for success fail because they attempt to solve a problem that is no longer important or serve a market that no longer exists.

To thrive in a Wicked environment, a team may need to take conceptual knowledge from one problem domain and apply it to an entirely new one. The ability to think broadly and to be able to deploy flexible solutions to complex problems could be the difference between a successful product launch and complete failure.


Creating Innovative Products Through Analogical Thinking

Epstein describes Analogical Thinking as —

“The practice of recognizing conceptual similarities in multiple domains or scenarios that may seem to have little in common on the surface.”

Barriers to entry in the information economy are low. While anyone can launch a software product or service, successful companies frequently bring together ideas from different fields to build a compelling product.

Uber brought together logistics, mapping, mobile experiences, and access to an entirely new labor market to create a transformational service. Snowflake’s recent success is another example of a business built on the convergence of industry and technology trends. They successfully executed a simple, in hindsight, idea — cloud-only data warehouses.


Building a Successful Team

In Superforecasting, Philip Tetlock quotes the Greek poet Archilochus: “the fox knows many things, but the hedgehog knows one big thing.” Hedgehogs are specialists — they love to focus on one problem and usually work within their specialty’s confines. Foxes tend to work across various disciplines and work under ambiguity and contradictory conditions.

Epstein cites Tetlock’s research in forecasting and shows that in the face of uncertainty, individual breadth is critical. Similarly, teams that were open-minded and embraced a wide range of experience outperformed teams of narrow specialists.

A Team of Foxes may be more effective in a startup

Early-stage teams need to be open-minded and willing to change their assumptions and pivot when circumstances demand it. As a company matures, it may become useful to include specialists to refine a product and idea. However, having too many specialists at an early stage could lead to tunnel vision.


Choosing a Technology Stack

Gunpei Yokoi was a legendary video game designer at Nintendo. He designed the Game Boy. In Range, Epstein talks about Yokoi’s concept of “Lateral Thinking with Withered Technology.”

The heart of his philosophy was putting cheap, simple technology to use in ways no one else considered. If he could not think more deeply about new technologies, he decided, he would think more broadly about old ones.

You can still see this philosophy in play at Nintendo today.

The Nintendo Gameboy — A Lateral Application of Withered Technology

This lesson is of particular importance for startups with technical founders. It is tempting to be on the cutting edge of technology. But few customers will pay to use a product because it uses a fashionable technology stack. The ability of the company to solve the customer’s problem is way more important.

It may be more productive and faster to build a product using battle-tested, well-understood technology that is quickly and cheaply available. Just like Nintendo, a startup must cultivate a relentless focus on delighting the customer. Technology choices should come second.


Deploying Data Carefully

Startups are encouraged to be data-driven. They optimize for metrics such as customer behavior metrics, sales funnels, infrastructure costs, etc. The danger for the startup here is relying too much on data to make decisions without considering the market or whether the data is relevant to the vision of the company. As Epstein says — the critical question to ask is:

‘Is this the data that we want to make the decision we need to make?’

A dogmatic data-driven approach may lead to doing the same thing in response to the same challenges over and over until the behavior becomes so automatic that it is no longer recognized as a situation-specific tool.

An over-reliance on data can lead to actions that may improve the metrics the team relies on, but may not help the company in the long run to achieve their strategic objectives.


Making the most of External Advisors

Formal or informal advisors can play a critical role to the founding team in a startup. The most effective advisors are outsiders who may be removed from the company’s problem but may help reframe the problem that unlocks the solution.

Epstein notes —

‘A key to creative problem solving is tapping outsiders who use different approaches so that the “home field” for the problem does not end up constraining the solution.’

An outside advisor may offer solutions to a problem the founding team may not even consider because they are too close to the problem.


Knowing when to Give Up

Thirty percent of startups will go under within two years. Fifty percent will fail within five. Running out of money is the most common reason for failure. If a startup keeps trying to execute the same plan despite not gaining traction, it will fail.

Startup culture venerates hard work and not giving up. But here, Epstein provides an essential quote from Seth Godin:

‘We fail when we stick with tasks we don’t have the guts to quit.’

The best, most thought-through plan may fail when it comes up against external conditions — like a global pandemic. Persevering through difficulty can be a competitive advantage, but knowing when to quit can also be a significant strategic advantage. As a startup, it is vital to define and understand the conditions in which it is clear that Plan A has failed, and it is time to try something else.


Conclusion

Building and running a startup is exciting, scary, and can be extremely challenging. It rewards being able to adapt to complex, changing environments. It is vital to pick the right problem to solve, identify the correct tools to solve the problem, and build a team that learns how to make the most of diverse skill sets. Leveraging data and being metric driven can help guide, but must not constrain decision making. Leaning on external advisors and investors is essential to help keep the team grounded and provide different perspectives to solve tricky problems.

Finally, success is not just about persevering through difficult times; it also involves knowing when to quit and when to pivot. A battle may be won simply by disengaging at the right time.

Range is a fantastic book and one that I strongly recommend. The lessons in the book are important not just for individuals but also for teams.

Do you know your dependencies?

A contributor on GitHub finds an abandoned, but popular JS library and commits code that targets a Bitcoin wallet made by a particular company. Hundreds of other libraries use this library making this vulnerability affect thousands of applications since it is a transitive dependency.


Photo by Bryson Hammer on Unsplash

NPM (and npmjs.com) provide a valuable service in hosting JavaScript dependencies. By blindly upgrading to latest version of libraries, developers can open themselves to malicious attacks similar to those described below.

I would recommend developers understand how npm’s package lock mechanism works. This will ensure that your dependencies are reproducible and force the use of known and trusted modules instead of downloading the latest version.

This is not a problem just with the JavaScript eco-system. Python (via pip or conda) and Java (via maven & gradle) have similar issues. However my, totally subjective and un-scientific, observation is that JavaScript libraries tend to have way more dependencies (see the “left-pad” debacle for example)..

Ars Technica has a good write up about this particular issue: https://arstechnica.com/information-technology/2018/11/hacker-backdoors-widely-used-open-source-software-to-steal-bitcoin/

On Mental Models

A poorly illustrated guide to mental models

I had come across the term “mental model” before, but I could never really articulate or understand clearly what that term met. Today, while listening to an excellent podcast on Farnam Street with Venkatesh Rao (RibbonFarmBreaking Smart), I came across this passage which made a lot of sense:

I don’t think, really, mental models are so much about how the world works as much as they’re about internal consistency. Think of the world, the universe we live in as an extraordinarily confusing place that’s throwing huge amounts of information at you in an extremely high bandwidth way.

The Knowledge Project – Venkatesh Rao

So far so good — we all are familiar with information overload. But it’s not just the information in a particularly dense book or a John Oliver segment on chicken farming, even the very act of perceiving the world involves dealing with a huge amount of sensory input. Anyway, back to Venkatesh..

There isn’t enough processing power in the brain to handle that input raw. Our brain is basically layers and layers of processing that throw out most of it and map it to a sort of toy universe inside our head. It’s this toy universe that we actually play with. The only thing we ask of this toy universe inside our head is that it be much, much simpler than the world itself, and that it be internally consistent.

The Knowledge Project – Venkatesh Rao

So this “toy universe” is the mental model of the world. And the consistency of that mental model is what keeps us sane. When faced with external stimuli that don’t make sense or that does not map to the internal mental model, weird things happen. When faced with rapid societal change, some people turn to religion to try and make sense of the perceived chaos, or perhaps to make things simpler. Some choose nostalgia and the comforts of a simpler time and we end up with religious extremism and nativist politics.

What I took away from the podcast was the importance of tending to your mental model of the world. To let enough stimuli in to refine the mapping form the external to the internal and to be confident in getting rid of models that no longer map well to the external world. Easier said than done!MOSTLY HARMLESS