Why designers shouldn't be afraid of the terminal

There was a strong movement a few years ago stressing the importance of web designers actually learning how to write code if they didn't do so already. This made sense to some extent so designers would know what could and what couldn't be done in terms of website layout so that website mockups are made with those limitations in mind.

Now this movement has started to subside since the opinion that designers should design what is best for the user, not the developer and the limits of the web, has arisen, which is an opinion I agree with. So designers have stuck to doing just that, front end developers generally stay away from Photoshop (or whatever software is used for design), which has caused those in-between to have a rare combination of skills (some even call them full stack designers).

If you are one of those rare designers who knows HTML, CSS, a little bit of JavaScript, and also knows your way around Photoshop, I think it's beneficial to add something else to your incredibly long list of skills and learn how to use the terminal. Why? Mainly for two reasons: version control and open source projects.

Version control

Version control is possibly the best way to keep records of a project as it 'matures' during development. Having the ability to make deviations (branches) from the main project, being able to go back to previous versions of s project, and ultimately, being able to share a project easily with other members of the team. These are just a few benefits of version control.

Git is by far the most popular language used for version control (not that I have any knowledge of other languages), and although there are a few popular GUI tools that allow those who don't use the terminal to benefit from the features of version control, such as Tower, and the Github desktop client, I believe you get a lot less control using those than using the terminal itself, especially when it comes to fixing merge conflicts.

Using the terminal

Tower lets you use version control with Git, but with less overall control than the terminal

Open source projects

Open source projects are the second benefit of using the terminal that I mentioned in the first paragraph. I know the term 'open source' can refer to a wide range of things from open source 3D graphics software to open source game assets, but I'll only be talking about open source front end projects for the web in this article. You may be aware of web project such; Nodejs, Sass, Gulp and Bower or even Autoprefixer and Uncss, all of these can be easily installed and run via the terminal.

I am aware of GUI tools such as Hammer for Mac and Codekit that make it easier for those who don't use the terminal to benefit from these tools however, I believe those tools limit the amount of access one has to the wealth of open source projects out there.

Using the terminal

Handlebars is just one of your templating language options

I might come across as a 'gung ho' supporter of the using the terminal, but I haven't always been that way. I had a lot of initial issues with using it which I'm sure some reading this article probably have too.

First of all, it looks horrible, a black screen with white text (or whatever theme you choose for it) isn't really approachable to – well, most people, considering applications are becoming prettier and prettier.

Second, it takes a while to get used to the UNIX commands, although the full vocabulary isn't required to get up and running with a simple web project, it still takes a while to become fairly fluent in it.

Thirdly, since there are so many packages and projects out there, it takes a bit of research to figure out which option is best for your project. Rbenv or RVM for ruby version management, Gulp or Grunt for task management, Handlebars or Jade for a templating language and so on.

Finally, using it kind of makes you look like a very geeky hacker which is probably a draw to a lot of people (myself included), but I can see how it can put others off.

Using the terminal

Is Gulp the best task management option for you?

Once these hurdles are overcome and get a basic setup and understanding the open source world is your oyster, you can pick and choose anything out there for your project, the only limitation being how much research your willing to make into tools prior to using them.

You can create a Node project running in Expressjs, use Gulp for management, test performance with Sitespeed.io and upload your code to Bitbucket as a private repo. Or create a Rails project using Reactjs on the front end, Sass for CSS, Webpack for other Javascript files, and host it on Heroku for free. I could go on with these different combinations, but you get the picture.


Although there is some learning curve and a certain level of 'geekiness' required to muster the courage to use the terminal, the benefits definitely outweigh the drawbacks. Not only when it comes to flexibility in development tools and ease of fixing issues, but also the community aspect, improving projects that belong to others, collaborating to make new features, or cloning someones project to create a variation that suits you. This results in either the web being slightly easier for newcomers, or improving the web as a whole.

Thank you for reading 5 articles this month* Join now for unlimited access

Enjoy your first month for just £1 / $1 / €1

*Read 5 free articles per month without a subscription

Join now for unlimited access

Try first month for just £1 / $1 / €1

Richard Bray is a 20-something designer of web products, event organiser, speaker, open source contributor. Currently making private aviation more accessible @Stratajet. Contact him with CSS related questions, to speak at your event, or just to say 'hi'.