Dec 16 2011

Android Lacks Polish

I’ve been an Android user since the HTC G1 first came out. Since then, I’ve had and used the Google Nexus, HTC G2, and the Dell Streak 7. I’ve tried to like my Android devices but they lack polish or frustrate me in several other ways. The first annoying lack to details is noticed immediately as soon as you un-box the device. Just turn over the device and you’ll see three or more logos, the maker logo (such as Dell, HTC, or Samsung), the carriers logo (T-Mobile or Verizon), and the product name or other insignia. Apple products just have the Apple logo. On Android devices, you’ll have different logos each placed on the back plate separately, the vendor’s logo will be etched into the back while the carrier’s logo will be some cheap vinyl sticker placed afterward.

My personal pet peeve with Android devices is the craziness with moving apps from the internal device’s memory to the external SD card. Even relatively recent Android devices such as the Google Nexus and Dell Streak 7 have less than 1GB internal memory so if you download a lot of apps you’ll soon need to move apps around to the SD card. But some apps you can’t move to the SD card so that presents a different issue.

Who cares if the phone’s memory can be extended by using higher capacity SD cards if a one year old device can’t even be upgraded to the latest Android version. So the whole thing with extensible SD cards and moving installed apps from the internal memory to the SD card I find completely and frustratingly useless. The whole concept of an Operating Systems is that best manages the resources of the device, the Android OS should best manage installed applications in either the internal memory or SD based on some intelligence. Why am I doing Android’s job?

Another concern I have with Android devices is that they usually come with a lot of pre-installed apps. For example, my Dell Streak 7 came with Kongregate Arcade app which I can’t remove and reclaim the wasted internal memory. Similarly, carriers and vendors add and customize Android so that no two devices have the same user experience.

My last concern with Android’s lack of polish is its dark goth color scheme. Most application’s menu and option screens are as if they were designed by a goth listening to The Cure. The Android UI design is not “Just Like Heaven.”


Nov 9 2010

The Programmer’s Triforce

I don’t remember where I read it or hear it, but the idea that a computer program is a combination of code and data has stuck with me. I would only add that a great computer program is designed with the user experience in mind. There is a design pattern that embodies this idea of code, data, and user experience is Model-View-Controller. This combination of programming and design elements forms a foundation of any program I’ve designed that it manifests in The Programmer’s Triforce.

The Programmer's Triforce

The Programmer's Triforce


May 1 2010

Software Engineering in Pictures

In a typical day, software engineers, use diagrams, charts, and a ideograms to represent the software systems we work on. The biggest problems with software can also be described visually, such as the following image which tries to explain problems of software engineering.

Software Engineering Explained

Software Engineering Explained

When software engineering is that complicated, just imagine how the software application produced in such an environment looks like.

How Software Looks Like

How Software Looks Like

Creating a clean, simply to use, functional application is harder than you think. Only a few companies have been successful with simplicity. Most enterprise applications look like a mosaic of buttons and text fields.

Stuff That Happens UI

Stuff That Happens UI

Here is a screen shot showing the complexity of a software application.

FileMatrix UI Complexity

FileMatrix UI Complexity

If you have any images, graphics, diagrams, or charts that illustrate the complexity of software engineering feel free to share in the comments.


Apr 17 2010

More Hats, More Problems

Software users didn’t take Knuth in college and you should not expect them to have a Computer Science degree to understand how to use your application. There is no worse assumption that a software programmer can make than to assume that end users know what you are talking about, especially when there is so much miscommunication involved in specifying, designing, implementing, testing, and releasing a software application within an internal team. Your users don’t understand your language, they don’t understand what you mean when you say object-oriented, exception handling, concatenated document, application server log file, null pointer, database query and they don’t care so don’t use these expressions in labels or descriptions in your UI! If you have to explain your User Interface to a end user, your are doing usability wrong. Forget leaky abstraction, there is nothing worse than leaky implementation details in your UI. If your users have to use suspended disbelief and take your word for it to understand how your User Interface works, you should go back to the drawing board.

One of the reasons why the User Interface and User Experience is so horrible in applications, especially internal and enterprise applications, is that they are done by programmers, usually prototyped quickly, and shipped soon thereafter. The truth is that programmers have to wear multiple hats, depending of your company size, these included tester, computer programmer, domain expert, UI designer, type editor, IT, security guru, database administrator, system architect, document writer, and more. In addition of having to fill all of these roles, there usually must be done in a tight deadline with many technology risks, unknown factors untested partners, and already late dependencies.

The simple fact is that the more hats a programmer wears the less productive he will be. If you have programmer having to manage your version control system, update your application UI, and debug memory you are not getting your monies worth. The more hats you have developers wear, the more time it will take to context switch, the more time you spend tracking down issues, and the more you pay in the end.