“Is software engineering for me?” Glad You Asked, I’ve Got Answers
I think people have a misconception or an idea of what a software engineer should look or be like. Most people think you have to be a genius or be really good at math. Or they’ve seen movies of engineers being the geeky person just coding away in a basement. Hey, newsflash, none of it is real!
Sure, there are some software engineers that are good at math and are geniuses but that’s not really the case for me and most engineers, we’re just regular people that love learning and solving problems.
So, I’m going to list out some qualities for you that are actually needed to be a software engineer but I’m also going to help you figure out if you should pursue a career in programming and how to know almost immediately if this a job you can handle having.
First things first..
What does a software engineer even do?
I say this constantly because it’s literally the essence of what being an engineer entails.
As a software engineer your job exists to solve business problems. Period. Solving problems is all you do, all day, every day. You’ve solved one business problem? Great, here’s another one and guess what? Tomorrow there’s more problems. And the day after that, and the week after that, and the month after that, you get the point. It’s a nonstop cycle.
I know “solving business problems” might seem intimidating, it definitely scared me when I first heard an engineer tell me this when I was starting out. But don’t be intimidated, you’ll see as you’re learning, if you decide to pursue this, that ultimately businesses need to be able to do certain things and continue evolving on a regular basis and programming helps businesses be able to do just that. Essentially you’re using code as a tool to help solve those problems.
It’s also a pretty creative job because you could solve a problem a million ways, and two engineers could be looking at the same problem and come up with different ways of coding up the solution. Rarely is there only one way of doing something, every solution has pros and cons, and you want to ultimately choose the one with the less cons. I think that’s the beauty of this too — you can constantly improve your craft.
Now the good stuff..
How do you know if you’re going to like solving problems and being an engineer if you’ve never done it? Simple. Answer this question:
When you’re learning / working on a project or a coding problem, do you get a sense of reward when you finally solve the problem you’ve been working through? Does it feel good to get to the end?
When I was learning to program and I would finally figure out the issue I was having, I would get almost like a dopamine hit. The same was true when I wrapped up a project I was working on. I would feel this immense sense of reward. I think every engineer is ultimately chasing that feeling and it always comes after every problem you solve. Not a bad gig, right?
If when you’re learning and you solve a challenge / problem and you feel nothing in the end or just couldn’t wait till it was over, maybe this isn’t for you. If you don’t get a dopamine hit, it might mean that you don’t like figuring things out and solving problems. If you don’t feel any sort of accomplishment afterwards, you might not be able to handle this job, it won’t be sustainable.
I can’t imagine any engineer doing this strictly for money or doing this and not enjoying it even just a little. I’m not saying you’ve got to be obsessed with programming, definitely not. But there has to be some enjoyment or sense of accomplishment otherwise you’ll burn out almost immediately. I’d give it a week before your mental state starts declining because the problems do not stop coming.
Another HUGE and important quality that you need to have is a love for learning
When I graduated college, I remember trying to figure out what career path I wanted to go into. I knew one thing for certain, I loved learning and I thought if I could get a job where I’m constantly learning and being a forever student, I’d be really happy. At the time, I had no clue that software engineering would turn out to be just that. But.. I intensely LOVE learning, I obsess about it on the daily. So learning to program and then getting paid to continue to learn? Yeah, sign me up.
Here’s why loving to learn is important when it comes to software engineering:
1. For the most part, you never know what you’re doing or how you’re going to initially solve a problem and you just figure it out. This is where learning comes into play, you’re constantly reading, researching and looking things up. You’ve got to be okay with this. A lot of people think engineers just code for hours and hours banging away at their keyboard without a single thought, that’s not reality.
There’s a lot of planning, thinking and analyzing. You don’t know how to solve every problem, your job is to figure things out and the code is just the avenue in which you solve the problem. The code is really the last step in this process, everything before that is coming up with a solution.
2. As you may know, technology is constantly evolving and if you’re an engineer, you’ve got to keep up with those advancements, otherwise you’re screwed. It’s safe to say if you don’t like learning and researching, this job is not for you.
There are other qualities that generally help you if you have them like being logical or being good at a math because I then assume you’re also good at solving problems.
Apart from being able to solve problems and code up solutions, as a software engineer you have to be able to communicate with others. I think it’s almost as important as knowing how to code.
A lot of people think that engineers just sit on their computers and don’t talk to anyone, that is a little true but… there are A LOT of meetings… you don’t just get to hide behind your computer.
There’s people that need to know what you’re doing because your work affects other work or intertwines with someone else’s or maybe you’re working on something critical for the company, there will always be people that need updates.
You’ll be talking to a project manager on a regular basis and you’ll be talking to other engineers on your team. You’ve got to think of it as a team sport. Everyone is working on different aspects of a project but everyone’s end goal is the same: to finish the overall project. Therefore, being able to effectively communicate with other people on your team and know how to work well with others, is essential and will help you in ways you can’t imagine.
That being said, it’s hard being an engineer, if it was easy, everybody would be one but if you can enjoy being one even just a little bit you’re in for some serious comfort.
I encourage everyone to at least try learning to code even if you don’t end up doing it as a career because it really makes your life better, you learn how to solve problems and the world is filled with them. So if you can train your brain to be in solution mode, you’re going to be better off. There’s a reason software engineers get paid well, their solving business problems. These companies can’t survive without them… literally. They are that important.