Can I Trust An Editor

At the beginning you spend most of your time in the terminal window, typing directly into the REPL. That's fine. It will help you develop good typing habits, pay attention to syntax and punctuation, and get the balance of various brackets right. At some point it's a good idea to move into an editor, though.

Switching to an editor might lead to a number of questions. Which of the many available editors should I choose? What if I need to work with people who picked a different one? And lastly, can I trust the editor to get the punctuation right?

Automated Punctuation

Let's start with the punctuation. When working with a REPL, you carefully balance all of the parentheses. You might wonder if you can offload that task onto your editor and trust it to get it right. The answer is yes, at least in 80% of the cases.

Most modern text editors come with so-called plugins for particular programming languages. A Clojure plugin will make sure that your parentheses check out. It won't always get it right; sometimes you'll have to manually fix a misplaced bracket. It won't happen often though.

Here's an example of such a problem. Deleting one of the parentheses leaves the rightmost one unbalanced. While the plugin hasn't prevented the issue, it has at least highlighted the problem with a red background.

Having to manually fix something is a minor inconvenience compared to all the other advantages a good plugin can offer. Examples include automated indentation or rainbow-coloured parentheses that help you visually identify blocks of code they enclose. What's even more important is the ability to save code in files and to share them with others.


So you've saved your code and want to collaborate on it. But what if you work with people who use a different editor? Will you have to learn a new tool upon joining a new project? Luckily, you won't. All editors are compatible with one another.

Tools for domains such as technical drawing or sheet music editing enforce their file formats. You can't share files between those tools. Programming isn't like that. All the editors consume and produce same text files in the same text format. There are some minor differences, e.g. with how many spaces will an editor indent a line, but those minutiae are a not a big deal.

In a recent project I worked with four other programmers and we had three different editors in our team. It all worked out just fine. It all depends on people and their openness.

A Choice You Can Revisit

Now we face a choice. Which editor should we begin with? There are so many of them and it's hard to tell the difference. Some books begin with an entire chapter dedicated to setting up your editor, as if it were a very important decision. It is true that a proper editor with the right Clojure plugin can make programming much more enjoyable. What's also true is that it's a decision you can always return to and reconsider.

It's important not to develop bad habits at the beginning of your programming journey. None of the editors popular among Clojure users come with that risk. Some of them are easier to get started with; others have a steeper learning curve. Some make writing Clojure resemble using a word processor. Others make you use the keyboard in the way you never considered before. Pick one, give it some time, and if it doesn't click try something else. Some people might make you feel that a choice of an editor is a decision you make for life, but that's nonsense and tribalism.

It is a good idea to know more than one editor. For now, you don't have to worry about it, though. Get productive with the tool you have before comparing it to others. Familiarise yourself with various features of your editor. Be sure to learn its keyboard shortcuts. Watch some screencasts where more advanced users work with it. Once you get productive you can decide whether to keep your current tool or continue exploring your options.

So go ahead. Pick an editor, set up a Clojure plugin, and start typing. Some things won't work the first time but that's okay. Keep experimenting.