Code bootcamps have been all the rage for a long time now. I’ve worked with many grads over the years. All have been wonderful people, but I’ve seen one common theme: They don’t know the command line.

Granted, I may be subject to the availability heuristic, but I have come across enough grads that I feel there is some signal. (Disclaimer: Most I know graduated from Denver-based bootcamps.)

I once worked with an incredibly smart grad who hadn’t heard of cp . Almost unanimously, they have no idea what $PATH is. I’ve also met grads with advanced command line skills and asked how they learned it. The answer was usually: “I had to teach myself.”

I enjoy mentoring others. However, it’s disruptive to have new engineers frequently DMing seniors screenshots of command line errors and asking for help. It’s like a physicist picking up golf. They know ball flight mechanics and how it should roll on various surfaces, but they’ve never swung a club and constantly ask which club to use. They jumped straight to the advanced and missed the fundamentals.

To be clear, I don’t blame the engineer at all. I blame the educators!

So My Plea Is…

Please, please bootcamps, teach the command line!

The command line is the foundation of everything in software development. Bootcamps should start with the command line and spend 2-4 weeks on it. I know it’s not sexy. You’re printing text to a boring terminal screen. It’s much sexier to rails new && rails generate all-the-things and presto: You have a fully functioning web app.

But the command line is essential and powerful. Show them how they can automate pain away without needing to install a ruby or python interpreter.

Update 08-19-2022

There’s been good discussion on reddit. So I want to address and clarify a few things.

1. Bootcamps don’t have time to teach it.

Most bootcamps I know have around a 6 month program. Some commenters mentioned 8 week programs. That’s insanely short if you ask me. That’s not enough time to teach much of anything let alone the command line. However, 6 months is plenty of time to teach it.

2. Bootcamps are optimized to get you a job.

I can see some truth here because the incentives line up. Many bootcamps offer a guarantee that if you don’t find a job in a period of time after you graduate, they’ll refund some or all of your tuition. So, one can argue they teach you everything you need to know to pass tech interviews and get your first job.

I’m sure not all bootcamps think this way and genuinely want to give you a good education for a career in software development. But if you’re a prospective student, do your research and only apply to reputable bootcamps.

Bye the way, this reminds me I need to add basic command line skills to tech screenings.

3. I don’t need to learn the command line because there’s a GUI I can use.

I was shocked by this answer. Several commenters claim to never need the command line. Their IDE like VSCode or a GUI handles it. I’ve worked exclusively for smaller companies and startups. I’ve always needed the command line. The base case is to set up your local developer environment.

Perhaps in a big corporate environment, “there’s a team for that”. A team for CICD, QA, deployments, etc. Everything is tightly compartmentalized. Sounds miserable to me. I’m used to contributing to the entire stack. From writing application code to writing tests to writing CICD stages to deployment.

TLDR; Learn the Following

And if you’re a new engineer reading this post, learn the basics of the following.

Note: The below only apply to UNIX-based operating systems (Mac and Linux).

  • The Unix philosophy
  • File descriptors (i.e. what is a file?)
  • stdin, stdout, and stderr
  • Environment variables, especially $PATH
  • Permissions; sudo, chown, chmod
  • Processes and signals
  • How to pipe and redirect input and output
  • Vim or emacs or another popular editor. Yes, I use an IDE, but you may be in an environment where your IDE is unavailable. E.g. ssh’ed into a remote server or kubectl exec or docker run -it.
  • Basic bash scripting; set -euxo pipefail
  • cd, ls, cat, grep, mv, cp, xargs, basic awk
  • ssh
  • dotfiles

Helpful Resources

Warning: These resources cover A TON. Don’t expect to master the command line in a couple of weeks, months, or even years. I still learn new things about the command line.