- It is, at times, a very mentally challenging job. Besides developing code and fixing bugs, you have meetings, perform the breakdown of the work to be tackled in the upcoming weeks. Of course this depends on your role and level within the role.
- The more your level raises, the less code you get into contact with. Personally, I really enjoy coding and learning about coding everyday, so the idea that I might not be learning as much as I would like is not great.
- From time to time, especially in the end of the fiscal years, we might have more work and more meetings. Such arrangement leaves you with less time to do things the proper way and it you might feel like you are rushing your work.
- Due to being a very mentally demanding job, sometimes you might feel like you are burning-out or you simply can't disconnect from your work.
- The environment of the companies in which you work are often times really good. If you are into a multicultural, dynamic and fast-paced environment, then software engineering brings it all.
- You learn something new every single day. I've been doing software engineer for 5 years now and I'm learning at a really fast-pace, which is really cool.
- You have options, if you don't like coding, you can always go for a more managerial position and you don't need to code. If you love it, you can pursue a more technical career. If you happen to love product or design more than engineering and you are good at it, you probably can change your role like that as well.
- Pick your favourite spot to work, literally anywhere in the world.
I think these can give you an overview of what you can expect working on this area. Hopefully it helps!
The biggest downside is that tech knowledge goes out of date quick, so you constantly need to be studying new technology. Additionally, some people really hate spending all day coding on a laptop.
Depending on your level, you're attending and setting up meetings as well; as work is typically remote, you're communicating with colleagues in different time zones.
Because of this, I don't see any pros and cons of being a software engineer versus any other profession. I enjoy every aspect of it. If you're looking for what makes this profession stand out:
I have found the better your skill at math, the better you do. Classes (online, bootcamp, university) will typically teach you how to understand programs and coding languages, which are important. But the number of lines a day you can write is unimportant for an engineering job. You have to understand large programs (let's say 10,000 lines of code) and add onto them. You also have to understand code without writing it (for example, to make estimates, mentor developers or debug code within the hour). And you need to do constant research for new tools, new upgrades to existing software, et cetera. I - and other computer scientists - have found understanding plain old math helps with keeping the pace. (To get into particular details, understanding calculus, especially propositional calculus, is especially helpful.)
That being said, the tech industry is very large and you can join it without having all too much interest in the coding side. Engineers need to be supplemented with product owners, user interface designers, documentarians etc because a product is so much more than code.
In my experience, individuals who enjoyed Physics more than Math in high school tend to excel in various Hardware Engineering pathways. On the other hand, those who favored Math often find greater success in Software Engineering-related fields.
While I'm not an expert, I have a hunch that nowadays, there might be a wider range of job opportunities in the Software Engineering sector. Even businesses that appear to focus on hardware frequently employ a larger number of software engineers compared to hardware engineers. So, if you find both options equally appealing, it might be a wise choice to pursue the software route. Keep up the good work!