How to become a Software Engineer in 2024
The three-step framework to get started as a software engineer.
There isn’t a one-size-fits-all approach to becoming a Software Engineer. You might not know what to learn when you initially enter the field. To some degree, roadmaps enable you to start your journey and steer you in the right direction.
For the same reason, this article consists of six different roadmaps within Software Engineering for you to get started.
However, besides those roadmaps, one must focus on developing a list of required skills. I’ll deliver that list in this article. Those crucial skills will enable you to work with teams, communicate your ideas, ace your interviews, and more.
Let’s take the Why—How—When framework I picked for this article. Furthermore, I have a dedicated section called “What to look out for” that expresses the lessons I learned throughout 2023 at the end. You must continue reading to learn from my mistakes and avoid making them.
Why
More often than not, engineers face Impostor Syndrome. We experience challenges and setbacks that make us feel underskilled and overwhelmed. We feel like we don’t know enough. In the SWE world, there are moments where we feel utterly useless if we can’t build an application or implement a feature.
These moments are easier to deal with when you know why you started. I remember I loved computers when I was a kid. I didn’t know enough about programming. But, I felt peace when I created something using them. Even if my projects meant crap compared to industry standards, I still made slight progress.
Later on, I wanted to become an entrepreneur. I desired to build solutions. I saw that programming was booming. It was a high-paying industry. I wanted to create solutions and chose this field because I had experience writing HTML & CSS code. Yes, that’s funny.
I recognised financial potential with a passion for doing something. I purchased courses with my startup money and upskilled daily. I reminded myself why I started. It was necessary to help me continue because humans often forget why they started doing something.
We get lost in fancy roadmaps, videos, courses, etc. But it’s necessary to look back once in a while.
“How cool would it be if I could create a website and launch it on the World Wide Web for everyone to access and use?” And that’s where it started. Forget other success stories. Focus on building yours. Your reason to enter this field can be for the money. That’s fine. We all have different goals.
The idea is to focus on yourself and not others. This field has many prodigies with early success stories. I don’t listen to their stories but spend time building mine. Learn from their mistakes instead of being jealous.
Once you get your purpose straight, the next step is to understand how to conquer that purpose.
How
Now, explore the ways to achieve your purpose. I deliberately chose the word “explore” because the choices committed during this step change once beginners turn intermediate. The method of doing something should change as you grow. You explore more options and understand the intricacies of the field.
I can build a product or solution to solve a specific problem in a hundred different fields. I have the options. As a beginner, I must narrow them down based on my interests, experience, and knowledge. It can be UIUX design, Desktop Development, Data Science, or Front-End Web Development.
I ask myself — “Which of these fields most resonate with me? If I had to sit for 10 hours, which field would I choose and not get exhausted?” For me, the answer was Web Development. I began and eventually explored all the other options with experience. I knew the answer because I had explored other options.
Before choosing Web Development or SWE, I built various products using different technologies in diverse fields and industries. Try everything to figure out what gives you joy. Follow the principles of Ali Abdaal when he says that productivity requires us to do something we find joyful and fulfilling.
As a beginner, you don’t know about the fields in an industry. The best way to learn is to search for it. Do a precise Google search of “Which fields exist in Software Engineering” and examine the results. Make categories based on future potential in growth and finance because you don’t want to pick a dead field with no future scope.
Learn the fundamentals of each option. You will get a gist of how they work based on videos and articles concerning the topic available on the Internet. With a strong foundation, you can learn the complex concepts effortlessly. Strike a balance between theoretical and practical. Create more problems and build solutions using them.
Look at the financial future of your desired choice. Luckily, Web Development had a foreseeable future. It scaled as required. At that time, it was one of the highest-paying jobs. I selected it for the same reason.
Passion and Interest are pointless if you cannot make money. It’s like building a loss-making business without the potential to grow.
Here are a few roadmaps or guides with the names of central technologies that I believe have potential in the future. Furthermore, do your research. I don’t know you, your skillsets, or your past. Choose the right fit for yourself.
Web Development
Blockchain Development
Data Science
Mobile Development
Desktop Development
Game Development
When
Most people know what they want to do. They have the perfect plan and the best roadmaps on the Internet from the most experienced engineers. Yet, they fail to take action because of an excuse.
Here are a few steps to take consistent actions —
Set a time to learn and practice every day for at least half an hour.
Interact with other engineers on platforms like Twitter (X) and share your knowledge.
If you want to build something, put it in a to-list and assign a deadline.
The best time to learn was yesterday, but you can still conquer today. Take the necessary steps after reading this article. Go to the documentation of the language you wish to learn or buy the Udemy course you always wanted to learn.
Watch the course daily for a blocked duration and practice while watching those videos. Focus on being practical because there’s nothing more vital than knowing how to fix a bug that most engineers cannot.
Experience and a spark to explore for whatever purpose bring you the leverage to build whatever you want. Make things easier for you. Don’t make big goals that overwhelm you. Instead, improve yourself and achieve your goals with slight (0.1%) progress daily.
Practising daily helps more than you can imagine. With fundamentals, you can also take advantage of Artificial Intelligence tools.
What to look out for
The first lines of code you write by yourself will seem difficult. For the same reason, experienced engineers suggest picking a field with a minimum entry barrier, like Web Development. Don’t get scared or frustrated. Remember, we all have been there. Instead, focus on reading and learning more. In the SWE world, the resources are abundant.
Don’t jump to complex concepts or techniques. If you know how to write a for-loop, it doesn’t mean you can deal with data structures and algorithms already. It takes time to make progress. Avoid overwhelming yourself. Focus on the basics.
Avoid finding an answer directly. Spend a few hours, if not days, to understand why a specific bug or error keeps appearing in your code. Find the root cause. When you know why a problem occurs, it’s easier to solve it.
Avoid directly writing code. When you are assigned a problem, start by building a strategy. In Interviews, the employers test your thinking process. Before writing code, I design a flowchart or mindmap of how to solve a specific problem and what to use.
Take a break. Whenever I encounter a bug that overloads my cognitive ability to think and solve, I go on a small ride to the nearest cafe and spend time with my friends. I kept myself distracted from work and came back with a fresh mind.
Avoid copy-pasting code. If you ask an LLM for a code snippet, you must understand the logic before you use it. And while using it, try to write the entire code yourself and explain each keyword with their usage. It’s tempting to ask GPT models to write code. However, you are at the stage of learning, not implementing.
Use GPT models to explore and expand your avenues. I once saw a code snippet on Twitter about a JavaScript-related trick. I couldn’t understand specific pieces of the logic. I asked ChatGPT to explain the purpose of a combination of operators together and fill the necessary gaps to understand the code snippet.
Avoid excessively learning and start building. The main joy of being an engineer is to help others create their projects and allow them to help you create yours. Contribute to open-source and build open-source projects. Your theoretical knowledge will solidify and stay with you for the longest time when you practice and implement it daily.
Start by building smaller projects. Again, don’t overwhelm yourself. When I decided to learn the Swift language, I built a Pomodoro Timer for Apple Watch, Apple TV, and MacBooks. I started small and took baby steps.
Reflect on your mistakes and fundamental gaps in your learning. There are situations where you cannot implement a specific feature using a technology. At that point, write down the technology and features you failed to implement. After a bit of time, revert and start working on that gap. I couldn’t work with component libraries, so I took a project that allowed me to use those component libraries and build a project.
Build valuable connections. Life goes beyond work. I focused on only making friends who could help me earn more money. It made me shallow because I didn’t interact with them. I wasn’t friendly. I began treating everyone as a friend who is valuable to my career, but not limited to that, and became a positive person. I shared my problems; they shared theirs. We fixed bugs together, taught concepts to each other, etc.
To succeed, you must try, fail, and then retry. We’re all humans. And that’s why we should give ourselves time to adapt to problems we face today with the knowledge of yesterday.
If you want to contribute, comment with your opinion and if I should change anything. I am also available via E-mail at hello@afankhan.com. I’d love to get your feedback through the comments section.