Essential skills for the new UX designer (Part 2)

Last time I looked at two skills that every good user experience person should have in their toolkit for getting ideas from the mind onto paper and into the computer. This time around I will be suggesting how to take that vision and make it a reality. After all what good is an excellent design if it cannot be converted into a functional system?

Prototyping

Any designer who is serious about their craft should be willing to get their hands dirty. Instead of handing off a wireframe to someone be able to do your own basic working prototypes. They don't have to be as rich as the new Angry Birds for Chrome  but with a solid foundation in the principles of HTML, Cascading Stylesheets, and Javascript you can begin to tell when people are lying about what is and is not possible with a given design.

Don't know where to start? Break down your wireframes into pieces. First get a functional document structure. Once that is done layer some CSS on the solid foundation to create something appealing. Finally add that rich interaction that comes with the appropriate use of Javascript libraries. Don't let yourself get too bogged down in the details of color schemes, logos, and typography just yet. Focus on the essence first just like building a house from the foundation to the framing to the interior.

There are a multitude of excellent references available for each of these so pick up something that matches your experience level and run with it. The key to success is not just to read but to experiment. Don't assume that because you read jQuery in Action that you are now an expert. Create small applications that scratch some itch you have. Maybe it is redesigning an awful web site you have to use on a day to day basis. Perhaps you have an idea for something that will make your own life easier. Either way do not be afraid to get dirty.

Being old fashion my preference is to use a text editor like BBEdit. Somewhere in the middle ground between a basic application like Notepad and a fully integrated IDE like Dreamweaver it forces you to think through your design at a very detailed level. You can't simply point and click your way from concept to prototype; you need to know the relationship between the DOM, your stylesheets, and the Javascript that brings it to life. Even if you will be working at a higher level it is worthwhile to hand code at least a small web site or application just to forge an understanding of how it works at a more basic level.

Programming

One skill that I have noticed seems to be in high demand right now are designers who are not afraid to dip their feet into the water of programming. Nobody expects you to have a deep understanding of the J2EE architecture or how to implement a TCP/IP stack. However learning a lightweight language like Ruby or Python can give you a leg up when it comes time to talk to the developers.

Instead of handing over some dynamic mockups generated in Axure or even a medium fidelity HTML prototype you will be able to go one step further. When somebody tells you "that's impossible to do the way you want it" you'll be able to judge if they are lazy or honest. It also means that you won't be constrained by waiting for a full implementation - creating a rough cut lets you move forward with things like usability testing while waiting on the programmers to do the data modeling, business logic, and other messy details involved in a rich Internet application.

As with the prototyping advice above don't be afraid to dig deeper. Start with a set of basic tutorials or an excellent reference like Agile Development with Rails. Once you feel comfortable explore the APIs. Try different features that sound interesting. There's no need to develop your skills to the point that you could do it all yourself but at least you'll know what the framework is capable of. This means you'll be able to know which boundaries you can push and which are foot thick steel walls.

Communication

The most brilliant idea in the world will go nowhere if you don't have the ability to clearly share your vision with the rest of a team. Excellent communication skills come with practice and time but that doesn't mean you can't develop them on your own. Start with a good reference like Communicating Design or A Project Guide to UX Design.

Pretty pictures alone will not sell a design so also focus on developing good writing skills. Find examples of reports on the web and study the way that they organize information. Apply the principles of information architecture not just to your products but the items that are generated along the way. Get in the habit of rewriting drafts by looking at them through the eyes of your target audience. The language you need to use when speaking to programmers is not the same as when you are presenting to the marketing department.

Finally practice giving presentations. Anyone who says they don't get nervous when speaking before a crowd is either lying, has a huge ego, or has done it so many times they could present in their sleep. Either way the secret is to be so prepared that you give your nerves time to settle down. I can't give any advice on one particular style that works because over the years I have seen so many different approaches succeed. Take notes when you go to conferences, local talks, and other events on what you liked about each speaker's style. Experiment until you find your own comfort zone. Confidence is king and will get you through most rough spots.

Conclusion

As with any profession the key to a successful career is growth and practice, practice, practice. Even once you have a set of operational skills that lets you take an idea from concept to functional prototype don't let your skills rust. Keep up with the changes to a preferred Javascript library or application framework like Django. Push yourself to try more complicated and bigger projects. Don't be afraid to try new things and get outside your comfort zone. Failure is not something to fear; use it as an opportunity to learn for the next time.