From Atoms to Bits: Building Software from Cow Paths
You can build anything in software. Focusing on the way people already work will help make your software invisible and necessary. Read: "Everything Starts Out Looking Like a Toy" #161
Hi, I’m Greg 👋! I write weekly product essays, including system “handshakes”, the expectations for workflow, and the jobs to be done for data. What is Data Operations? is a post that grew into Data & Ops, a team to help you with product, data, and operations.
This week’s toy: an elevator programming game. Write a function (or functions) to ensure the elevator serves as many passengers as possible before the time runs out. It starts getting more complicated when you add elevators and is surprisingly addictive. Edition 161 of this newsletter is here - it’s September 4, 2023.
If you have a comment or are interested in sponsoring, hit reply.
The Big Idea
A short long-form essay about data things
⚙️ From Atoms to Bits: Building Software from Cow Paths
It’s not easy to be a technologist these days. For almost any problem you can think of, there is a solution claiming to be a cure-all solution. When you’re comparing a platform-centric tool with a point solution that is narrowly focused on the task at hand, which one should you choose? Is it better to solve any problem, or more beneficial to have a strong solution rather than a “technology in search of a problem”?
Drawing inspiration from college students who create their own paths across campus rather than following the laid-out sidewalks, let’s explore why vertical software solutions might be the better way to improve workflow in specialized industries.
The Cow Path Principle
When students cross a campus, they rarely stick to the sidewalks. Instead, they forge the most efficient routes, creating organic paths that serve their specific needs. Similarly, in the software world, vertical software can offer tailored solutions to specialized tasks, whether it’s accounting, car repair, or salon management. Unlike platform software that aims to be a jack-of-all-trades, vertical software focuses on optimizing a series of related tasks.
How can we take that principle and apply it to software? One way to do that is to focus on vertical software use cases instead of platform software use cases. Vertical software solutions that help teams do multiple tasks and workflows that are dedicated to a related set of work tasks. Platform software, in contrast, focuses on creating universally available capabilities customizable to any task.
Whether you are an accountant preparing taxes, a car repair shop servicing cars and customers, or a hair salon reminding customers of their next appointment, you are following specific tasks for that service. There is a physical workflow that already works for this task, and well-designed software can make it better by taking care of some of the tedious parts.
How specialized software can help streamline tasks
Platform software has a disadvantage when you are building it to follow a specific new task. The problem? Though it can do almost anything, that platform software is probably not optimized for the specific workflow that’s relevant to your business.
Software is good at counting items and keeping track of a workflow for you. But the tasks of that workflow could vary wildly from business to business and unless you’ve done that task before, it’s hard to know whether the generic task workflow promised by some software will work. Think of this as the equivalent of a recipe you’ve never cooked before. Unless it’s vetted by people who like that kind of food, it’s pretty hard to know how it’s going to turn out.
Specialized software takes the concepts of platform software (managing records, alerting external systems, and counting things) while placing these concepts into a much more user-friendly package. Maybe you don’t know how to manage security for users, but you do know what parts of the process they are responsible for. Perhaps you’ve never created an integration with a Google sheet, but you know you need a report exported to a place you can review.
If the software is invisible – meaning it doesn’t get in the way of the other things you’re doing to run your business – it’s far superior to platform software that you need to learn to get stuff done.
“Invisible” software fades into the background by making the everyday process of running the business integral to using the software.
An example: Digitizing the workflow of car repair
What does it look like to make invisible software that will make a physical process better?
Let’s take an example of core maintenance for cars. When you have an internal combustion car, you need regular maintenance:
oil changes
brake checks
tire rotation
There are other related maintenance tasks that don’t come from the same vendor (car washes, detailing, and similar). You probably don’t keep a calendar when these things need to get done.
Clever software developers have built systems that tie into your mechanic’s record-keeping systems and let you know when you’re late for an oil change. They change the process of remembering to read that sticker in my car or the need for the mechanic to call me and turn it into a digital reminder.
Platform-style software gives me (or the mechanic) the functionality of setting a reminder (3 months or 3,000 miles is a good mnemonic, even if it’s no longer as accurate as it once was). But it doesn’t take into account the kinds of factors that specific sensors in my car might share (is my driving using more oil, has the filtration failed, or other).
Even if the platform has a great reminder feature, there’s a service aspect here that’s tied to the workflow of the specific kind of service.
For our fictional car repair example, it’s cool to have a reminder email. But why doesn’t my mechanic schedule the service for me with an opt-out or rescheduling provision? And why isn’t there an option for someone to come get the car pick it up and drop it off when I’m done?
A lot of people would pay more for that.
Adding a behavioral loop to the frequent things that people do is an example of how a digital process can improve the physical service experience. The software makes it easier for any business to follow the experience pattern of the best businesses in that category and makes that better for the customer.
Why vertical software vs. platform software?
Platform software might never be invisible to the person using it because of the goal of being all things to all people. If you don’t optimize your workflows for particular tasks, they are going to seem generic and won’t be the right choice for every problem.
Vertical software limits the possibilities of what you could deliver vs. an open platform that lets you do anything. But this verticalized software lets you do an amazing job helping someone to do tasks they do many times a day.
Like college students selecting their preferred path through the campus, skilled workers will find the best way to get their job done. We are taking the physical and analog processes that are happening and digitizing them.
That might sound like a weird strategy to start by copying the status quo but really it’s a strategy to avoid the cognitive load of learning new software while getting your job done.
The real 10x improvement is knowing the right improvement to make
Software needs to be more clever than simply counting the number of days since your last appointment. John Gourville writes in “Eager Sellers, Stony Buyers”:
Many products fail because of a universal, but largely ignored, psychological bias: People irrationally overvalue benefits they currently possess relative to those they don’t. The bias leads consumers to value the advantages of products they own more than the benefits of new ones.
That means buyers are going to be focused on “what have you done for me lately” when considering a software purchase.
Why are we focusing on existing physical processes when designing vertical software? It’s a thing that people already think about and therefore they are better at evaluating whether a digital version of that process will improve their business.
Gourville writes that both sellers and buyers overvalue the efficacy of their solutions by 3x, requiring a 9x impact to break through the noise. You don’t need a 10x improvement to a task that people do every day to create value, so focusing on the vertical solution and demonstrating that you know their business is a winning strategy.
What’s the takeaway? Software success is often measured by user adoption. Give yourself an advantage by selecting the right style of software for the problem. When the problem is well-known, consider using vertical software that deeply integrates with the task at hand and becomes invisible. It’s likely a lot more suited than its customized platform equivalent to delight the customer.
Links for Reading and Sharing
These are links that caught my 👀
1/ A blueprint for dataviz - The Royal Statistical Society created a guide for best practices in data visualization. Whether it’s finding the optimal visualization for your data or just getting an idea of how to present things in a bubble chart, this guide can help.
2/ We’re not ready for immersive design 🤢 - I’m not a VR pioneer, probably because I get motion sick more easily than the average person. So the prospect of “immersive design” makes me a bit queasy. Is the idea of providing a new way of browsing cool? Heck yeah. Just make sure there’s a button to turn that stuff off, please.
3/ A thought experiment on productivity - John Cutler’s latest essay points out the importance of understanding which behaviors cause engineering productivity drain. I’m not sure how to quantitatively measure some of these ideas, and it’s an intriguing frame to consider how to remove anti-patterns of productivity from the workday.
What to do next
Hit reply if you’ve got links to share, data stories, or want to say hello.
Want to book a discovery call to talk about how we can work together?
The next big thing always starts out being dismissed as a “toy.” - Chris Dixon