When it comes down to it, you have to love what you do. As software engineers, we spend a huge amount of time writing code. Granted, the further you progress in your career the less code you’ll actually write, but even for the more senior staff, it’s a significant part of the job.
Personally, I find a huge difference in my programming stamina when I have great tools and themes in place. Having the right tools configured properly for your job can make a huge difference.
Here are some of the tools/settings/styles that I’ve picked up along the way that I think will make your life more enjoyable. Sometimes all it takes is a fresh font to become inspired. Try something new!
If the main focus of your role is to produce high-quality code, you are probably using an IDE. It’s easy to just download whatever one is recommended to you, or that you’re the most familiar with, and stick with the same settings you’ve used for years. But sometimes change can be inspirational. I’m not saying my setup is better than anyone else’s but I find it simultaneously relaxing and invigorating, which makes writing code more enjoyable.
Settings for Font Ligatures:
{
"workbench.colorTheme": "Solarized Dark",
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": [
//following will be in italic (=FlottFlott)
"comment",
"entity.name.type.class", //class names
"keyword", //import, export, return…
"constant", //String, Number, Boolean…, this, super
"storage.modifier", //static keyword
"storage.type.class.js", //class keyword
],
"settings": {
"fontStyle": "italic"
}
},
{
"scope": [
//following will be excluded from italics (VSCode has some defaults for italics)
"invalid",
"keyword.operator",
"constant.numeric.css",
"keyword.other.unit.px.css",
"constant.numeric.decimal.js",
"constant.numeric.json"
],
"settings": {
"fontStyle": ""
}
}
]
},
"editor.fontFamily": "'Cascadia Code', Menlo, Monaco, 'Courier New', monospace",
"editor.fontWeight": "350",
"editor.fontLigatures": "'calt', 'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'zero', 'onum'",
"disableLigatures.mode": "Line"
}
VSCode provides a huge amount of flexibility without compromising simplicity. The Cascadia Code font with ligatures creates really nice cursive characters and other signage that makes the code more fun to read.
Lastly, the extensive library of VSCode provides so much additional functionality that finding a few new extensions makes it feel like an entirely new editor.
There are a lot of options out there, depending on your platform. Personally, I develop on a MacBook so my suggestion here is iTerm2. I’ve chosen this program for two major reasons. First is the saved-window-groups feature that allows you to split your terminal into multiple panes, then save that as a “window group” to quickly recreate it.
The second is the ability to create profiles. Each profile has its own color scheme and you can auto-run the lines of code at the start of the terminal session (without having to edit your zsh/bash profile). Combined, this creates a really powerful environment.
At the beginning of every day I open up iTerm, and it defaults to my favorite window group which has 3 panes. One auto-starts a sync that I have to have running all day. The second opens up some internal documentation that I’m constantly reviewing. The third updates all of my local packages then start in my local code directory, ready for work. Just by opening this app, I now have 3 simple (yet important) tasks completed and ready to go without another thought.
Last, and yet probably just as important, these terminal profiles all have their own color scheme. This makes it easy to differentiate between the panels, makes them easy to look at, and is fun to use.
Now that you’ve chosen and configured your terminal application, you’ll actually have to use it. For this, you’ll want to take some time to learn about the shell environment you have to work in. Again, I’m on a Mac so it defaults to zsh, which isn’t a terrible choice.
For a long time, I would manually swap this for bash, but then I discovered Oh-My-ZSH, and I never swapped again. Whether you have a very in-depth bash .profile
file, or you use something like Oh-My-ZSH, the point here is that you want to make massive quality-of-life upgrades to your shell environment so that when you do have to work in it, it’s a dream.
Aside from making your terminal look way cooler with some awesome themes, you can use plugins to add a ton of additional functionality that you didn’t know you needed. My favorite upgrade is one of the simplest ones, a theme that interfaces with git so you can tell exactly what repo and branch you’re in, at all times.
While we’re on the topic of terminals, there’s one last point to consider. You’re going to need a text editor that you’re comfortable with. Again, you’re going to spend some time in here doing…who knows what, so it might as well be something functional, with lots of awesome features and customizable options.
Personally, I like Vim and have for a long time. Vim’s themes are really well done, and the UI is slim and non-intrusive making it easy to use, once you’re familiar with the keyboard shortcuts. But further, by finding a good .vimrc file (or making one yourself) so you can ensure the editing environment is customized to your needs.
Things like how far indented each nested line of code should be or whether it should be indented with tabs or spaces are highly customizable. There’s also a wealth of plugins to consider that can help with code completion and syntax highlighting. I usually start with this “The Ultimate Vimrc” file and then customize it as needed.
Whether you’re a web developer and need a solid suite of testing tools or an iOS developer with testing and validation built right into your IDE, let’s just agree on one thing. We all need access to Stack Overflow. No matter what you do, you need a good, trustworthy browser. In every role, I’ve had two major considerations to make when picking which browser will be my system default. First, what is the recommended browser by my organization (this does matter)? Second, what browser is going to best fit my needs?
Currently, the go-to is Google Chrome. Chrome has a large library of extensions that work really well with my other tools allowing me to debug with speed and agility. It also interfaces nicely with my organization’s policies and online platforms that I use daily.
Once you choose a browser, make it work for you. Migrate your bookmarks, organize them, and take the time to browse the extensions or plugin libraries. Don’t forget that you’re likely to spend most of your day here, make sure it works for you.
Notable extensions: Xdebug Helper, React Developer Tools, Redux DevTools
At this point, you should have the tools you need to perform your daily tasks. So what’s left? Well, there are always little shortcuts that can help you be more productive. Github has a desktop application that you can use if you don’t love working on the command line.
There’s a whole world out there of note-taking applications that can make your meetings a thing of wonder. There are database applications aplenty. Take some time to document all of your daily tasks and requirements and see what tools are out there that make your life easier.
My favorite productivity tool is a lesser-known one named Dash.
Dash has two major sections too, both very useful. First, it allows you to download a huge amount of document sets for offline viewing. If your job requires you to do any sort of traveling or, if you just like to work from not-home or not-office occasionally, this can be a huge life-saver. What do you do when you can’t visit stack overflow or jump over to your favorite framework’s documentation page? Open up dash and it’s all right there.
Second, it allows you to store code snippets for re-use. I’ve used this for the complicated or detailed commands that I have to run consistently. You can even activate a “listener” that will auto-replace your text when you type. So instead of having to type
docker-compose exec app bash
Over and over, you can create a snippet titled dc-exec, and when Dash recognizes you're typing that out, it’ll auto-replace it with the required command. The best part is that these snippet files can be backed up and transferred so you don’t have to recreate them every time you set up a new machine.
Well, you have it there, folks. You’ve basically walked through a day in my life as a developer. With a good IDE, font, theme, and a solid set of helper tools at your disposal you can achieve absolutely anything.