All Posts

How I use Roam Research

I stared at screens a lot this year. Roam Research made that time mostly worth it.

Roam is what you make of it. It’s ostensibly a note-taking app with an obtuse UI, but its product mechanics – bi-directional linking, easy page creation, embedding – allow for “networked thought” in a way that isn’t easy in other apps. Folks who use it religiously often describe it as a ‘second brain’. It’s extremely flexible: almost any writing process is possible in Roam, and increasingly Roam itself can be modified (e.g. support for custom CSS and JS).

Before using Roam I used note-taking apps sparingly and didn’t do any long-form writing or reflection outside of work. I journaled on and off but never developed a habit; I generally didn’t think of writing as a tool in my tool belt. Roam changed that. I started using it for journaling, but the use cases grew and grew, and eventually encompassed almost everything I type, save for messaging. Blog posts, grocery lists, recipe notes, book quotes, and more are all in Roam.

Continue Reading

Social/UGC products are uniquely difficult marketplaces

Social/user-generated content (UGC) products like Instagram, Twitter, or TikTok are a type of marketplace: creators are suppliers of content for consumers. In most marketplaces, suppliers are trying to maximize revenue, but in social/UGC suppliers have many different motivations: some want to maximize audience, while others simply want to share with their family or friends. Different motivations require different incentives, some of which compete or conflict with each other. This makes social/UGC a uniquely hard type of marketplace to build.

Marketplaces work by aggregating suppliers and consumers into the same space. Suppliers have incentive to use the marketplace because the consumers are there and vice versa. Marketplaces typically grow by incentivizing suppliers or consumers to use the marketplace more. Increased usage from one side of the market often leads to increased usage from the other side as well. Incentive design is thus a major activity taken on by organizations that run marketplaces; it’s one of the most effective ways to grow.

Continue Reading

The surprising impact of reducing batch size

“Ship fast” is among the oldest and most common pieces of software wisdom, getting repackaged over the years into Agile, the Lean Startup Method, or move fast and break things. It’s advice so trite that doesn’t even seem worth discussing, but I’ve been continually surprised at just how impactful it can be, specifically when you focus on reducing batch size.

A batch of work is a unit of work that gets shipped to customers. It could be a single copy tweak or a whole new feature; what matters is the end-to-end time from idea to production. Reducing it just means including fewer changes in that batch, not cutting out key parts of the product development process like UI polish, code quality, or QA.

At first blush, large batches might not seem like a problem. If you’re going the process is the same, what’s the difference between shipping feature X and Y together versus just feature X? I felt that way when I started working at Quora and was confused when I saw so much emphasis put into reducing batch size. But I was mistaken: there are a shocking number of benefits to reducing batch size, and I now think it’s one of the most important principles for shipping high-quality software quickly.

What makes small batches so impactful? The best explanation I’ve found comes from The Principles of Product Development Flow, a dense but great read on effective product development practices:

Continue Reading

Complexity can’t be removed, only moved around

A frequent goal in product design is to try and “make it simple”, which often manifests as removing product complexity for the end-user (e.g. removing steps from a flow). This may seem like it’s removing complexity, but in practice it’s usually moving the complexity to a different place – either onto the system, the organization that runs that system, other users, etc. Moving that complexity can still be the right decision, but it’s important to recognize that it’s not being removed altogether: it’s just somewhere else, with different tradeoffs that might be better or worse depending on the context.

Continue Reading

Users will satisfice

Satisficing is a decision-making strategy where you choose the first option that meets your criteria, rather than reviewing all the options available to you, e.g. ordering from the first restaurant that looks good versus checking out everything that’s open. In software, satisficing is common: tapping on the first link, tab, or action that seems like it’ll accomplish your goal rather than taking the time to learn all the things a product can do. In fact, satisficing is how most people use software. Most people aren’t going to spend the time to learn everything an app or website can do; they’ll spend the shortest amount of time possible to figure out if the product can help them accomplish their goal, and then move on. Despite how common satisficing is, designers often have trouble thinking in this mindset. Designers necessarily need to learn the ins-and-outs of the systems they are designing: how each feature works, how it interacts with other features, in what cases it does X instead of Y. But this introduces a curse of knowledge – once you learn a system it’s very difficult to put that knowledge aside and think in a satisficing mindset.

Continue Reading

Interfaces that help machine learning

Software ate the world, and now machine learning is eating software. More and more products are using ML to provide suggestions, rank content, or filter junk, thus making ML increasingly central to the user experience. When ML is good, it can create a delightful and frictionless user experience, like on TikTok. But making that happen requires ML and product design to work together – ML isn’t a magic black box that produces great experiences on its own. Under the hood, ML systems are just making predictions off of past data, and design decisions have a massive impact on the quantity and quality of that data (commonly referred to as signal). Thus, designers can have a massive impact on ML systems through their decisions. To unpack this, let’s look at some design patterns found in popular products and see how those patterns impact the ML in those products.

Continue Reading

The algorithm isn't everything: TikTok's virtuous cycle

TikTok’s algorithm must have the best PR in all of tech: a prevalent view is that it’s the singular magic behind TikTok’s success:

With the news that the TikTok/Oracle won’t include the algorithm and the possibility that Oracle will have to replace it, some have concluded that TikTok’s popularity will flatline, that it’s only a matter of time before Facebook eats their lunch via Instagram Reels. But despite Facebook’s previous success at cloning the competition, TikTok is a much more formidable challenge: they’ve built strong network effects on top of a unique graph that Facebook doesn’t have – one built on niche interests and esoterica rather than people you know or recognize. Historically, social products have been extremely durable to competition because of network effects, even more so when the graph is unique – Facebook being a prime example. Take the algorithm out of TikTok and it’ll certainly be hampered, but pure algorithmic advantages aren’t that strong of a moat: best practices dissipate through industry quickly, and most of what makes ML good in the first place is the underlying training data generated by user activity.

If network effects are what keeps TikTok on top today, is the algorithm responsible for getting TikTok here in the first place? The answer is a lot more complex than that.

Continue Reading

Snapchat and the myth of unintuitive design

This week, an idea that’s circulated in the design community for the last couple of years has come back into play: that non-intuitive, primarily gesture-based interfaces have been key to Snapchat’s success and moreover constitute good design. From Intuitive Design vs Shareable Design by Josh Elman:

I’m here to tell you that the obscurity of Snapchat’s design is not a bug, it’s a feature. Just like Tinder, it’s a design that’s made to engage people and encourage them to share their experiences with others. In fact, it is a key part of what has made Snapchat so successful. Snapchat is one of the greatest examples of what I call “shareable design.”

Snapchat is no doubt successful, but I’m skeptical that their gesture-based “shareable” interface is the reason behind that success – if anything, I bet it’s hindered them.

Continue Reading