From the course: Web Career Clinic

Cross-train: Design for programmers

From the course: Web Career Clinic

Cross-train: Design for programmers

- [Voiceover] Hi, I'm Lauren Bacon and welcome to this week's edition of the Web Career Clinic, where I'll explore how to build a career you love, making good stuff on the web. In my last cross-training installment, I talked about what designers need to understand about coding. This time, I want to turn the tables and talk to the coders out there about what's helpful for you to understand about design. Note that I'm not talking about learning color theory, or why different fonts look great or awful together, or what a grid is. Those are things that designers need to know but you probably don't, although the grid thing could come in pretty handy. What you need to know is how designers think about their work, so that you can collaborate with them effectively and efficiently. Some people call this design thinking because thinking like a designer involves a particular mode of looking at things. There are a lot of aspects to design thinking, but for our purposes, I'm going to focus on three elements that are a bit distinct from a typical coding mindset. First, design by its nature is a process rooted in empathy, or put another way, a user-centered perspective. The whole design process, from the initial requirements gathering phase through creative brainstorming and user testing, requires designers to put themselves in the users' shoes, and think about how to craft an experience for them that is meaningful, useful, and ideally delightful for them. Now, I'm not suggesting that designers have cornered the market on empathy. I'm only saying this because a designer's number one job is to be an advocate for the end user, and to see whatever you're creating through the eyes of the people who are going to be using it. So if you want to communicate effectively with designers, it's helpful to use the language of empathy and end users, and beyond that, you can also apply empathy to your own work. For example, by writing user stories for features you're building, rather than just technical specs. The second key element of design thinking I want to discuss is the notion of synthesis. Now what do I mean by that? I mean bringing together a whole bunch of disparate things, and combining them into a cohesive whole. If you think about creating, say, a mobile app design, there are a whole bunch of elements that go into it. Navigation, different blocks of text and imagery, a logo on a color palette, transitions between different views and screens, and so on. The designer's job is to take all of these things and find ways to weave them together into something that feels unified. Coding, on the other hand, tends to requires us to use a lot of analysis, which is the opposite of synthesis. When we analyze something, we break it down into its component parts. When you get handed a design to code, your job as a developer is to break it down into sections and subsections so that you can figure out how to build it. If you're spending most of your days analyzing things, you might not be in the habit of synthesizing, and vice-versa. So this is a good difference to be aware of when you're collaborating. Designers are more likely to pay attention to the big picture and how it hangs together, and to notice the effect that the small details might have on the rest of the design, whereas coders tend to work a little differently and work on discrete components first. I'm speaking in generalizations here, so bare with me. Just as I believe everyone is capable of empathy, I know that coders and designers are capable of seeing the whole picture and using synthesis. My intent here is to make you aware of where your thought patterns might be different in an effort to help you collaborate more effectively. The third and final design thinking concept that I think is helpful to understand as a coder is a bit of a subtle one. Design requires creating solutions without knowing all of the parameters, whereas coding is much more about working within known parameters. I'll give you an example. When I'm designing a page template for a website, I know that I need to design it in such a way that it will be both functional and attractive, no matter what content the client chooses to put in the content area. Short text, long text, text and images, et cetera. In order for me to do that effectively, I have to take a flexible approach to my work that allows for unknowns. So in a way, designers spend a lot of time considering possibilities, even far-fetched ones. Because coding is about turning ideas into reality, coders tend to be a little more focused on what's practical. Now again, this isn't to suggest that coders can't be creative visionaries, because of course they can and they are. I'm speaking about the very specific roles we tend to work in, when we're collaborating on projects most of the time. So what can you do to apply all this? All of these design thinking concepts can be brought into your everyday work and especially into your collaborations with designers. Try giving some thought to how you could bring a more user-centric perspective into your current project. Try looking at it as a whole and see if you can find opportunities to make it more cohesive. Try exploring creative possibilities, even if you're not sure how to code them yet. And when you're talking to designers, experiment with using these frameworks to communicate with them, and see if you find yourselves speaking each other's languages a little more fluently. That's it for this week's Web Career Clinic. Tune in next time as I explore another topic for web professionals. If you have questions about your web career, hit me up on Twitter at @laurenbacon using the hashtag ProWebClinic. See you next week.

Contents