Why We Build Simple Software
In this post, we’re going to talk about the value of simplicity in software. Simple tools are easier to use, more reliable, and more valuable than their complex counterparts.
First, let’s start with my car.
I drive a 2020 Toyota Corolla Hybrid, which I bought used in Spring 2021. It has four wheels (well, five if you count the steering wheel), airbags, a stereo, and it gets 55 miles to the gallon. Unless it’s hiding something, I think that’s about it.
In the last three years, I’ve driven it 40,000 miles and I’ve never had to take it in for maintenance. It’s a boring car, and it wasn’t too expensive.
My car is simple, efficient, and reliable. I’ve never opened the manual or been confused by something it did. Toyota doesn’t sell training courses on operating the car, it just works.
Simplicity in Software
Software companies like Pickcode can learn a lot from the lowly Corolla. Computer scientist Edsger Dijkstra provides us with two useful quotes for transferring our learnings from cars to code.
“Simplicity is a prerequisite for reliability.”
“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”
Our goal at Pickcode is to make tools that computer science teachers can rely on day in and day out – the commuter car of coding platforms. According to Dijkstra, and our own experience, the first step towards achieving this reliability is to reduce the number of things our software does. On Pickcode, students can edit and run code, teachers can see what they’ve worked on, and that’s about it. This is intentional!
There are solutions on the market that do a lot more than Pickcode – and in my eyes, their complexity provides a pretty compelling argument for signing up for our platform.
What Complexity Looks Like
My Corolla doesn’t have a function for grilling hamburgers, or veggie hot dogs, or anything like that. From time to time, I actually do want to grill food, so maybe Toyota should add that feature?
Imagine a future comparison chart that the Grill Car Company could add on their site!
Feature | Grill Car | Toyota Corolla |
---|---|---|
Gets you from point A to B | ✅ | ✅ |
Grills hamburgers | ✅ | ❌ |
Grilling hamburgers is a truly useful feature for a car, but at what cost?
- I now need to fill my car with both gas and propane.
- In an accident, my car will have an extra chance of blowing up.
- Carrying around the propane tank will lower my gas mileage.
- I probably already have other ways to grill hamburgers outside of my car!
This is a contrived and silly example, but the point holds. Companies add extraneous features to their products all the time, and comparison charts like the one above are commonplace in software.
A consumer in a hurry can easily just count checkmarks and be convinced by a proverbial “used software salesman” into buying a product bloated with features they don’t need. The salesman will also convince the consumer that the extra (and likely useless) features justify them charging a higher price.
That last point is the most pernicious. What is actually more valuable?
- An expensive car with a million fancy features that broke down last week.
- A cheap Corolla that has never caused you a single issue.
The Corolla owner has won twice – they paid less and got more!
What You Can Do About Simplicity
Builders of software and tech can help their customers by prioritizing simplicity, but they won’t always do that, due to the backwards economic incentives described above.
So, as software consumers, we need to watch out! Don’t get tricked by marketing websites that showcase a million features that their competitor doesn’t have. Nine times out of ten, the simpler product is cheaper, more reliable, and a better value.