How do you make software?
I hate to disappoint fans of The Social Network, but it does not involve writing obscure equations on the inside of our windows and gazing pensively out at the mysteries of the universe. It does involve a lot of hoodies, though - our office is freezing.
When we decide to implement a new feature, we start off by brainstorming. FadingRed co-founders Brit and Whitney painted an entire wall with chalkboard paint, so it’s the perfect space for discussing and sketching out new ideas as a group. Since we all work in the same room, it’s just a matter of swiveling our chairs to face the board. There are a lot of different opinions, but our goals are always the same:
Attention to Detail
No feature happens accidentally. Every transition, every selection, and every display has been thoroughly discussed and lovingly constructed.
Minimalism
Our apps are easy to use, and part of making them easy to use is focusing on features that people use and leaving out what they don’t. No one wants to look at an endless parade of buttons when all they want to do is save. It’s like sifting through a drawer of avocado cubers, strawberry hullers, and peach pitters when all you really need is a knife. What you don’t include is just as important as what you do.
Intuitiveness
As Steve Jobs stated, design isn’t about interior decoration. It’s a subconscious indication that nudges the user towards what they’re trying to accomplish. It’s about making information accessible and understandable. It’s about crafting an experience that flows so effortlessly that the user doesn’t realize how much thought went into creating it.
Functionality
This one might seem kind of obvious, but we love making products that are useful in our own lives. There are fewer things more satisfying than when a friend asks what we do and then interrupts our explanation with an excited realization that what we make is just what they need.
—
After we’ve nailed down the properties of the feature, how users can interact with it, and how it fits in with the rest of the application, we can start coding. How big the feature is determines how many of us will be working on it. Though one person can write an entire feature (or, as is often the case, an entire application), it’s generally not possible for all of us to work on the same exact thing at the same time. At a certain point, tasks can no longer be broken down into subtasks that can be performed in parallel. As Fred Brooks so eloquently wrote in The Mythical Man Month, “Nine women can’t make a baby in one month.”
As work progresses, we need to iron out details, compare UI mockups, and reconsider previous assumptions. Because we’re so small, issues can be discussed and updated almost immediately. After much coding and testing, the feature is ready. After we finish enough individual features, we release a whole new version, which is what prompts users to update their software. For such a tiny pop-up window, it represents a lot of hard work.
But we’re not done. There’s no point to adding a feature if people can’t actually use it. That’s why it’s so important to us to respond to user e-mails as soon as we can. When people e-mail on Christmas morning wondering how to get all 12,000 songs from their iPod onto their shiny new MacBook, the response isn’t coming from someone half a world away who hasn’t ever touched our source code. It’s coming from our founders.