Table of Contents
- College
- Teach yourself
- Hybrid Approach
- Getting a Job as a software engineer
- Excelling as a software engineer
- AI impact on software engineering jobs
- Conclusion
“You don’t need a college degree to work in tech or be successful”
I agree, but it sure does make it a lot easier.
From what I can tell so far, in my career, there are 3 main ways to get started as a software engineer: a college degree, teaching yourself/projects, or a hybrid approach. Let’s discuss college, since that is the approach I know best, and also briefly discuss the other 2 approaches below:
College
This is the most common path to-be engineers take. While, college might not be a great choice for some professions, for engineering college is a great bet.
The most relevant major for a software engineer is computer science. Studying this major in college provides a very structured approach to entering the tech field. Structure, I would say is essential and one of the top sells of the college approach; with so much information available online it can be overwhelming on deciding how to go about studying/teaching yourself. In college, we are taught computer science theory and then the practical applications of theory via projects.
There is heavy focus on data structure and algorithms, which in my opinion is great and essential knowledge for a software engineer. I have noticed usually colleges start teaching from a low-level language like c. This also is beneficial since it prepares you to be able to pick up most other languages relativiley easily (maybe except Javascript lol).
Interestingly, I have met a good amount of software engineers that hold a college degree in a field unrelated to tech. The more I work in this industry the less surprising I find this phenonmenon. Colleges generally teach you critical thinking, problem-solving, and the ability to learn new concepts, and that is what software engineering is all about.
Teach yourself / Projects
Teaching yourself in my opinion would be the toughest out of the 3 approaches, but also very financially friendly. Laying out a solid structure on how to approach learning this field is what makes it tough. Free courses like these offered by Harvard, however, can help you get a sense of what all you need to learn and form some structure.
Doing personal projects definitely helps but finding something that truly stands out early-on can be challenging. However, contributing to open source projects could be a great application of this approach.
Hybrid approach
Hybrid approach would be something like attending a bootcamp. There are several types of bootcamps now, and some of them are very valid. I personally am wary of them (since there are always some bad apples), but it would be ignorant of me to say that they aren’t a valid option. I have met some great engineers who entered the field via the bootcamp approach and are doing great now!
A few bootcamps/similar programs I would like to mention are Launch school, Flatiron school, and Year Up. I have met people who have attended each of these programs and I can vouch for their validity.
Also, some bootcamps set you up with an internship and that can be a great way in to getting a permanent job.
Getting a Job as a software engineer
Now this is really the $$ question. And to be honest, there is no magic pill or hack to land a tech job. Now (year 2024), more than ever, it seems like a numbers game; you just have to fill out a lot of applications in order to land the initial interview.
Getting the Initial interview/phone screening
Currently, due to the mass layoffs (primarily caused by the mass hiring during covid), landing the intial call is half the battle. You need to make sure your resume is up-to-date and concise. You can utilize some tool like Jobscan to optimize your resume; if, like me, you prefer not to pay for such tools, you can post your resume on this subreddit to get some personalized feedback for FREE!!
Also, please don’t lie on your resume, maybe you can very slightly bend the truth, but I would suggest putting your actual accomplishments only…
Post-recieving initial interview
After getting the initial call invite, its time to celebrate.. Just kidding 😢
It is definitely good news, but like Kobe said:
Job’s not finished
Make sure to remain calm when on the call and stay away from showing desperation. Do some research on the company and ask the recruiter a few questions in order to asses the work culture and what you would be working on. If after the phone call, you happen to not hear back, do not hesitate reaching back out to the recruiter.
Preparing for technical interview
Now this is basically the final stage of the interview process. Depending on the company, you can have anywhere from 1 - 5 techincal interviews.
The gold standard for prepping for technical software engineering interviews is practicing leetcode problems. Some people grind 100s of leetcode problems; while, that approach may work for them I believe it is not the most efficient.
In my opinion, the most important thing is to do a couple leetcode problems in all the major categories. This roadmap from neetcode visualizes what all categories you should practice. Clicking on each category will list leetcode problems belonging to their respective category. This is the approach I personally followed to land my job at Microsoft.
If you practice most of these problems and make sure you really understand the principles behind solving them, you will be well-prepared for the interview process (granted you are not interviewing for a senior engineer or higher position).
Excelling as a software engineer
So far in my career, I have worked for just over 4 years. In these 4 years I have gotten 2 promotions and worked for 2 different companies. While, I am not a veteran in this industry I have learned a few things so far. I would like to share some things I have noticed, in the hopes of providing the reader some more value.
Apart from delivering your work items in a timely manner, a few things can help you stand out.
Finding problems
Find problems that aren’t being addressed within your product, maybe due to priority or have simply been overlooked. One easy way is by talking to more senior/experienced engineers on your team; they usually have a thing or two that they dislike but don’t have the bandwidth to address. Gather such problems and find one that you think can have the most impact, then deliver on it. Make sure to share it with your manager to create visibility, and you can even present it in a team meeting to showcase your impact!
For example, I had noticed a poor database access strategy for our product and then discussed it with a principal engineer. He expressed his frustration with that approach but didn’t have the time to address it. This strategy was used by multiple teams and vendor teams. This seemed like a golden opportunity and I developed a small script that would create read-only accounts for each individual user. I then worked with team managers and got all the internal and vendor teams onboarded to this new approach. This had a very positive security impact and ultimately landed me my promotion.
Helping people
Try to help people who reach out to you at work! Help people who are not even on your direct team.
At times it might seem like a waste of your time, time that you could be dedicating to your own work instead. However, spending a few moments to help people who reach out has postiive impact on your reputation. Sometimes you might actually be very busy and in those instances saying no is okay. In some instances it makes sense to ask them to schedule a few minutes on your calendar to meet at a time convenient for both parties.
As an engineer on a certain product we’ve the expertise and knowledge on the nuances of that product; at the very least we’ve the tooling to figure out what is needed. What can take a few minutes for us, can sometimes take hours or days for other non-technical coworkers. Therefore, helping folks out has a bigger impact than we think. This mindset of helping people has payed me back in dividends personally and some of the people I helped even reached out to my manager to give kudos.
We don’t want to help people because we expect something in return; helping people, indirectly helps us too whether it be through learning, reputation increase, or just the sense of satisfaction we get back!
AI impact on software engineering jobs
One last topic I want to touch on, is the fear of AI replacing software engineering jobs.
While AI can be helpful and will keep advancing, we’re far far away from the possibility of it taking over such jobs completely. So I wouldn’t worry about this just yet.
If AI gets to the point of replacing software engineering jobs, it wouldn’t be far off from replacing the CEO as well.
Conclusion
To briefly sum everything up, there are essentially 3 main strategies to enter the tech industry as a software engineer: college, self-teaching, and bootcamps. Upon getting the initial interview call, I recommend practicing leetcode problems in all the broad question categories (categories described here). After getting a job, there are few things I have noticed personally that help you excel in your role. Finding problems and helping people; essentially allowing you to deliver more impact.
Thank you for making it this far! I hope you derived some value from reading this short article.