In undergrad, and grad school, I was a mathematics student, though half of my courses where comp sci. Really, the only reason I didn’t dual major is the long list of general classes (non comp sci) that I would have to take. When I got more first programming job, and now into my second one, I feel there are several things I wish I would have learned. That being said, they’re often skipped over.
1. Actually using a text editor, well. Not your silly text editors (I’m looking at you nano) but the more advanced text editors: Emacs and Vim. Your nice large GUI based editors (Visual Studios, Intellij,…) have many bells-and-whistles. They have integration with version control system’s like GIT and SVN, all using a some nice GUI, but harness you in to there workflows. On emacs, I can make functions that do whatever I want, I can grep with the smallest number of keystrokes, I can do all I wan’t with my fingers on the keyboard.
But Visual Studios has an integrated debugger, and code analyzer, and all of this fancy stuff (often at the low price of 10k dollars). Emacs has all of this, if you can find the package 🙂
2. Actually using a (modern) version control system. In undergrad I never really used a version control system. We sent code to the professor by zipping (taring) the directory. Then I got to my first job and used TFS, easy to use with a GUI, but as I have stated before, I believe in the Emacs. Now that I’m at Google and do everything in the console I’ve learned to use Piper, but it really doesn’t meet my needs. More advanced version control systems take some time to get use to.
3. BASH and ZSH (or Powershell): If you write code you should have a good knowledge of command line tools, and command line languages. You should be able to quickly script things away. This is something you’ll learn you need to learn.

My man always is great. Never be late to learn anything you wish, I believe my man!
LikeLike