“I think I am interested in programming but I am not sure if becoming a software engineer is for me. What do I do?”
I have spent the last 15 years working as a professional software engineer. Throughout my career, I have learned and used many programming languages and technologies. From web development to database development to backend server-side programming. Below are a few items I believe will help you to determine if software engineering is right for you. These are not hard fast rules so don’t let this discourage you. This is a guide to help you figure out if you would like to pursue software engineering.
A career as a software engineer can be extremely rewarding. It can also pay very well. But, like other jobs and careers, it is not for everybody. So how do you know if it is something you want to pursue or not? How do you know if you will like it?
How Do You Know If You Should Be A Software Engineer?
Hands down, the best way to find out if a career as a software engineer is right for you is to try it. Careers such as becoming a doctor, you will need many years of education and degrees before you ever get to apply your knowledge to a real patient. The barrier of entry for a career as a software engineer is much lower. Nothing is stopping you from learning to code other than time and willingness to start.
There are so many free and inexpensive resources online for you to learn from. And unlike becoming a doctor, you do not need many years of education before you can start putting your newly found knowledge to work. You can build a website and have online in a matter of days. You can write simple command-line games or even start writing C# code in a game engine like Unity. Doing this you can start building games quickly without formal education or spending a dime. Everything you need, the tools, tutorials, courses, and other resources you can find for free or for very little money.
That’s not to say that a formal university education is not beneficial. There are many pros and cons to formal education and many pros and cons to learning on your own. That is a discussion for another time. Whether you are deciding on which degree to pursue or deciding if you should learn on your own. This will help you determine if software engineering or a computer science degree is for you.
Beyond just diving in and trying it out, here are other items of note about being a software engineer to help you decide if it is a good fit.
More Software Engineer Considerations
Software engineering is not age-restricted. Anybody from young kids to adults close to retirement and beyond can get into or continue growing as a software engineer. As long as you stay up to date on the technologies and programming languages and do good work, you have a career here. It doesn’t require you to be on your feet all day or lift heavy items so there are no physical limitations as well. As long as you don’t mind sitting for long periods. You can still get up and go for walks or get an adjustable standing desk, but you are not required to stand or lift anything. See my post “You Are Never Too Old to Accomplish Your Dreams“
Software Engineers Solve Problems
You do need to have a love for solving puzzles and problems. The main job of a software engineer is to solve business problems using code and technology. If you do not enjoy the problem-solving process, this can get old quick. You do not need to be super excited about it every single day. Even things we love become work after a while. But you will be solving problems and coming up with solutions every day so it helps to start with a love for and a knack for it.
You very much need to be a self-starter. Because you will be the one solving problems, you cannot wait for somebody else to tell you how to proceed. You will need to take the initiative to come up with possible solutions, figure out which will be the best solution, and then learn and figure out how to implement it.
A Love of Learning
Learning new things is also a big part of software engineering. Having a love of learning will help you to stay up to date on technology, software architecture, and programming languages. A manager will rarely tell you what to learn and when to learn it. You are generally expected to take that on yourself. Managers and other coworkers are certainly willing to help guide you when asked, but you will need to put in the work to do the learning. Having a love for learning new things will help get you moving when a new problem requires you to learn a new technology or language to solve it.
You must be able to embrace those new problems and challenges. In the beginning, when you are first learning and first starting a career, every part of the projects you work on are new problems and challenges for you. If you are somebody who just wants to do the same things over and over again, then this line of work will become very tiresome very quickly. Even as somebody with 15 years of experience in the industry I still have to solve new problems and challenges.
Software Engineering Requires Group Work
Contrary to popular belief, software engineering can be a very group-based job. Particularly if you are working at a company as opposed to being self-employed. There are chunks of time when you are alone working on your code but there is also a lot of time you will spend collaborating with other engineers on projects, or doing code reviews of your code and other engineers code. You will be working with product and project managers on requirements and deadlines. Dou to all of these interactions it is good if you are at least ok with a good amount of daily personal interaction with groups of people. If you are doing freelance work you will still have these types of interactions but to a much lesser degree when you work with your clients. The same goes for if you are working on your software products or websites.
Persistence is Key
And finally, you must be very persistent and be able to take projects to completion. This might seem self-explanatory, but there is a lot more to a software application than just implementing the code for a new feature. On top of coding new features, you will need to write extensive unit tests and integration tests. There are also builds, deployments, and you may also need to do some integration with other systems and applications.
There are tons of little tiny details that can seem like they take forever to get through but they are very necessary. You may also come across a problem that seems like there is no good solution. All software problems are solvable given enough time, money, and persistence. If you keep at it and don’t give up, you will eventually find the solution, even if the solution is managing the expectations of the client/manager instead of implementing a new feature. Or there might be a completely different way to go about solving a problem then what the client or manager suggested initially.
I do hope this has given you a little insight into the life of a software engineer. Even if you don’t feel like you match all of these points, I still encourage you to give it a try. Once you start learning and get your hands on some code, you will learn very quickly if it is something you want to pursue or not. It really can be a fun, exciting, and rewarding career.
Don’t be afraid to jump in and try it. Take action. Imperfect action is better than no action at all.