Thursday, September 19, 2013

Introduction: I break UI

If I could pick any superpower right now, it would probably be copy cat from the TV series Heroes. I watch someone do something and I can instantly do it. Shiny! I can think of many, many other cool powers that would be fun to have (at least if I could keep the government or evil geniuses from finding out). Hey, there are probably millions of minorpowers that could be fun (as far as I am concerned, people who can remember other people's names easily are slightly superhuman).

I would not have chosen my power to be breaking user interfaces.




Hardly seems like a power at all, right? After all, pretty much everyone has had trouble using a user interface (UI) at some point. You feel like there is something you should be able to do with an application but can't find it, or you get an error that doesn't make any sense. You spend several minutes trying to figure it out -- no dice. You look in the help menu (usually useless). Perhaps you ask someone you know.

If you are minimally tech savvy, you do a search online or post a question to a website that seems relevant. If you are lucky, there is a blog post somewhere that explains how to do the task you are trying to do. Then you look up all of the steps in that blog post that you don't have the background to understand, and try to figure out what you actually need to do to make it work for you. Often, you find nothing helpful, or the sad cries of other users who have appealed to those same relevant websites, whose orphaned questions have gone unanswered. If UI is hard for so many to use, how can "breaking it" be a talent?

I break it more easily and thoroughly than anyone else that I've ever met.

Like many people with special gifts, it took me awhile to fully understand and appreciate my powers. My first software development job was for LogicTools, which was a relatively new company and had only 3 developers at the time. Because it was such a small company and the other two developers had other specialties that they found more interesting, I got to make just about all of the UI changes for their products for several years, which can be substantial for a relatively new product. Handing this responsibility over to someone who had just finished their first year as a computer science student could have gone really, really badly, but I did an amazing job and helped promote the success of the company. When I first started, I started mucking around with the current unreleased build of the software just to get a feel for it. And broke the UI many, many times. And learned to fix the UI. And found more ways the UI was broken. And fixed the UI. I found lots of way to import bad data. I created a database integrity checker that found bad data that previous builds of the product allowed. Then I fixed the database so the bad data couldn't get in. My ability to do what I think I have always called "looking for trouble" was legendary. This is when I first started to suspect that I had powers beyond the norm. When I started having trouble finding ways to break the UI, I created a set of manual QA tests that applied to each form in the product (I wish I'd known how to automate that at the time) and found several more nit-picky bugs in the UI to fix. Then I passed these tests off to the helpless slaves interns to do, so I could continue creating new stuff. Of course I continued to test my code and continued to look for trouble to help catch bugs in other folk's code. I was apparently the first person to tell MapInfo that their maps didn't include Turkey and Cuba (FYI Europe looks really, really strange without Turkey). I started to think, "Hey, I have an actual talent for finding UI bugs and designing UI that is easy to use."

Well, circumstances changed and I ended up moving to California with my husband. It took me a while to find a job (hint: do NOT move to a new state and try to get a job a few months after 9/11). However, I finally got a cool job at Triconex, which creates software that ends up in nuclear power plants, so it has really high standards for its hardware and software and doesn't make changes lightly. I don't think I created very much UI for Triconex (except a really cool test harness in .NET for something that was later scrapped), but I started out as the tester for (and kind of became the project manager for) a diagnostic tool that was originally just an internal tool. As you can expect with something that was previously an internal tool, I found A LOT of trouble. I hate to say it, but I do sometimes create bugs and am embarrassed when someone else finds them first. Perhaps this is why I do such a good job of testing my own code. However, I am thankful when someone catches a bug and brings it to my attention. I consider that the testers, customers, developers, etc. are working together to make the product great. I think if everyone else had the same attitude, the world would be a marginally better place. 'Nuff said.

I worked for several years writing technical documentation for Microsoft, but even though I worked there, I felt like just another whiny customer when it comes to making UI suggestions. If Microsoft ever hires me as a UI consultant AND listens to me (never gonna happen), I think the world will be a significantly better place, at least for anyone who uses Microsoft products.
(Aside: Just to clarify -- I am not anti-Microsoft. Overall Microsoft products are pretty solid because they are able to bring a huge amount of automated testing to bear. However, automated testing cannot tell you if the UI is easy to use and if you are creating the right software in the first place. I used to love many of their products and have hope they will someday return to the good side of the force.)

Ok, so I have a lot of experience breaking UI without even counting the bonus of having a last name (O'Madadhain) that breaks many applications and databases for free. (I mean, seriously, are websites supposed to be able to deal with weirdos with strange characters like apostrophes in their name without having server errors? The nerve!) I have been trying to use my minorpower to help the world one application at a time, but I think a change of tactics is needed. Believe me, I have gone out of my way to create clear, concise, repeatable, and helpful UI bugs and suggestions to companies the world over without noticing results. I'm hoping that this blog will help me convince companies to fix and improve their UI. Along the way I hope to learn more about web UI design and tools. I don't have great expectations that companies are going to fix these problems based on my past experiences, but I really hope I'm wrong and I'm used to being a customer advocate anyway.

I have never had a blog before and I know I'll probably make many newbie mistakes but, "it's better to do something imperfectly than do nothing flawlessly."