Build Opinionated Software

I have always judged how well software is designed by its default states. I strongly believe that well designed software works out of the box with minimal setup. I should not need to spend 2 hours chosing my background color and what style of icons I want it to display, it should already look beautiful. I do not want to choose how often my work in the app should be auto saved or where the temporary files are kept, this should just work for me. I use software to solve problems and most of the time I download a specific software because I like its style. I like the look and feel and I like the way its creators approach to solving the need I have.

Apple has always been a company good at this. The first iPhone is a fantastic example. They decide to finally bring a full fledge computer into everyones pocket and they were very opinionated how they wanted to do that. They wanted the phone to only work with your fingers, they wanted it to have a full browser on the phone, they designed text messages to have a threaded feel like instant messages (Yes I know you forgot, text messages were not always like this). They also have stuck to their guns and refused to add some features that are normal in other smartphones today like, switching out the batteries or expanding the space on your phone with a micro SD. Apple strongly believes a user should be guided and not left to fend for themselves figuring out the minutiae.

On Twitter you can only share using 140 characters and Instagram is a mobile only app. These are not design limitations these are design decisions. These constraints have led to the most creative uses of these platforms. I think it is actually lazy for a developer to hand over software to the consumer that has every setting imaginable. It is the developers job to carefully think of how to approach a problem and using the user interface guide users on how to they think the problem should be solved.

Every popular computer languge and framework today has a philosophy its developers subscribe to, that is how communities form, that is why people can resonate with it. Creating software that stands for everyone is creating software that stands for no one. You have to pick sides.