Where in the world are the great user interface developers? – Part I

UI Guru Ad

After a six months long search, we have finally filled our UI Guru position. While recruiting is not easy these days, it is next to impossible to find an excellent UI developer on any given date.

There is vicious cycle preventing good people from programming UI and pushing good UI programmers to other domains. I will try to describe this flawed process and maybe even start a movement to fix it…

Here is how it works:

1. Development managers unusually come from the server, networking, kernel and database walks of life.

2. Software mangers tend to be arrogant .They presume UI programming is easy, boring and can be done by anyone.

3. UI developers earn less money than kernel\networking developers.

4. The best programmers do not want to become UI experts, as there is less money and prestige in it.

5. As most UI developers are not excellent programmers, they write the code in non modular, non reusable fashion. Thus it really becomes boring and manual to fix. Even if an excellent programmer happens to start in UI, he soon wants to move on to the server side, or at least become a team leader.

6. As a result of the above, the development manager belief is encouraged, since most of their UI coders are not very impressing. They pay them less and distance them form the real interesting product decisions.

Examining the myths leading to this outcome, I believe they are flawed and irrational.

“UI is not an important part of the application”– thankfully, people have largely grown out of this perception. The success of Outlook, iPod, Nokia, Google and others has demonstrated that exceptional user experience carries a huge premium.

Even in more traditional enterprise based security software the rule applies.  If the feature does not have a visible, clear, user interface it might as well be removed. When I worked in Check Point, we sometimes tried to roll out features with no UI, because UI always seemed to be the bottleneck. We rarely succeeded.

In one famous case, we added a dialog to features that existed in the product for two years. The interface was simple and we assumed the task would be quick and easy. We were very wrong. Not only the UI was complicated, it turned out the features themselves are not working and need to be designed from scratch.

The features were turned off by default when they were first released, so they never ran in the field. Off course, no bugs came from support and everyone assumed they work well. QA stopped testing them, as they were pushed to the magical “Test Cycle 3” which never actually takes place. Our sales and marketing people did not really promote the features and customers did not even know they existed.

“UI Programming is Easy” – Yeah, right. If it is so easy, how come it is always the bottleneck?  I managed software projects in multiple programming language and various organizational structures. X\Motif, MFC, C++, Java, Swing, AJAX etc. I experimented with UI programmers as a separate group, as integral part of the main application team and as outsourced team. The projects domains were in enterprise, consumer and Telco .The developers were Israeli, American and Belarusian.

The one common aspect was the UI effort was almost always the bottleneck in the development process.

Server developers tend to think UI is easy, because one can create a trivial application very quickly. Sadly, most applications are far from trivial. Generating high quality user interface, which is maintainable, modular & pretty is extremely difficult. Unlike backend programming, every mistake is highly visible and everyone has an opinion on the subject.

“UI Programming is boring, tedious and manual”

Strangely, many people think programming kernel drivers with VI in “C”, armed with printf debugging, is more tedious than writing a modern application in C# & Python, using Visual Studio.Net.  Personally, I find the internals of kbuf, mbuf, ioctl & NDIS tiresome and frustrating. If one wants to hand craft assembly code, he might as well become a hardware engineer.

It’s true the debugging Cascading Style Sheets can be frustrating, but so is analyzing core files on Linux machine and the memory is one big mess. Sometimes it seems that the typical male programmer finds it more prestigious to hunt down the prey with bare hands 🙂

The truth is that UI programming and design can be extremely challenging. When done right there are sophisticated modeling, design and coding involved. There is always some manual, event customized code that needs to be written, and this tends to be less generic than server code by nature. However, the usage of more modern programming frameworks compensates for that and makes it much more fun.

Stay tuned for the second part of the post – Binary search and the UI Guru.

Debugging Core Files


Tags: , , , , , ,

5 Responses to “Where in the world are the great user interface developers? – Part I”

  1. joch Says:

    Interesting post, well written, full of completely flawed arguments.

    The big problem is the basic assumption that a good UI programmer is one
    who designs good UI. A good UI is built of two orthogonal parts:
    1. A user-friendly, convenient, coherent and (hopefully) pretty UI design.
    2. A good software implementation of the above design (for whatever
    definition of “good” you choose, but this definition is not much different
    if you implement a UI, a networking protocol or a kernel module).

    The problem with UI design is that, as you rightfully noted, everyone think
    they can do it (hey, I’m a user, I use user interfaces all the time, I must be
    able to design a good one…). This is completely wrong. Designing good
    user interfaces requires a completely different set of skills than writing
    good software – empathy, sense for aesthetics, being able to interact with
    normal human beings. I know very few good programmers who poses
    these skills. Letting a programmer design your UI is like letting an engineer
    (rather than an architect) design your house – it will be functionally right,
    but you’ll hate living in it.

    I say you should take an example from the most UI-centric applications
    out there – computer games. In every decent game producer company,
    there is a very clear distinction between the programmers and the content
    creators. Sure, there must be a strong interaction between these two
    functions, but they are separate. Each one of them is doing what he’s best
    in – the programmers program, and the content creators create content.

    Similarly, in every software application that has a user interface which
    doesn’t fall into the “trivial” category, there should be at least two functions
    involved with the UI creation – a designer and a programmer. The designer
    designs, and the programmer programs.

    For some reason, software managers typically have many hesitations before they hire UI experts. I see two reasons – one is the “everyone can do it so why pay for it” mentality I mentioned above, and the second one is the extra cost. Well, guess what – it doesn’t really cost you more. A good UI expert will actually save you money, by shortening your UI programming time (since the programmer won’t have to waste her time trying to do something she’s not capable of – designing good UI), and by allowing you to hire a .NET programmer to implement it (rather then an expensive VI-enthusiastic, kernel dwelling programmer with high regards to printf debugging…). In fact, in many cases you don’t really need to hire a UI expert full time – once the design is in place, he’s only needed
    occasionally for updates. You should hire one full time, though, if the UI is
    a major part of your software, or users won’t use it…

    Now, where do you find those good UI designers? Well, once we have
    removed the requirement that they should also be programmers, this
    task becomes much easier. Find a complicated web site which you believe
    has a good UI, and talk to the designer – in most cases, she’ll be happy
    to design your software UI for an amount which is less than your monthly
    expenses on office coffee. Well, I got a little carried away here, but you
    get the point…

    Disclaimer – the commenter is a former UI designer who got frustrated
    over and over again by lousy UI designs done by programmers. In
    fact, the commenter was also frustrated by his own lousiness in designing
    UIs, which caused him to switch to programming…

  2. ophirk Says:

    I fully agree with your Joch’s comment,with few ,minor exceptions.
    It is an excellent choice to use a dedicated usability expert and a graphic designer.
    This is actually what we are doing in IT Structures.
    Still, once we have the UI Concept and graphics ready, the programming is still a big challenge.
    In a way it makes the problem of finding a great developer even harder, since the they might miss the interface design part.
    On another note, I would love to get an excellent user experience expert for the price of our monthly coffee supply.
    For the skilled ones, the rate is 50$-80$ per hour

  3. Donny V. Says:

    I am working on a database project where the client wants an easier way on traversing through there data. The current interface is web based and pretty simple to use. (the client doesn’t seem to think so though) The database is relational database with the usual look up tables in a hierarchy system.

    Does anyone have any links on good design interfaces for databases?

    The problem with this project is that it was totally mismanaged from the get go and I have no clue what the clients work flow is exactly. So I have to do a bit of guessing to create the interface and navigation of this database.


  4. Ten Myths on UI, Usability and Israeli Develoeprs « Evil Fish Says:

    […] https://ophir.wordpress.com/2008/01/11/where-in-the-world-are-the-great-user-interface-developers-par… […]

  5. Contracting Heaven « Evil Fish Says:

    […] our GUI team we needed an additional developers(see post) but could not find candidates that met our […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: