The User Interface

I suppose it's a bit of an exaggeration, but I'll say it anyway: The Most Important Thing in mobile app development is an exceptional user experience.

As I mentioned at the start of these articles, some people perceived the rise of the browser as a huge step backwards in user design. Looking back, it's easy to forget that the browser started off as a document reading application. It was much later in its evolution that basic form controls and media were added. In the 90s, there were the "browser wars," so if a developer did anything unique in a web application, they usually had to write it multiple times - once for each browser they wanted to support.

The rise of the web application presented another set of problems: The initial tooling was rudimentary (at best), and the software development coding methods were primitive. Most early web applications were attempts to mimic earlier client-server applications, and the results were poor.

All of these issues contributed to a poor user experience. However, these issues were not The Most Important Problem. The Most Important Problem was: Poor design choices by the development teams.

In the IT community, the inability of programmers to design an elegant UI is practically a bragging point. In the Java community in particular, an artificial barrier seems to exist between the coders and the designers. In fact, one of the selling points of JSPs was that it would allow two different teams to work on an app: The developers and the designers. And while different team members each have their own specialties, this approach encouraged programmers to ignore all aspects of design.

Early in my career, I got sucked up into this way of thinking, and I once had a manager ask me if I tried to make a particular application's UI bad "on purpose". (That's a true story.) Fortunately, I ran into a few colleagues who were able to both code and make things "look good", and it completely changed my way of thinking.

Good UI design doesn't come easily to me; I have to work hard at it. I make many iterations on a screen or a button before it becomes usable. Often, it's painful to make these changes, and I think in my mind: "I should farm this work out to someone else and just get back to 'real' development." However, I resist that urge, because an elegant UI is so critical to success in the mobile application development space. Also, if you truly commit to learning some basic design skills you'd be surprised at what you're able to accomplish.

To be clear: I wouldn't call my designs "elegant", but to me they're acceptable. I'm also not beyond asking for design help from those who are more skilled at it than I am. It's just that I can't afford to be unskilled in such a critical part of mobile development. So for this reason, I keep on trying.

If you're a developer that's balked at taking on design, here are a few tips that may help you get started:

  • Visit the app stores and install some highly regarded apps. Take note of what works well and what doesn't.
  • Leverage the expertise of others: There are great clip art sites which provide either free or inexpensive artwork.
  • At the start of your project, think of the UI first.
  • As you progress, ask people for feedback. If someone tells you they don't like it, don't take it personally. Instead, ask probing questions as to why they don't like it. Often, they're not sure as to why they don't like it, but after some back-and-forth discussion, suggested improvements emerge.

The remainder of this article will focus on building an initial home screen for the Futile Fishing application.