Building an Optimal Software Development Environment - Part 4: Terminals
The terminal is the critical portal to operating the command line succesfully
Your profession as a software engineer is a craft.
A craft needs a deliberate methodology and operation to build and create along the entire path to a completed work. For physical crafters they use a workshop and toolbox along with materials that aligns with their expected workloads to work intelligently and efficiently in a process that ensures quality results.
The digital equivalent for a software developer are the Personal Computer and its applications, terminal, and shell inside the PC. These tools need align with your daily work so that you can get more done, correctly, in less time. When you configure your software workshop correctly it will enhance your productivity significantly by allowing faster operational movements, quicker search and retrieval, data manipulation, and powerful file and string operations.
Our goal is to optimize these tools such that you reap the efficiency gains every day, compounding into years of better productivity. This creates more time for you to accomplish what really matters in your life, whether that is time for the family, your own business, or promotions at work.
This article will cover the setup of your terminal, it’s appearance, and some useful shortcuts. Next article we will move onto your shell, arguably the most important tool a software developer uses outside of their IDE. It is your entry point and main interface to your PC and must be fully operational with every tool necessary for the job. The Terminal is your entry point to using the shell and the CLI and needs to be setup correctly.
Terminal Choice
Your terminal is the portal to the command line interface where you will primarily use your chosen shell to interact with the operating system. It handles text I/O into the shell, control keys, renders text back to you, supports multiple tabs and profiles, keeps you aware of the current process, and much more. Choosing a terminal is like choosing your lab or workshop for the day, each comes with their differences and strengths depending on the workload you wish to attempt.
On Mac the default Terminal is good for basic use cases. It support profiles, color schemes, fonts, and handles keyboard input well. However we can do even more with a replacement terminal. I use ITerm2 and that’s what I will cover in the guide but keep an eye out for cross app features to utilize. It also supports tmux if that matters to you for use with SSH sessions. You can see some of the killer features here. If you are a non mac user you should try Alacritty, and on Windows Microsoft’s Terminal is an excellent modern tool and killed ConEmu for me.
To start with ITerm2, lets take a look at what I have as a frame of reference.
ITerm supports multiple tabs in a window, new tab with same profile (⌘+ d), new terminal window creation (⌘+ n), along with tab swap (⌘ + arrow key). I can also split into two windows on the fly via drag and drop or with shortcuts. You can also use ⌘ + a Number, where the number corresponds to the tab. If I hit CTRL + ~ I get a quake style dropdown terminal no matter the context.
This is great for when I need to log back into AWS SSO quickly, or run a quick CLI command and then escape back out to my main workload. Often I have terminals working on a specific context and this hot terminal helps not pollute my working terminals such as SSH sessions, git operations, and OS management. This dropdown terminal also supports tabs, so if you want some longer running processes like a system resource monitor like asitop you can keep it running in there. Since you can split panes vertically and horizontally you have a lot of information density using tabs and split panes.
Let’s rapid fire through some config options I like to build a max aesthetic terminal. Remember your workspace should bring you joy and make you happy, so customize away.