Essential Non-Coding Skills For Coders

Not so obvious skills that can help developers.

I recently attended a career advice session for high school students interested in AI and Machine Learning careers. I realized the students might benefit from tips on honing the non-coding skills essential to developers:

1. Learn Keyboard Shortcuts

Coders need to rapidly switch context within and across applications. In a matter of seconds a developer might edit a file, test the change, and submit to version control. Keyboard shortcuts are essential to developers, relying on a mouse costs valuable time.

For example, here’s a gif of me making a fictitious change to RelayPad’s marketing site. In it I use only my keyboard to perform window management (using SizeUp), edit a file, test the change, and prepare to commit to version control.

Making a simple change using only a keyboard.

2. Learn To Draw

Visual aids are essential when communicating complex engineering topics. While a developer doesn’t need to be a great artist, it can be very helpful to be familiar with some common illustration types. This can be achieved by skimming over some example UML diagrams.

I personally find the use of sequence diagrams to be extremely helpful when outlining how a process will work. While the following diagram won’t win any art competitions, it helped me keep track of the sequence of events required to unfurl a URL in Slack — provide a preview of a link.

A “Sequence Diagram” depicting the handling of Slack URL Unfurling for RelayPad

3. Master An Editor

A developer’s editor is the equivalent to a carpenter’s saw, not much gets built without one. Debating the pros and cons of various editors is a favorite pastime of many developers, with the battle between Emacs and Vi described at times as The Oldest Rivalry In Computing. No matter what editor a developer uses, it is important that they learn to master it.

My editor of choice at the moment is Atom. It is an open source project backed by GitHub. It’s highly customizable, with many add-on packages available. Here’s a fun video from GitHub introducing Atom:

4. Run A Server

Developers frequently need to work on remote computers. Those learning to code will be well served by taking the time to learn how to connect to a remote server and carry out basic operations on them. A good place to start might be a cloud computing service, like AWS or Linode, where it’s easy to configure a server. I’d recommend checking out Amazon Lightsail to start.

Running a server is also a great way to become comfortable working in a terminal, another skill critical to development. For those unfamiliar with terminals it may be worth taking a short introductory course or attempting to customize your experience using dot-files.

My terminal prompt, with annotations added to key elements. It’s fun to customize a terminal prompt.

5. Write More

Developers have to communicate asynchronously, or not in real time, a lot. It is important to be a strong written communicator. A key reason behind the success of Bootstrap, one of the most popular open source projects, is the quality of the documentation. Software development isn’t just about writing code, words count too.

Exceptional documentation provided by Stripe.