I’ve Been Lucky…
At this point, my home state of Virginia has been under a mandatory “stay-at-home” order for several weeks now (Or maybe a month? The days are all starting to blend together…). The news is full of mostly bad news, much of which revolves around employees and their lack of leverage. They want and need their employers to let them work from home, to provide paid sick leave, and to provide masks and other resources necessary for them to stay healthy. On the other hand, employers are struggling to figure out how to provide some of their necessary services (ie. grocery stores and shipping warehouses) to the rest of society while keeping their own employees safe.
All of this has made me think about my own career and why I feel so lucky to have landed in software engineering. Let me preface this by saying that I don’t believe that any employee is ever 100% safe from getting laid off, in any industry. That’s just not how business works. But I do think that my chances of getting laid off are lower and if I were laid off, I’d be able to quickly find work again to sustain my family. This’ll make more sense in a little bit.
What If I Don’t Like Coding Or I’m Not Good At It?
Let’s get this question out of the way. I want people to enjoy the same relative feeling of security that I do, but not everyone is interested in coding as others. And I know some people think, “I’m not good at math or numbers so I’d never be able to do that.”
To be totally honest, software engineering isn’t my favorite thing in the world either.
I’ve worked at Goldman Sachs, Amazon, and Capital One and I’ve met people who are extremely passionate about all things code. These people tend to stand out above the rest because they also spend their free time coding and reading about code. But they’re the exception, not the norm.
Unless I’m studying for an interview or trying to create some software business, I don’t spend my free time coding or reading about code. However, I do think there’s truth in the belief that people become passionate about what they do rather than finding some intrinsic passion you should spend your life trying to find. Since I code and design systems so much at work, I like it more than someone who doesn’t do all that. And I don’t just code – I also look for ways to learn more each day. This sense of progress is what keeps it interesting.
I may not love software development, but I do like it. And the better I get at it and the more interesting problems I run into, the more enjoyable it is. On top of that, I do love having the freedom to work from home when I need to. I love feeling a sense of job security within the market as a whole. I love the higher-than-average pay I get to support my family. And I love the time I’m able to spend with my family outside of normal work hours, the health care benefits, and the opportunity to invent new things. And getting to dress in jeans and a T-shirt every day is an added bonus 🙂
Finally, if you don’t think you’d be good at it, how do you know? Because you didn’t do well in math when you were a teenager? Because you’re not good at “logic”? First of all, to be a decent developer, you don’t need much more math above the basics – addition, subtraction, multiplication, etc. Second, focused practice will (I repeat, WILL) make you better at anything – including coding. And third, there are different aspects to software development. If you’re more of a creative type, you could do frontend development – where you design and build the parts of websites and products that people actually see.
Software development opens so many doors. You’ll be surprised by how much your life could change if you give it a shot.
Why Software Engineering is More Stable
Now let’s get into it – why is software engineering (aka. “software development”) relatively more stable than other careers?
1. The Pay Is Higher Than Average
I know the pay doesn’t really correspond with a career’s stability, but it can sure help with your life’s stability. According to the US Census Bureau, the average American income is around $60,000 a year. According to the job search service, Indeed.com, the average Software Engineer makes over $100,000 a year. Granted, this is an average of what more experienced developers make with what new developers make, but the difference is clear.
To give you a sense of my own experience, I interned with Goldman Sachs in 2016. When I was done, they gave each of us offers of around $65,000. I did some research and decided I’d try and wait for something better. Luckily, I interviewed with Amazon and was given a significantly higher offer right out of college.
If you don’t have professional development experience yet, you may need to start lower. But the potential is almost limitless. There are senior engineers at companies like Facebook and Google making well over $500,000 a year.
2. It Applies To Almost ALL Industries
If you’re a car mechanic, what happens when the industry shifts and people stop using the standard car? What if you’re a banking guru and the banking industry collapses (aside from getting bailed out by the government)? Sure, you could take your skills and modify them slightly to try and fit into another industry. You could maybe adapt to the changes and learn some new skills. But what if you’re laid off and the industry as a whole is declining? Most companies won’t be hiring, and it takes time to learn something new.
On the other hand, software development can be applied to pretty much any industry. If the banking industry died today and I was laid off, I’m confident that I could almost immediately get a job somewhere else (partly because of the demand factor I’ll dive into soon). I could work in the ecommerce industry, the car industry, the construction industry – you get the idea. Pretty much every industry needs code. Like most markets, one industry may be in a decline while others are growing, shifting demand around.
During a pandemic like the one we’re currently facing, people-related jobs are the most at risk, while the need for digital solutions becomes even more important – making engineering positions that much more secure.
3. It’s Easy to Work Remotely
Some jobs require that you be face-to-face with people. Software engineering is built with remote work in mind. Some companies are completely remote, while others have remote capabilities setup from the start to support needing to be “on-call” (ready to support a service if it breaks and you’re away from work).
This is not only helpful in terms of schedule flexibility, but it helps for a health crisis like COVID-19. When this pandemic hit, my team was able to work from home right away. All the tools were in place. All communication can be done via chat and video apps like Slack and Zoom. Productivity didn’t really slow down at all.
I personally think that being able to work productively while remote keeps software engineers a little safer during times like these. Since their output isn’t as impeded as other positions, their relative value goes up.
Also, demand for an engineer isn’t limited to local companies. Since it is so easy to work remotely, I can apply to work for a remote company based pretty much anywhere in the world.
4. It’s Somewhat Easy to Learn From Scratch
Before you go off on me about how difficult and complex software engineering can be, let me explain. Software development is much easier to learn than other careers because everything you need is right on your computer. If you want to become a doctor, you probably need tools, machinery, and maybe even some cadavers to practice on (I have no idea, but you get my point). If you want to become a car mechanic, it’d probably be a lot easier with car parts and cars to practice on.
As a software engineer, you literally just need a laptop and time (see below for how to get started). This is the beauty of it – anyone can learn it. And once you do, it’s powerful. There are so many things you can do with the ability to code. I seriously think everyone can and should learn it right away.
My point here is that if you’re a little rusty and finding it difficult to find a job, you can look online and refresh your memory. You can constantly improve your skillset to make sure you’re invaluable at work and can quickly get a new job if you need it. There is security in having access to information.
5. The Demand Is Constantly Growing
With all the news about employee endangerment, especially with customer-facing positions, I can only believe that even more entrepreneurs are thinking of ways to automate out these positions. Self-checkouts and warehouse robots already do some of the automating, but I truly think that by the next time a pandemic like this hits, the number of necessary workers will be much smaller than it is today.
With the increase in automation, along with the already growing need for engineers, software engineers will enjoy many more lifetimes of high demand. And with more demand comes more job security in the market.
Thanks to public schools, almost everyone in America knows the basics of math, history, english, etc. Then we go on to specialize in something like business, or teaching, or design. I actually think that one day, coding will be as common as history in schools and that everyone will know the basics of coding. Then we’ll go on to apply it in a specific industry like business, or teaching, or design.
That said, I think jumping on the train before everyone else gets on is a smart thing to do. Demand will go up, but so will supply. But if you can hone your coding skills today, you’ll be that much more ahead of the game.
6. Coding Is a Tool You Can Use In Many Different Ways
So how is software engineering stable? Well, jobs in general seem safer and pay better than others. If you did lose your job, the demand is high enough so that finding a new job isn’t too bad. Because of how easy it is to work remote, your job isn’t even limited to the state or country you live in.
On top of all that, you can use coding to start your own business. You can freelance and take on temporary contract work (or full-time if you enjoy it). Or you can come up with an idea that improves on an existing idea and become the employer rather than the employee. Indiehackers.com is a great site for people who want to bootstrap companies with just an idea and some basic coding skills (sometimes they start with none at all).
Coding is just a tool that you can apply to so many aspects of society. This flexibility gives you as much stability as possible in terms of opportunities out there.
How to Become A Software Engineer
Obviously, this in itself could be its own post (and maybe will be…). But I did want to leave some thoughts for those who might be more interested in software engineering and don’t really know where to get started.
The easiest and most straightforward way would be to go to college, get a degree in something computer science related (computer science, computer engineering, information technology, etc.), get a tech internship between your junior and senior year, and then apply for tech jobs during your senior year. This is what I did (more or less) and what many of my classmates did. This route is great if you have the opportunity, but not everyone is so fortunate.
Another route would be going to a coding bootcamp (the good ones can be pretty expensive) that lasts anywhere from a few weeks to several months. These can be helpful in helping you land a job and is what Clement (someone I’ve followed for a little while, here’s his YouTube channel) ended up doing. He actually landed jobs at Google and Facebook after this. Granted, he majored in math and just didn’t know how to code, but like I said before, advanced math doesn’t help a ton for most developer jobs. When I interned at Goldman Sachs, the other interns were actually from random majors like Biology and even English. I think Goldman liked the fact that people from other fields knew coding because they brought a new perspective to the company.
If you have no professional experience, I’d also recommend doing some coding projects. These look great on resumes and provide something tangible you can show recruiters. Any project is fine, just build something you find interesting. It also builds up your own skills if you aren’t able to afford a new degree or an expensive bootcamp.
Finally, make sure to build connections with recruiters on LinkedIn. See what their companies’ requirements are and how you can increase your chances of getting an interview. Many of them won’t respond, but it’s a numbers game. Eventually you’ll have a few that give you a chance. You have to start somewhere.
Interviewing is a skillset in itself. You can be a great interviewer and a terrible employee and vice versa. It’s really weird actually, but it’s the best the industry can do at the moment. Once you’re able to get the interview, you’ll want to prep for the interview.
The best resources I can recommend are 1) The book, “Elements of Programming Interviews in Java/Python” to learn/relearn the coding fundamentals, 2) leetcode.com to actually apply what you’ve learned (focus on doing as many medium problems as you can), and maybe 3) pramp.com to practice mock interviewing. You’ll also want to learn some System Design skills. You can use something like Grokking the System Design Interview for this. These are the exact steps I’d take whether applying for an entry-level position or a more senior position at a big tech company.
If you’re just starting out, maybe focus on just getting your first job as an engineer and move on from there. You’ll probably already make more than entry-level jobs in other industries. Remember, the easiest way to increase your pay is to switch companies. So these skills will be invaluable throughout your career. It’s also important to keep them up in case you did ever get let go from your job. I try reviewing/practicing these skills about every 6-10 months just to keep them fresh.
As I hope you can tell, I really hope as many people as possible move into software engineering or a similar job where the demand is high and doesn’t seem to be going anywhere for a long time. Once you’re in the tech space and start building up your skills and experience, it’s not too difficult to move into a related field like CyberSecurity, DevOps, Data Science, or Engineering Management. The world is your oyster.
Because of the relative stability, the higher-than-average pay, and the flexible nature of software engineering, it’s also a great step toward financial freedom. And interestingly enough, many of the financial gurus I’ve followed (Mr. Money Mustache, The Mad Fientist, etc.) started their financial journey in software engineering.
If you have any questions about the field as a whole or my own journey, please comment below – I’d love to help anyone who’s interested in learning more!