I have been a designer for 10 years now as well as a developer for 6, and I’d like to say I have some knowledge on the subject of interactive design. That being said, it always seems like I am the one that can break any user interface. This can be an operating system GUI module, or an advanced JavaScript website module. I have been browsing around the internet lately seeing this new breed of extremely buggy JavaScript interface design. From things like carousels, rotators, tab navigation, drop-downs, and so on. These kinds of things seemed to work better in the old days when programmers didn’t care about how things looked. Just as long as it worked.
Things seem different now-a-days with the advent of the most annoying buzz term ever, ‘Web 2.0’. Web interfaces have become more smooth, sleek, and shiny, with a large priority on animation and effects. The problem seems to be in the time it takes to implement these new so-called ‘standards’. Marketing specialists, executives, etc. always want the latest and greatest without paying for it. So developers have compensated this fact by using the quickest open-source methods available to just get things done as fast and with as much sparkle as possible.
This trend started with Flash and all of the vector based animation plugins available out there. I think Adobe and Macromedia are partly to blame for this in their belief that development should be open to everybody. Their application suites certainly show it. Don’t get me wrong, their technologies are definitely open for advanced-rock-solid development, though they still try to throw in a little ‘development for dummies’ in everything, especially with Flash. ActionScript 3.0 is a beautifully designed language, and if you speak to any developer who knows it well, they will tell you the same. The people who don’t like it are the ones who fell into bad habits with ActionScript 2.0, and would rather complain than drop their shenanigans. The worst part of it is that the default suite of pre-built GUI components for ActionScript 3.0 royally suck, and have sucked for the past 2 years. It is almost like the team who engineered AS3 and the team who are using it to build the default components are not on the same page. On one hand you have this beautifully designed language that promotes standards in all compiled applications, and on another hand you have default compiled components that do everything they possibly can to make it feel more like the dark side of AS2.
The reason I am ranting about ActionScript is because I am seeing the same trend now in JavaScript. Advanced frameworks built to let developers do things in 10 lines or less, GUI packages built to let designers drop in a file and everything happens magically. The problem here is the same as with ActionScript 2.0. There is a lack of standard practice, and laziness to actually test for every possible user action and situation. Developers are becoming so comfortable with these frameworks they do not even test things at all. They assume that the framework will just work everything out. Well, I am comfortable in saying all of this, because I always seem to break all of these user interfaces. Testing… testing… anyone?
Why am I even writing this post? Because I believe the old-school mentality of making something work, before looking good, should still be the number one priority in the work of today’s young developers. Having the mentality of quality over cosmetic design should be instilled in all of you script-kiddies out there.
For those of you who do not care about any of this, or disagree without reason, you are ruining this profession. For every piece of functionality that is overlooked because you decide that a fade-out effect is more important than checking if something ever fades back in depending on whether a user clicks twice in 0.2 seconds, then that my friend is the reason designers, clients, sales reps, bosses, etc. all feel like they know more about your job than you do. You are making it too easy for them.
I want to ask if we can step backward, and say something out loud that you probably say to yourself all of the time anyway.
“Is it worth it?”
That is the question that true developers need to weigh for every piece of functionality they choose to add to whatever small piece of software machinery they engineer. Marketing consultants will say that cosmetics are what drive sales. Your boss will tell you that how it looks is what decides whether or not the client will approve. Believe it or not designers, although they love a good composition and color palette, will tell you when something is broken. This is because they actually care about how you are treating their visual design. If you work together with them, a good designer will tell you what is more or less important to the design, and what can be dropped based on time constraints and impossible functionalities.
This is coming from a designer/developer. You can talk my ear off about your experiences with people from either profession, and I will always tell you the same. This is because I believe writing code is design in itself. How it is put together is the most beautiful design most people will never see, but will truly appreciate when it is done well. Similar to actual construction, people are very critical toward software developers when they make mistakes, but are silent when things just work. Your job is to let people know how important the functionality in the smallest interface truly is, every chance you get. It doesn’t matter how complicated something is when trying to explain it, because if you don’t speak up, who will? Believe me, I have tried to explain the importance of run-time error handling in a million different ways. It doesn’t get easier in the explanation, but it does develop something between you and the person to which you are informing. Just the sheer expression of your concerns will cultivate a respectful relationship that would otherwise get tossed aside for other interests. When you have that respect, you will notice that your concerns start taking priority in the overall scope of the project. Then when somebody says “That’s great, but can it fade out?”, you can say “Yes it can, but the development time required for the proper error handling would exceed the current launch date.” You might hear some puffery after the first few times you try this, but after a while you might hear something more like, “Would if we give you more time?” There, now everyone wins.
Leave a Reply