The hype for software engineering these days is real, a quick look on GlassDoor or Indeed gets people itching for that 6 figure salary out of college, with senior software engineers making well over 6 figures! I have had middle age people 10+ years into their careers asking me how they can switch over to become a software engineer. It is definitely understandable why people are so interested, not many jobs out of a 4-year degree or even senior positions merit making that amount of money. Not only that, but it is one of the few jobs where working from home is sustainable. Many of my engineering (mechanical, civil, etc) buddies have returned to work from the office after the pandemic, whilst I work from abroad due to the flexibility I thankfully have with my job. I am writing this article as a young software engineer and I wanted to give my experience on the career I have chosen, being out of college for 1 year now. In this short post, I will highlight the pros and cons of being a software engineer.
Yes, the first thing people typically associate with this career is money, with the average software engineering salary being roughly $128,000 according to Indeed. With some exceptions, software engineers typically make more than other engineering majors (1), which is why it can be tempting for people already in engineering fields to simply switch over, given that many engineers take some coursework involving coding, it makes it much easier for them to do that.
One of my favorite things about being in this field is that the growth is literally endless. You will be learning from the day you start until the day you retire. Make sure you stay humble because there will be a lot of younger people showing you how to do things. There are always new technologies, languages, and infrastructures emerging. If you move from one project to another you often times find yourself having to learn some new architecture which enriches your knowledge and resume. In just about any project you work on, there will be some sort of obstacle or obstacles, you have to overcome to get the job done, but after doing so you will find the outcome very rewarding for yourself.
Many people think of software engineers as people who simply write code all day, but that is not necessarily true. There are many sub-domains in software engineering that do not entail you writing much code or even any code at all. You can find yourself in DevOps where you focus on the processes, tools, and methodologies to balance an efficient software engineering cycle for the developers on your team. In this role, you will focus on improving infrastructure to improve the software systems at a company. You can be a Technical Lead where you oversee a software engineering project consisting of several software engineers to produce a new feature, ensuring that the project is going to plan and that your engineers are following proper software engineering standards. Machine Learning is another subfield that is immensely popular these days, where you can work on many challenging problems regarding self-driving cars, autonomous systems, natural language processing, ad tech, and more. The diversity gives you the ability to pivot your software engineering career into areas you find more interesting.
As mentioned earlier, you can work from locations other than the office (of course the rules depend on the company). Some workplaces allow full remote in the US or abroad, while others allow you a certain amount of days to do it remotely. It is a pretty cool perk to have if you are young and want to explore different places. Many engineers are taking their laptops and living out of hostels all over the world! Additionally, many companies are allowing "flex-hours", that is, you can spread your hours across the day, as long as you get 8 hours of work in, so you do not necessarily have to do 8 hours straight, as is the case with the traditional 9-5. This gives you the flexibility to make an appointment in the middle of the day, have an extended lunch, do a yoga class, or something of that nature. It really depends on what you produce at the end of the day, if you are good with time management you can take advantage of that sort of flexibility.
You will find that many of the projects you work on are meaningful and you will also feel highly respected at work. Many of the solutions you will be working on will have something to do with making someone's life a little easier, depending on the project. Sometimes you will be tasked with automating a mundane task that can help the customer or even help your team do work more efficiently, other times you will create a feature that will add a considerable amount of value to your customers' lives. In my long 1+ years (not long at all) of time as a software engineer, I do not think I have worked on a meaningless project, and I think my future work will continue to bring me meaning in some way.
Potential for Entrepreneurship
With the bazillion things you are learning, you will eventually have enough knowledge to start projects yourself. You will be surprised at how quickly you will puzzle things together after just months of experience. You can start developing web or mobile applications, start consulting, work on open source projects, create APIs, create new neural network models to solve problems, and tons of other ideas depending on what sector you are in. I think a lot of people in this field have a buzz of ideas, not all necessarily take action and that is completely okay, but if you are someone who wants to learn something that allows you to build something meaningful and powerful from scratch, this is a great field to be in. There are so many resources out there that allow you to start up your technology for little to no cost, such as AWS, Azure, Google Cloud, and many more. There are also many resources to help you independently enhance your learning if you need help pursuing your own projects.
There is no doubt that the job can be quite stressful at times. With each task you are usually met with several "blockers", which are barriers that prevent you from smoothly accomplishing your task, these blockers can consist of many problems such as a lack of knowledge in the subject, an unforeseen engineering problem, or even someone else's work holding up your own. It can be a little frustrating especially if you come from a field where everything is predictable from start to finish. Software engineering projects are notoriously not finished on time and are usually over budget (2), so do not expect anything to be perfectly smooth. However, this workflow is adaptable and many people find themselves becoming better more resourceful, and end up being better problem solvers after enduring all of the pain and suffering.
Competition for jobs is extremely high. Although there are many software jobs, the best ones are really hard to get and actually require weeks or even months of studying and preparation. So if you expect that rockstar Google job just know you are going to have to go the extra mile and enhance your skills beyond the average software engineer. This involves reading books such as Cracking the Coding Interview, watching several hours of YouTube videos, and working on your algorithm skills on websites like Leetcode depending on the job it can even take more work, especially for advanced roles. It is also highly recommended that you show some degree of ambition by having your own personal projects and pursuits, which can take time out of your personal life. Many people want that job so ideally, you are going to have to find a way to stand out from the crowd.
The learning curve is steeper than many people think, you cannot just take a course on Youtube or Udemy and expect to be accredited. While there are many people with nonsoftware engineering degrees, or people without degrees at all, who end up in software engineering, it is most likely the case that these sort of people have demonstrated their high caliber in other ways. I think you have to display some degree of advanced knowledge in software engineering before being taken seriously by the big guys. This probably means getting involved in some sort of software project, whether it is a full-stack, backend, machine learning, or something along those lines. Producing something eye-catching takes considerable time and patience; you will find that the simple idea you came up with actually comes hand-in-hand with several blockers.
Without evidence needed, software engineering jobs can be extremely sedentary. You will probably be sitting on a desk >90% of your workday, or standing in the same spot if you have a standing desk. In either case, it is detrimental to be in the same exact spot all day. We're humans, we need to get out, walk, exercise, and get our blood pumping. However, after a long day of exhaustive thinking, you can easily forget that your health is at stake and just neglect the need to get out and exercise. Health is more important than work, young people tend to forget that, and being in this field exacerbates that negative mindset.
There is a stereotype that software engineers are "geeks"... which may not be entirely false, but there is nothing wrong with being a geek. However, I do believe that limiting your social interactions with other human beings is definitely unhealthy for your mental well-being in the majority of cases. Working from home 8 hours a day does not help with this either. People in this field can go days without real social interaction (other than Zoom). Some people do not even show their faces on call, which adds to the mess. A guy once told me he did a virtual internship for the whole Summer without seeing a single face of one of his coworkers, pretty mind-boggling. If you are an extremely extroverted person you will have to adjust.
After reading all of this I hope you have some useful information to decide whether you want to be a software engineer. Personally, I think that the pros outweigh the cons because if you really think about it, the cons all have solutions. There are many ways to reduce stress via hobbies, habits, etc. Competition does not have to necessarily be pursued, and if you do not mind it, it can end up making you a better person than you would have imagined. The learning curve is fixable, after all, it's just a curve, just be patient and continue to ride it until you experience exponential growth. Physical Health? You can get a gym membership, go on a long walk, pick up a sport, or just pursue any other physical activity. Mental Health? If you have the will you can find many friends through work, attend social events in your area, and enjoy time with your family. I am a firm believer in "If there is a will, there is a way". I think it is a solid career choice and worth pursuing, especially if you want to be an entrepreneur and do meaningful work. Please feel free to contact me if you have any questions about being a software engineer.