jb… a weblog by Jonathan Buys

Student Advice

A student asked me for advice for what to focus on getting into the compsci field. Here’s what I said.

I have two pieces of advice:

  1. Stay curious. If you come across something you don’t understand, keep digging till you do.
  2. Start building. The best way to learn is to do. Build a web page, build an app, build a server… whatever direction you want to go, pick a project and start digging in. As you go you’ll hit obstacles, you’ll find things that you don’t understand, when you find yourself there, remember number one and keep at it till you’ve figured it out. Honestly that’s how I’ve built my entire career.

My personal bias is to recommend the devops path, and the first step on that path is to learn Unix. You can download Linux (a Unix clone) for free, or if you have a Mac can pop open the Terminal app and go to town. Figure out what the shell is, what common commands are available to you, and start writing out a personal library of scripts.

Unix is everywhere, it took over the world and no one even noticed. Unix is the core of macOS, iOS, Android, ChromeBooks, and every server running in the cloud. It’s in Internet of Things devices, it’s in your smartTV, it’s probably in your routers and cable modems, and if you do a search for “Unix or Linux Sysadmin” or “devops engineer” you’ll come up with thousands of available jobs.

Here’s an easy trick to get on the path to knowing your computer, once you are in a Unix or Linux environment, run “ls /bin”, that will show you some of the basic programs available to you, pick one, say, “dd”, and run “man dd” and read the manual page on the command. Keep going till you know what every program in the list does.

Secondly, and very closely related to learning Unix is learn networking. Learn the TCP/IP stack, the three-way handshake, basic subnetting, Literally everything is networked, so a solid understanding of how it all works can only help. It’s all just signals down a wire.

On a more practical level, I recommend opening up a Github account, buying a domain name, and using Github to host a webpage with Jekyll. Use that webpage to write about what you learn. Share your projects. Even the experience of getting the Jekyll site up and running is a good exercise. It’s complicated to get started, but once you figure it out, you’ll have a good base for how a lot of things work in industry.

The combination of doing, then writing, helps with your learning, and it gives back to the community for the next person who wants to learn. Come to think of it, I haven’t done enough of that myself lately.

As far as sites to read… well, you could follow Hacker News although I don’t. I know quite a few folks who do. I prefer to follow individual blogs like cks. The tech industry was built, originally, by academics and interested folks building and sharing what they’ve learned, and… well, at it’s core it still works that way now.

I hope it’s good advice, and I wish the student luck on the path to their new career.

unix linux networking