Bias for action

This is straight from Amazon’s leadership principles. It also seems related to binary/ruthless prioritization, the Agile principle of “Simplicity — the art of maximizing the amount of work not done”, and customer focus.

An ambiguous problem may have many possible solutions. We risk slowing to a halt investigating all of them. It’s helpful to regularly question if a given task is important. “Analysis paralysis” might describe this, but I prefer Amazon’s phrasing: “Bias for action”.

As a concrete example, in an interview, there may be many possible ways to solve a problem, but time is limited and solving the problem by any means is preferable to identifying all possible solutions without implementing any.

Architecture for Light

The Illuminating Engineering Society has a couple interviews with Kim and Paul Mercier, authors of a book called Architecture for Light. The content is fascinating, touching on anthropology, physics, engineering, design and their professional experience, but a few things stood out to me in particular as overlapping with software engineering:

  1. The role of people
  2. Efficiency
  3. Multi-disciplinary planning

People

Perhaps the connection to people is more immediate in the field of lighting design than software engineering, but the two have a couple things in common that can negatively affect usability: creative purity and cost efficiency.

In software and architecture, we can design something that’s aesthetically pure, but difficult to incorporate or maintain.

One of the best tools I’ve found in project management is a focus on the customer. This can help us prioritize and avoid ethical pitfalls.

Related, healthy organizations recognize software is built by people, and people thrive in a nurturing environment. For example, Google’s research indicated psychological safety correlated strongly with high-performing teams.

Efficiency

The Merciers describe an approach to lighting that minimizes electrical usage and maximizes sales, but focusing light on products. (A common alternative is to uniformly light a space.)

They mentioned the most cost-effective solution is to turn the lights off. This reminds me of a balance in software engineering: we need to maintain everything we build, so not building minimizes maintenance cost. A similar balance comes up in SRE: we can maximize stability by minimizing changes. Obviously, doing nothing has other costs, but having all options on the table opens up opportunities, such as only invest light where a customer’s attention produces value.

The Merciers propose a method that maximizes efficiency and usability. This was an amazing observation: not too long ago, daylight was the most efficient light source; it’s still very efficient, but we need to rediscover the skills to use it.

Multi-disciplinary planning

The Merciers recommend including lighting designers from the “imagination” phase of a project rather than pulling them in later. Lighting designers can then advise on structural changes to maximize lighting efficiency. They describe the opposite as an anti-pattern: bringing specialists in late to fix problems.

This reminds me of a tension when organizing software development teams: a “waterfall” model where each specialty contributes in sequence, versus an “agile” model where teams are composed of cross-functional members.

They describe several examples in their interview, but one reminded me of complex workarounds that can arise in software: a building design that let in too much daylight. They observed a small overhang would be ideal, but because the design was already finalized the building had to be outfitted with a mechanical shade.

Customer feedback

Customer feedback can come through a variety of channels. Here’s a list of the ones I’ve found valuable, and practices for aggregating feedback through these channels.

Channels

Inline survey

This is an in-context prompt for feedback, eg
“Like the service? ๐Ÿ˜€ | ๐Ÿ˜ | ๐Ÿ˜ญ”

Pros:

  • Relatively easy for feedback provider, resulting in broad participation
  • Confidential

Cons:

  • Limited signal
  • Hard to filter for quality participation

User research

This is when a company makes an open call for feedback.

Pros:

  • Long-form discussion
  • More control over participation than inline surveys
  • Confidential

Cons:

  • Quality of participants can vary

Partner interviews

This is when a company solicits feedback from valuable customers. I’ve found it useful to do this periodically, eg yearly.

Pros:

  • Long-form discussion
  • High-quality participants
  • Confidential

Cons:

  • Risk of focusing too closely on feedback from a small group

GitHub issues

GitHub provides a way for users of a repository to report issues.

Pros:

  • Public, so customers can pile on and follow progress
  • Intuitive for GitHub users
  • Reactions help capture sentiment
  • Easy to discover, eg via Web search
  • Enables customers to crowd-source support

Cons:

  • Specific to a repository

Slack

This is when a company maintains a public Slack channel.

Pros:

  • Good for quick Q/A
  • Enables customers to crowd-source support

Cons:

  • Can be noisy/interruptive. A support rotation can help distribute cost across team.

Stack Overflow

Stack Overflow enables people to ask questions about anything, but companies can use it’s features to support customers and collect feedback.

Pros:

  • Easy to discover, eg via Web search
  • Enables customers to crowd-source support

Aggregation

One challenge of having numerous feedback channels is distilling themes, identifying task and communicating progress. I’ve seen a few patterns to address this.

Product management

Collecting feedback from customers and using that feedback to guide planning is basic product management. Engineers may end up doing aspects of this, but they should get appropriate credit.

Dedicated support

This is when a company staffs a team to monitor all feedback channels. This team can also aggregate reports and/or work with product management to identify themes.

Support rotation

Distribute the cost of monitoring feedback sources across the team using a weekly rotation. This person will be completely distracted and may identify issues, so it pairs well with an on-call rotation.

Centralized tracking

This can be a spreadsheet or a full-featured bug tracking tool like Jira, but it’s helpful to have a single place to prioritize all issues and feature requests.

Delegated communication

If there’s a team that, say, owns a given GitHub repository, they can own the task of keeping GitHub issues for that repository synchronized with centralized tracking state.

Crowd-sourcing themes

One pattern I’ve seen work well is to split a team into groups, assign each group a subset of feedback, and ask each group to identify themes in that feedback. For example, as part of quarterly planning. This works well with large bodies of inline survey results.

Entrepreneur school

Problem

I’ve been an employee for most of my career, but many of the skills required for professional development as an employee seem entrepreneurial in nature; is there a more direct way to identify and gain experience with these skills?

The phrase "entrepreneur school" keeps coming to mind, eg a group employees could use to share information and support each other.

Solution

Customer focus

This seems to be the overarching principle. We’re in business if we’re delivering value to a paying customer.

A customer can be myself when hacking, a teacher in the classroom, a product manager in a team, or the more traditional definition of someone paying for a service.

This opens a couple questions: what do customer’s want? how to get customers? What I learned building Page.RESTโ€Šโ€”โ€Šfrom idea to paying customers in 7 days by Perera provides good tips, and Product Hunt is developing tooling around this called Ship.

Minimize cost & diversify

This is basic life advice, but in terms of product development we can bias toward the agile and lean development models: deliver the minimum to attract customers and get feedback. I don’t have experience with Ship, but I see it’s built with lean principles in mind.

Trusted feedback

In the workplace, I have experience inviting partner companies for lunch to hear their feedback.

Perera mentions use of slack channels with narrow membership for this purpose.

In terms of professional development, Write/Speak/Code recommends publishing written content to trusted reviewers first before the general public.

I wonder if this is an aspect of the traditional editor role in literature.