In the vast sea of Software Engineering, there might be several topics that interest you. And you might be thinking of picking out a few specific ones and focus on them. But as a beginner in the software industry, this process can be really intimidating.
Whether you are an IT student, aspiring software engineer or anyone looking to change their career to try your hand in SE, you might have some questions about where you can start. I faced similar challenges when I was starting out. In this blog, I’ve tried to gather a few suggestions from my experiences so far that might have been useful to my younger self, as well as anyone starting out in the field.
Pick a language, and master it
I’ve seen a lot of beginners asking what language I should focus on or start with. And I’ve also seen some strong opinions from people stating you should start with X language and such.
But in all honesty, I don’t think there’s a hard and fast rule about the “starting language”. Just pick up one of them, a language you can easily understand, and start from there. After learning inside out of a language/technology you already are equipped with most of the concepts and knowledge necessary. You should use that knowledge to explore other languages and technologies. It won’t be long before you find a certain language or domain that interests you the most. That’s when you should pick up the instinct and dive deep.
Doing this provides you with expertise in a specific area, but also surface-level or basic knowledge of other languages as well. Always avoid being the Jack of all, and master of none.
Work on your problem-solving skills
At the end of the day, programming is all about problem-solving. Not just programming, different aspects in software development requires problem-solving skills. Whether it be making complex decisions or fixing a problem, having that ability is always a necessity. One of the ways to improve this skill is to practice writing programs for complex problems. There are tons of resources out there like Hackerrank, Leetcode etc.
Along with that, learning Data Structures and Algorithms not only teaches you problem-solving approaches but also teaches you to write efficient code with optimal time and memory footprint. With all that knowledge you can also do competitive programming to take it a step further.
Focus on learning one thing at a time
With an ocean of technologies to learn and new ones arriving every day and or gaining popularity, it is very tempting to try them out. The willingness to learn and improve yourself is a very good thing, however, trying to get involved in multiple things at the same time is not a very good idea.
You may feel like you’re being productive, but you end up not learning a single thing properly. The fewer things you learn at a time, the better. And the more distinct they are from each other, the better. Limiting technologies or skills you are learning at a time also allows you to focus more on the specific one, get into details and have more time to spend with it.
Learn best practices
Best practices and software engineering principles are things that you should learn as early as possible in your SE journey. These things, most of the time, are less prioritized by beginners. However, they are really important topics. Some of the things you should learn are design principles like SOLID, YAGNI, KISS, DRY etc. along with different design patterns. For each language and technology you are learning, you can find best practices to follow and style guides for it.
This helps you to write better, clean and readable code.
Equip yourself with industry-standard tools
Different tools are used in the software development process. Chances are you may already be using many of them. Version control systems like git, UNIX-based CLI, different IDEs and their functionalities, debugging tools, testing tools/libraries are some of the major ones. These tools prove to be very handy even when creating portfolio projects.
Build lots of projects
Try to build a habit of creating projects each time you learn something new. You don’t need to wait to learn X topic before you develop something on your own. Reflect on what you have just learned by implementing your own projects. Projects do not need to be super complex, it can be as simple as a simple UI button.
This not only improves your portfolio but also gives you practical experience as you learn by doing. You may have been following along some courses and doing guided projects but that is not as effective as building something from the ground up. Avoid tutorial hell, find different forms of resources like blogs, books, articles, tutorials etc. and develop on your own.
Contribute to open source
Open source is the closest thing that can provide you industry experience without actually working in the industry. You can start contributing little by little depending on your knowledge and skills. Open source teaches you to work with a team, collaborate and develop software as a team. You can learn a lot from the project you are contributing to & also from fellow contributors. Besides you’ll be part of a community, you can build your network and much more.
There are many other things you should look into besides the ones I mentioned above. Building a strong network, being part of a community, getting some kind of professional experience are also some of the major things you need to consider. However, having patience and continued effort towards your goal is the most important thing!
Read more blogs from Prajwal at https://shadydev.me/.