Showing posts with label Software quality. Show all posts
Showing posts with label Software quality. Show all posts

Friday, July 31, 2015

Man and its computer, part 2


In part 1, I shared my conclusions about how similar today's computers are. They all run different applications, ranging from entertainment to productivity, from simple to complex. This post will compare in closer detail how graphical user interfaces (GUIs) of said computers help people to get the best out of their investment in these devices.

Desktop and laptop computers

When you use one for the first time, you see en empty desktop. The apps that you bought the computer for, are hidden somewhere else. A few app shortcuts might be visible by default, and the rest are tucked away below multiple steps for user to configure and manage.


Indication of an application that has been sent to background, ranges from subtle to quesswork. The desktop wallpaper, as seen in examples 1, 2 and 3, has clearly the biggest emphasis. It's however not exactly why these computers exists.

Phone and tablet computers

Upon starting one of these devices, user sees that applications are also divided between multiple locations, with iOS being the only exception here (example 1). It shows everything on a single location. Android (2) has multiple home screens, with all but few installed apps hidden in yet another place. Windows phone (3) is a mixture, while Ubuntu Phone (4) has much bigger plans than apps.


For an unknown reason, all applications that have been started, are demoted and hidden to a task switcher view. A design that looks and works like an afterthought. Windowed apps are slowly starting to appear, but still feel clunky and bolted-on solutions. The experience doesn't change when the device is connected to a larger screen. Only WP and Ubuntu phone are pursuing scenarios beyond the traditional desktop and mobile divide. Kudos for both for focusing on the future.

Console computers

The same pattern is sadly repeated. The software that user benefits from, is divided and scattered around the main user interface. The current game/app is prominently shown, but when it comes to seeing what else is installed, or running in the background for that matter, it's not what these interfaces are intended for. And consoles are usually connected to over 40" screens, so it's not that they wouldn't have space to put it in.


There's no support for multiple screens, and these computers are sometimes even more limited than mobile ones, due to shortcomings of gamepad input. Xbox OS has an edge over its competition in doing several things at the same time by allowing windowed operation of some of its core features, without breaking the context user was in.

  The verdict

Even though all computers and their operating systems are near identical in terms of what they do; companies developing them have chosen very different graphical user interfaces for them to do it. It means, that:
  • users have to memorize different interface conventions between different computers
  • multiple OS'es (or variants of them) are needed to support different devices
  • only big companies have resources to develop multiple products from different categories
  • massive overlap in required effort when developing software for multiple devices and/or operating systems

Back in the days, with just few computers around, there was no need for a common approach to GUIs. Instead, there was plenty of time, ignorance, workforce and money. As a result, we have several user interface paradigms, that all fail with various degrees. The shared mistake is focusing on building physical products with 'art directed' interfaces. A direction based on a personal perception how a particular device should be used, easily masks any digital similarities underneath the glamorous surface, abstracting important qualities all operating systems commonly share.

To sum it up..


Every 'signature charasteristics' that desktop, mobile and other interface paradigms have managed to pile up over these years, are merely distractions. They occupy minds of designers, developers and and end users alike. Our digital world is a hot mess - partly because of our obsession over the current categorization of computer GUIs and OS'es.

If something is certain, it's that software has never needed such arbitrary categorization - and neither do people using them. Future user interfaces will leverage different screen sizes and input types when they become available; instead stubbornly serving a single form factor, like they do today.

How can we help people to see beyond their lust for yesterday? How can future user interfaces better focus on increasing our human potential, if our preferences and behavior explicitly tells them otherwise?


Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.

Sunday, May 24, 2015

Good and bad software

I'm going to start with an argument.

Software exists because people are lazy; not that it's a bad thing. Throughout the history, it's been one of the greatest sources of ingenuity. A wonderful catalyst for ridding inefficiency.

It all started with a lazy person, defining a set of instructions for a machine, for it to do something people are bad at, and machines fantastic.

Those lines of code, running on a piece of hardware, helped that person to get more work done. Ideally, the time invested in instructing a machine to work for us, is far less in a long run compared to us doing all that work ourselves, impeded by human limitations.

Software exists to use computer's potential on tasks which people struggle with. People simply need to focus on instructing it. Sadly it's the focusing part where things usually take an unexpected turn from the ideal road. Right through the safety rail of professional training. Over and off the cliff of common sense. Straight into the bottomless pit of irrational. I visualized the problem below.


Given that a same amount of people, with equal skillsets, are working on a software project with identical goals, it's more likely that they end up with what I personally think as bad software.

Such software doesn't do what software is supposed to do. If you get stuck on the user interface part, you're missing the reason why people use your product. You have just instructed the machine to play hopscotch with the user, instead solving a user problem. The balance is just way off. Bad instructions, bad software. No amount of excuses change that.

Beautiful, well performing and behaving user interfaces can be built with relatively little amount of code, if you know what you're doing. If not, you easily end up with a complex and overdone interface; a monstrosity that needs even more complex customization options to tame -- or fire to kill, as it depends.

Still, game over.

Becoming blinded and trapped by the user interface iteration loop is very easy. It's the most visible thing for everyone in the project. That's why it's so important to be aware of this danger. Adding more interface easily feels like adding more value. How wrong can people be. You only waste resources on things that:
  • end up eating even more resources since you're stuck with maintaining it
  • restrict your options for potential devices and businesses in the long run
  • distract user from the real value your product offers = less appealing product
"But Jaakko, isn't there many other areas as well that affect software goodness / badness?"

Yes. There are. A lot in fact. However, this one is something everyone can and should understand. It doesn't take a computer science PhD to figure this stuff out. It's especially important for companies whose business depends on software quality. Even more so with startups and small companies.

I'm going to end with an argument.

Your company exists because people are lazy. Make sure your product focuses on helping them, like a good software does.

 
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.