Here at RV, we’re proud to work with many talented, innovative tech professionals who power our tools and platforms – including Chase Coney, a Principal Engineer on our Financial Services team. As he shared in his segment at our bi-annual RV RUN. Tech Summit this October, Chase is here to help engineers of all levels master their tech workflows. Whether you’re a seasoned pro or just getting started, check out Chase’s tips below – and stay tuned for the next installment of his three-part series!
Hey there, I’m Chase Coney, a Principal Engineer for the Financial Services business at RV. I’ve been with RV for about five and half years, and during that time I have worked with hundreds (maybe even thousands) of amazing engineers at varying stages in their careers. Working with such a large, diverse group of individuals and teams, I have curated a fairly short list of engineering topics, tools, and processes that I wholeheartedly believe are worth investing time into, and that I believe will pay huge dividends in the long run.
This series is aimed at people early in their engineering careers or folks who love to optimize their engineering workflows. There will be some technical jargon, but I will do my best to keep everything as accessible as possible.
Before We Start – Here’s the Approach
This series will be broken down into three categories: Command Line, Utilities, and Workflows. I will talk about each one of these categories and give a few specific examples of where to start or where I have invested a lot of time.
Each of these examples will be high-impact, low-barrier-to-entry, and easy to implement in your own day-to-day with a little bit of time investment.
Forewarning: While I have taught/tested these topics with a pretty large sample size, at the end of the day, this is very much an opinion piece. Each and every topic may not be worth investing time into for you, but hopefully at least one of the areas below inspires you to try something new or different with your team.
So let’s start off with, what I believe to be, the most important area to invest time into – the command line.
The command line (or terminal) is a text-based interface you can use to interact with your operating system, run powerful utilities, interact with your development tools, and so much more. Most applications that you use every day probably have some command-line integration that you can use.
The first question you might ask yourself: If my tools have a Graphical User Interface (or GUI for short), why would I want to use the command line?
First, I am not saying that you should ditch all GUIs. But, learning the basics of the command line will allow you to figure out areas in your workflow that you might be able to improve or even automate.
Let me give you an example. Let’s say you want to make web request to a specific website. There are some really great tools like Postman, Insomnia, etc., that many folks use every day. I think those tools are wonderful and certainly help you do some complex things very easily. However, learning the basics of
curl will open up a whole new set of possibilities for you. For example, if you wanted to hit 100 URLs, check the response codes, and write out some information into a CSV, doing that with one of those tools might be very difficult or even impossible. Using
curl in a simple shell script would have that task wrapped in about 15 minutes.
So hopefully that convinced you that the command line is an area worth investing in – but where should we focus our attention next?
The very first thing that I recommend is taking a little bit of time to get up to speed with your shell.
Here are a few resources to get you jump-started:
The goal of reading through and learning this content is not really to memorize all of the commands or syntax but to figure out what is possible with your terminal. The more surface area of that ever-growing unknown unknown that you can peel back, the easier and more effectively you will be able to solve problems every day!
If you think there are a lot of options for setting up your IDE in a specific manner, wait until you see what’s possible with your shell.
There are a ton of settings that you can tweak at different levels that will drastically change your shell environment. You can change the look and feel by updating your prompt, you can change the behavior by updating your shell’s rc file, you can create helpers by adding aliases or helper functions and so much more.
So, how do I do all of that?
Well, answering all of that would be outside the scope of this write up. However, there are two things that I highly recommend doing that will kick off this journey.
Pick a Modern Shell
There are a few really great shell options out there. I personally use Z shell (or
zsh), but here are a few others that you may look into:
The reason I personally use
zsh is because it is POSIX compliant, it ships with OSX, and it has a fantastic, open-source framework for tweaking all the things shell called oh-my-zsh. If you choose to go with
zsh, I highly recommend using oh-my-zsh and spending some time looking through all of the settings and plugins it has to offer.
Look at Others’ Dotfiles
The next thing I recommend is to look at other people’s dotfiles. Dotfiles are where most configuration for all things command line are stored. For more information on dotfiles, here is the unofficial guide to dotfiles that is 100% worth reading.
Once you get a handle on what a dotfile is, here is a nice resource with shell-specific repositories that you can take inspiration from.
Hopefully, this gives you a few ideas of where to invest some time in your day-to-day workflows. Just remember that, some of this stuff may not be for you, and that is totally fine. It is really an opinionated starting point, but the destination is really up to you!
TECH-nically, you don’t have to stop reading here – click here to learn more about our RV tech teams!