If you’ve spent any time using software, you’ll notice that some applications just feel great. Maybe it’s Github, Basecamp, or something else. Using it just feels solid. But why are they great and how can I build great software?

Sometimes it’s hard to put your finger on just what exactly creates this feeling. As a user, you have this subliminal feeling that the software is great. That feeling comes from many things: speed, design, usability, and many other things.

As developers, everything is under a microscope. It’s easy to see where things might get complicated and that’s where the separate of great software and bad software begins.

Just take the simple example of dates and times. How are you handling timezones? Are you allowing the user to type in the date and time or are you forcing some jQuery widget down their throats? Which is easier to use often?

Things differentiate quickly now. You chose a jQuery date AND time widget because it’s easier. But you forgot to think about the users. They almost always are choosing a 15 or 30 minute increment of time. Oh well, what if we use a date picker and a drop down for times and let them edit the times if they need something more specific? Maybe you should. Maybe you shouldn’t.

All developers have problems with this at some point. Whether you’re a consultant or employee, you need to use the software that you are building. If you don’t, how can you know which is the best choice?

Remember that solutions problems in software is always going to be unique. If you don’t know the answer, ask your users. They won’t always know the answer either, so you can’t always ask directly. Show them one way, have them use it for real, and viciously take notes.

Did they get tripped up on how to set the time to 2:09pm? Then you might not want to have 15 minute time increments if they’re already trying to do things differently.

Good developers notice that these situations are problems. They may not stop people from using your product, but it certainly might stop them from using it twice.

Your job as the creator is to solve problems in ways that are elegant. Find out what things are a hinderance to the users and fix them. Minimum viable product can mean many different things. To me, it’s not viable if it’s hard to use.

Pay attention to what you’re building and you can create great software too.

comments powered by Disqus