Summary
I see a lot of discussion online about skills, and what are the most important skills to have to land a job in tech. I don’t have a huge amount of experience in tech jobs (yet) short of technical support, but I do have a great deal of business experience…and I talk to a lot of people.
Tech Skills
Tech skills have to be the most important for a tech job, right? Well, they’re certainly important, especially since you can’t do the job without those skills. A lot of people say:
“I’m looking to transition into tech, what should I learn?”
That’s an interesting question, and likely broader than what the person asking actually means. What kind of tech do you want to go into? There’s all sorts of stuff that you can do. Do you want to play with networks and hardware, develop applications or back-end infrastructure? Do you want to design and implement cloud architecture? Security? Tech sales? Management? Project Management? There are dozens more to choose from.
“OK, I want to get into security in tech. Cybersecurity. What should I learn?”
Um, that doesn’t really narrow it down. Are you wanting to work with Identity and Access Management (IAM)? Do you want to do pentesting? Security Operations Center (SOC) analyst? Threat Intelligence? Digital Forensics and/or Incident Response (DFIR)? Do you want to write policies? Training? Oversee compliance? Security Architect is a thing too. Each of these areas has dozens of sub-specialties and cloud variants, not to mention the dozens and dozens of sorts of roles that I haven’t listed.
One of the hardest things to do once you decide what to do in tech is to decide what skills you want to gain in order to make the pivot as quickly as possible. This requires, in the end, a choice on what you want to concentrate on. That being said, you probably want to get going before you have to make a final decision. The good news is, there are some basics to get your started and give a good grounding in pretty much anything that you want to work on eventually. This is kind of the path that I’m following right now.
Start at the beginning
Learn about the basics! Before you learn anything more advanced, you need to know the building blocks that all of those more advanced skills are built upon. Learn as much about operating systems as possible, especially Windows and Linux. Yes, learning macOS is helpful too, but there are a couple of things there: there aren’t that many jobs specifically working on just macOS, also it’s heavily based on BSD (especially on the command line, where you will often feel like you live) and so learning Linux will let you get around in macOS just fine. Linux and Windows are both important, though depending on which way you want to go, one might well be more important than the other, but you won’t regret knowing about both of these major OSes in a tech career. A large number (Can I say most? I want to say “most” here.) of large businesses/enterprise clients are going to utilize Windows Server and Active Directory. There’s really not a good turnkey solution out there (yet…and at least that I’ve seen…I’d love to be wrong here, leave me a comment below if I am!!) that compares to AD and its many associated parts. Linux, on the other hand, runs the world when it comes to the internet and servers in general. Knowing both operating systems well can only help your career.
But which Linux distribution should I learn?
Well, most of what you learn on one will work on the others. The biggest difference between the distros are in how they get updates, how up-to-date the software is in their repos, and what package manager they use to access those repos. The rest of it is pretty easy to change. Don’t like GNOME? Install KDE. Need a light-weight GUI for a low-powered server, but you don’t wanna use the command line for everything? I like XFCE for that. Back to the distro question: which one? Honestly, I generally use Debian-derived distributions because that’s what I’m most familiar with. I went through my “I run Arch” phase, but honestly Arch is too easy to break for a production system, at least for me. A lot, like a lot-a-lot of businesses use some form of Red Hat Enterprise Linux (RHEL) or its derivatives. For my own Linux-based personal system, I use Fedora. A lot of businesses will use RHEL itself, or some other derivative meant for stability. Used to be, that was CentOS, but its release methodology has changed, and so there are a lot of “contenders” out there for it’s title. Rocky Linux and Alma Linux are the two that come to mind, but that’s not important. Learn how to use the various package managers for those distributions, then pick one that you like with a desktop environment that you enjoy, and just use that. The advent of Flatpak and (shudder) Snaps, along with AppImages make it much less important when looking at what packages are in a repo. I like Fedora’s take on this (which is why I use it for my desktop), where they eventually want to get things moved to OS-level software and apps coming from their repos, keeping the OS itself super stable. Other apps, however, would be installed (ideally) via Flatpak, which allows developers to update their app in a single place, package it once, and have it work across all of Linux. Since this keeps the distro out of packaging most software, this gives you a higher likelihood of being able to install the most current version of software. This has been a problem with particularly Debian-based systems for a long time, as Debian focuses primarily on stability…which led to really old versions of apps in their repos.
TL;DR - Pick one. It doesn’t really matter. Just learn the different package managers as well as “Linux” in general.
Learn networking
If you’re going to be doing anything that might have to do with networking (and this includes the policy people, since you have to…should, anyway…understand what you’re writing policy for) then you should at least learn the basics of networking. You don’t have to be an expert, but you should at least know what the OSI Model is, where to look it up, and not look confused when people say “Layer 2” or “Layer 3” networking. Also, subnetting. That arcane discipline will help you a lot in setting up and understanding the layout and functions of networks.
Learn some code
You don’t have to learn code like you’re going to be a Developer…unless you want to be a Developer, or just like it, or whatever reason. Still, learning the basics of coding is just going to help you. You should at least be able to understand program flow (conditional statements, functions, returning values, looping, what is a “class” and how to use it, etc.) so that you can follow along with what an app is doing. Also, if you’re working in tech, you’ll likely want to automate something at some point. The easiest way to do that is through some basic code. Frequently you’ll see shell scripts for this, but it’s not at all uncommon to see Python used as well, since it’s included by default in almost every Linux distro…as well as in macOS and (I think) BSD. I should really spin up a BSD instance to see what’s changed, come to think of it…the only thing that I use based on BSD is my firewall, and I don’t think I’ve ever actually needed the command line for that. The point is, though, that having at least a basic idea of coding-know-how will only help you…both to understand and to create basic automation, and also in landing that job. Knowledge of a scripting language is often a request, or more. Learning HTML/CSS is also a good thing for everyone, so that you can at least know what you’re looking at. Same goes for JavaScript. I’d advise knowing at least the structure and basic syntax (well enough to recognize it, at least) for a few languages. For me, that’s Python, JavaScript, Go, HTML/CSS, Swift, BASH, and some old knowledge of C and C++ that I haven’t used for years. Thing is, I used to want to be a developer, which is how I ended up knowing bits and pieces of all of these things. I kind of collect programming languages. I picked up the basics of Go because (if you’re going into security) a lot of security tools are being written, and even re-written in Go from Python, just because it’s faster. I still prefer Python, but knowing how Go works has already been beneficial.
Soft Skills
These aren’t going to be listed in many tech job descriptions. It doesn’t mean that they aren’t important. In most cases, I’d say that they’re more important to the company than the tech skills. If you already know the basics, the company can train you on specific tech skills much easier than they can train you in conflict resolution, empathy, negotiation, and de-escalation. Also, the ability to speak or write clearly, and explain things to people that are not in your field is exceptionally important. Explaining to an executive about container escapes or SQL injection is going to get you glazed eyes, a confused look, and “That sounds like it’s out of our budget for right now.” Being able to explain technical terms and functions simply to people that aren’t in the field is super important. If you know about their field (usually business or finance) then relate to them in their terms. You have to meet people where they’re at, and explain it to them in a way that they will understand. This is going to reduce confusion, make it less likely for there to be resentment. “I can’t stand talking to that guy! It’s like he’s always talking down to me because I don’t understand what he does. Maybe I should make him listen to how depreciation affects the value of his hardware, and how that determines when and if he gets new toys?” This isn’t the attitude that you want people to have. (As a side note, I am totally down for that conversation!)
Soft Skills in daily use
Sure, talking to bosses is one thing, but maybe you don’t have to do that often. Your boss is a tech person too, so they speak the language. Great! That means that your day-to-day work may go smoother. Think about it, though: have you ever seen conflict between people in the office? Have you ever had an angry customer (internal or external)? The answer to both of those questions is either “YES!” if you’re not lying to yourself, or else you’ve probably never had a job. Conflict is part of our existence, and is going to happen whenever you get more than one to two people together for any length of time. It may not be angry conflict, but still there will be conflict. Conflicting views, divergent vision, workflow requirements that don’t jibe with how you want to handle things, are all low-level conflict. Being able to deal with that effectively and professionally, and being willing to bend (at least some) in order to follow the best practices of your team is critical.
But I work from home now! Soft skills are useless to me!
Um. I’ve worked from home since the start of the pandemic. Honestly, soft skills have been more important to me since leaving the office than they were when I was in the office. People are much less likely to “blow up” or just ignore you when you’re right there in front of them. Working at a distance gives enough separation that people are more willing to do things that we would find disagreeable. Also, if you’re working from home, communication is an even larger part of your job. You need to keep everyone (co-workers, management, clients, anything regulatory) in the loop as to what and when you are doing things, what has been done, is yet to be done, and what will have to wait or cannot be accomplished currently. Being able to effectively communicate is always going to be vital in business, but when doing business remotely, it’s critical to keep things flowing.
OK, That’s Nice…So Which is More Important?
I’ll take someone with great soft skills and only the bare minimum in tech skills any day. They have that minimum, so I know that they can learn, and that they have taken the time to do so. I can teach someone to access an SQL database if they never have before, especially if they’re comfortable on the command line. (Yes, I prefer to use PGadmin too…work with me here) I don’t want to have to attempt and teach someone how to care about other people genuinely. I don’t want to have to teach them how to handle interpersonal conflict. I’d say that for actually working in the field, soft skills are the most important to have up front, as long as you do know at least the basics of the tech skills. Learning more than the basics is always going to be better! Don’t take away from this that I don’t think you need to know tech skills! You need to know both…but if you can spin it the right way, then having those soft skills becomes more important than specific tech skills. If you’re switching careers from something less tech related, then lean into those skills. People with management and sales experience, particularly, can be valued: we know how to “pitch” ideas in a way that business and finance people can understand and accept, and know what sorts of risk they aren’t going to want to deal with.
Conclusion
Soft skills are likely the most important skills for you to have…but this cannot be at the expense of your tech skills. Make sure that you understand the basics of business and the like, and that you know how to talk to people. Know at least the basics of the tech skills that you’ll need. If your soft skills are well developed already, then you can move from there into learning more advanced tech skills which will help even more with landing that job. If you have doubts about this approach, consider this: How’s that first interview going to go? The one where you actually talk to someone. Tech skills are something you talk about in an interview. If you don’t know how to talk to people, then you’ll likely come off as an arrogant ass, or else someone who just can’t deal with people face to face. Those aren’t disqualifying things, for a lot of jobs in tech…but which one is the hiring manager (or HR person/recruiter, frequently, for that first interview!) going to prefer? The tech skills get your foot in the door from your resume. The soft skills are going to land you the job.