How To Become A Software Engineer From Scratch In 2022
A step-by-step guide on how to become a software engineer from zero to hero.
Do you want to be a Software Engineer and you don’t know where to start? You don’t have a computer science degree, or you didn’t go to a coding bootcamp and you want to know which path you should follow? or which curriculum you should study? Are you confused about which programming language you should start with? Some people told you that you should start with C++ while others told you to start with Java, then somebody else broke into the conversation telling you that JavaScript is a modern and beautiful language, then another one told you ‘Hey, python is the way to go, it’s very easy and simple and it's so popular nowadays.
Then after that you are still confused about the specialty that you should get into, web development, mobile development, desktop applications, data science and AI, or any of the huge specialties in the computer science field.
I am writing this article to solve this problem for you and help you learn programming in the fastest way possible and in the most effective way.
My name is Noor Fakhry, I am a self-taught Software Engineer, and what I am about to tell you here in this article is from my personal experience and this is the exact steps I took in order to learn programming and this is how I became A Software Engineer.
The first thing that you need to know is what a software engineer actually does in his day-to-day job, in order to define if programming is suitable for you or not. A Software Engineer main task is problem solving and transforming these solutions into a software that people can use, if you see yourself as a problem solver then programming will be a perfect field for you.
I will split this article into two parts, each part will represent a phase that you have to go through when learning how to be a software engineer.
The first phase will be about building a strong foundation in programming and software engineering by learning the basics.
The second phase will be about specialization in a certain field from the huge variety of tech fields.
Okay, Let’s talk first about the first phase which is the foundation phase:
As they say the fundamentals never change, programming languages and tech stacks can come and go but the fundamentals will remain the same forever.
The first thing that you need to do in the foundation phase is to choose a programming language from the famous and popular programming languages (i.e., C++, Python, JavaScript, Java, Dart, PHP, etc.) and learn it from A to Z, and here we will come to our great debate which is choosing which language, believe me, It doesn’t matter and It doesn’t make a lot of difference, choose any of these languages, what’s important here is to focus on learning the programming fundamentals, like Variables, Functions, Loops, Object Oriented Programming, etc., and you will find all these things in any of the popular programming languages, and if you are thinking that you don’t want to start with a hard language, believe me the first language that you learn will be the hardest on you regardless of which language this is because your mind is dealing with the programming concepts for the first time in his life and it is normal that it will be somehow hard at first like learning anything new in life, but believe me it’s going to become much easier with time and practice, the most important thing is that you try to focus on learning how to think like a programmer. And take your time with the programming language that you chose, Don’t rush yourself, this is something that takes a lot of time, it’s perfectly normal, consider yourself planting a seed now, and the time of harvest will come later, and stick to the programming language that you chose until you become fluent in it, what I mean by that is that if you choose C++, for example, don’t learn python at the same time, as learning more than one language at the same time while you are still a beginner will cause a lot of confusion for you, wait until you become comfortable with the programming concepts and until you have some practical experience under your belt in that language, and I promise, learning any new language after that would be very easy and simple to you, and it won’t take a lot of time.
The second thing that you need to do in the foundation phase is to learn Data Structures and Algorithms.
Data structures and Algorithms are very important in building a strong foundation to any software engineer as it teaches you how to write code in the best way possible, it also allows you to write large scale applications which can deal with millions of users in the most efficient way. And if you go to any interview in any of the large tech companies, you’ll find out that 90% of the interview is about data structures and algorithms.
The Third thing that you need to do in the foundation phase is to practice problem solving, and to try to strengthen the problem-solving muscles in your mind as much as you can, because at the end of the day programming is all about problem solving as we said before. Spend a lot of time solving problems, and learn how to think like a programmer, learn how to take a problem while it is still a big problem and break it down into smaller problems and start solving each one at a time, and then gather those solutions together in order to formulate the bigger solution at the end. Learn how to follow logical steps when you are solving a problem, learn how to visualize your solution before diving into writing the code.
Some of the great books from which you can learn how to solve problems are ‘Cracking the coding interview’ and ‘Think like a programmer’, and there are a lot more of course.
You can also practice problem solving on websites like ‘Leetcode’ and ‘Hackerrank’.
The Fourth thing that you need to do in the foundation phase is to learn a little bit about object-oriented design and how the architecture of the software is created from inside.
At this point I can congratulate you, you are now a professional software engineer, but can you get hired at this stage, no, why is that? because you need to specialize in one of the software engineering fields, and this would take us to the second phase in your learning journey. And don’t worry, this phase won’t take much time as you already built a foundation in programming and learning anything after that would be much simpler.
Okay, but how would you pass this phase? choose any of the many fields of software engineering, for example, you can choose web development or mobile development (Android or IOS) or any other field you want, and learn it from A to Z, then build your own projects in that field to create your portfolio.
One last thing I want to talk about but it’s not least, which is the communication skills. You should work on them as you are going to be working in a team and you should be able to communicate with them effectively.
Let’s summarize what we said so far.
If you want to learn programming from scratch until you become a professional Software Engineer you should follow these steps:
- Choose one of the popular programming languages and learn it from A to Z.
- Learn Data Structures and algorithms.
- Practice a lot of problem solving.
- Learn a little bit about OOD and software architecture.
- Choose any of the software development fields and specialize in one of them.
- Build your own portfolio of projects.
- Work on your communication skills.
I hope you have a great journey learning how to code, and I wish you good luck.
Don’t forget to leave your thoughts in the comments section, and if you have any questions, feel free to leave them in the comments and I will answer them all.
Check out my YouTube channel.
And if you like to watch the content written in this article as a video check it out here.