At some stage in your journey of learning design, you’ve probably asked yourself, “do I need to code?” Although there are a range of views on this question, the simple answer is “no”—since the majority of design jobs do not require coding skills. However, a minority of design jobs do ask for coding as a requirement. You only need to code if you’re looking to target these roles.
There’s certainly a lack of consensus in the design industry about how the level of coding knowledge designers need, but that’s no bad thing. The needs of every company, position, and individual designer are different, and the responsibilities and requirements are shaped accordingly.
Some startups intentionally aim to hire designers who know how to code, or have a high level understanding of how code works, while other companies don’t care whether you have skills. A few optimistic companies will even look to hire a “unicorn” to do everything—design, and both front-end and back-end development.
Let’s consider some of the pros and cons of learning to code, and then clarify what these different types of coding mean.
Pros
Learning how to develop your designs in code can:
Make you a stronger designer, reinforcing consistency and speed
Teach you to think in an organized, modular way
Help you better understand design constraints
Open up extra job opportunities
Attract higher salaries
Encourage you to keep learning and developing your design skills
Provide insight into the entire design-to-implementation process
Cons
However, learning how to code can also:
Take time away from perfecting and honing in on your core design skills
Require a big initial time commitment to get up to speed
Require an ongoing time commitment to learn new languages, frameworks, and platforms
Force you to become more of a generalist
End up creating more work for you for the same amount of pay
Make you a more reserved designer, for fear of not being able to implement what you design
Leave you overextended during project phases, at the expense of research, design, or testing
Front-end vs back-end development
You may sometimes see the term “unicorn” in job descriptions or design conversations. This usually refers to someone who can design, code, and implement projects end-to-end, without the need to hire any additional staff.
True unicorns are few and far between, because each of the skill-sets required is complex in and of itself, and each of those skill-sets needs to be kept up-to-date. So, if you did decide to learn how to code, what skills should you focus on?
Typically, coding is divided into two portions: front-end and back-end. Let’s explore what each one means.
Front-end development
If you were building a home, you could think of the plastering, painting, flooring, and decoration as the “front end”. It’s about implementing everything that makes the house beautiful, functional, and livable.
Similarly, front-end development is about coding the part of a site or app that the user sees and directly experiences through interactions. The basics of front-end coding are covered by HTML and CSS. These are the coding formats used to lay out web pages and control their functionality through things like links and buttons.
Another front-end coding format is JavaScript, which can be used to create more advanced interactions and functions within the page. Think of JavaScript as a language that ties front-end components to user interactions. Much like flipping the light switch inside a house or turning on the water with the faucet, JavaScript helps users complete tasks, and often serves to connect the front-end of the site (the interface) to the back-end workings of the product (which we’ll come to in a moment).
Having a basic understanding of HTML and CSS can help you tremendously as a designer. Above all, it helps you understand what constraints developers will face when building your design, meaning that you can consider those constraints in your work. CSS3, the latest CSS standard, provides front-end developers with a lot more flexibility and functionality when it comes to implementing modern visual design patterns.
There is a learning curve to tackling HTML and CSS, and these standards are always evolving as web browsers get more advanced. JavaScript has a steeper learning curve, but there are many different “frameworks” you can learn, which can make JavaScript easier to understand. Even so, it will typically take much longer to learn how to write good JavaScript than it will for you to pick up HTML and CSS.
Back-end development
If the front end of a home is the painting and flooring, then the back end is the foundations, plumbing, and wiring. It’s all the stuff that’s hidden from view, but without which the house wouldn’t work.
Back-end development is about coding what’s “behind” a website or app. It can include a multitude of programming languages, including Ruby, Python, DotNet, and Java.
Learning a new programming language can take a lot of time. And perfecting your ability to connect to databases and manage user connections within an application is a pretty tedious task. There are many online resources that can help you get started with learning these different programming languages, but to become a great developer, you mustn’t be tied to just one framework. That’s why many developers have university qualifications in Computer Science, where they pick up a deep, fundamental understanding of how to build systems in a range of languages.
***
As your design career takes off, your goals are yours to define. Do you want to learn new skills, like HTML and CSS, and open up extra opportunities? Or would you prefer to focus in on the UX and UI design skills you’ve learned so far, and be in a position to target more senior design positions within a few years?
Both approaches are valid, as long as they align with your personal goals. While what’s out there on the job market might influence your decisions in the short term, in the long run it’s about how you see your career unfolding.
Some designers learn front-end development out of necessity. Others learn back-end development out of curiosity. While many companies don't require any knowledge of coding, some do, so that they can condense the design-to-implementation process. You should determine where you want to go, and if learning coding helps you on that journey, then use the available resources to reach your goals!
If you choose to stay focused on “pure” UX/UI design, or even a specific portion of the design process, that doesn’t make you any less of a designer. It simply provides you with the time to specialize, and become an expert in your chosen area.