Essential Advice for Beginner Software Engineers (31 Mar’23)

This advice is based on my 4 years of professional software engineering career and 8 years of hobbyist software engineering, and hundreds of conversations with engineers and folks in tech.
Don’t think about languages and frameworks much
Every other language is trying to become every other language. At the end of the day, each language is just a tool. Don’t think X or Y language is the best one. Pick any language and finish learning it. The time taken to learn your X+1 language is usually half of the time it took you to learn the X language.
Though picking a good language that is easier to get started with can help a lot. Like starting with JavaScript or Python is easier because you are able to produce tangible and useful stuff relatively quickly. Once you get comfortable with either of them, you can explore slightly more complicated but helpful langues like C/C++ and Java.
A little bit of landscape for languages:
Wanna build web apps - JavaScript or Django
Wanna build embedded stuff - C/C++
Wanna learn programming from the internals level - Start with C or Java
Wanna build video games - JavaScript, Python, C#
Also, don’t limit yourself to a single language or a framework. Try not to call yourself a React.js Developer or a Java Developer. Better way to frame it would be “I am a Software Engineer specialising in frontend with React.js”. It gives other people and you yourself a better impression that you know much more beyond than a single framework.

Don’t get stuck in tutorial hell

Once you finish building 2-3 clone apps then you are good to go build an original idea or a side project or a clone without any tutorial guidance.
Brainstorming an idea, figuring out the exact requirements and structure, and then breaking it down in terms of frontend and backend and then implementing it, writing documentation, and launching it (maybe on Product Hunt) will give the whole experience of working at a corporate or a startup. That’s what we do day-in day-out: Getting a problem statement with not much information and then doing our research and talking to our team and building a solution together and releasing it and maintaining and monitoring it.
Once you finish your course and build the projects included in your course, go build a side project, apply for internships or jobs, participate in hackathons, try to contribute to open-source. It’s not gonna be easy and you might fail in the first few attempts but this is the actual way to go and make real and significant progress in your professional journey.

Communicate

As engineers we might be shy or introverted and just wanna work in our silos, at least I did that a lot. Try to avoid that and communicate crisply with proper context as much as possible.
Whenever you are working on a project keep giving regular progress updates and tell folks if you have any blockers.
Ask for help. Asking for help politely and giving all proper context can go a long way to save time and bond with other members on the team.
Whatever you are learning or experimented with, share it on your company’s discussions channels to get yourself visibility and get conversations started.

Upskill yourself properly

Don’t get excited by every other new framework and go and learn its syntax. Rather take your time and explore the internals to see what really makes it different from existing options. Probably try to make a very crude version of the framework itself. Anybody can learn syntax and a bunch of topics of a new framework and call themself a XYZ Developer/Specialist. But as Software Engineers everything is just a tool for us. Explore the internals, the architecture, the optimisation techniques, and yada yada to actually grow yourself.
Explore System Design stuff and DSA content to get to know new strategies.
Don’t keep yourself to your day job or your personal interests’s domains. Go and check out other domains too to get out of your comfort zone. Like if you are a web dev then go check out IoT projects. Maybe you are a game developer then check out cyber security pertaining to games. Stuff like that, expand your horizons

Have a mentor

I was lucky to get a couple of mentors from my first job. Having a mentor is like having a really really knowledgeable friend who you can trust to share anything that is getting you bogged down and get actionable and useful advice. Mentors can really accelerate your learning journey by 2-5x. Try to find at least one solid mentor that you can talk to multiple times a month.

Join Developer Groups

Meetup groups where a crowd of developers gather to learn, network, and have fun are an awesome way to find senior people to learn from and get even internship or job opportunities. You will get to listen to awesome tech talks by people and have free pizzas and coke too.
I attended my first meetup when I was in high school. My brother took me to a Drupal meetup. I barely understood anything but at least hearing about different tools and topics got me curious and eventually I explored a lot of the tools and topics I heard in the meetup. Even if you don’t understand stuff right now, dots connect and things click a little bit ahead in the future eventually.

Keep Yourself Updated

Join Tech Twitter. Join Hacker News. Follow the right people on social media groups. Keep checking out the GitHub Trending page.
All of these things help you to discover product launches, learning content, helpful repos and tools, and a lot of other things to help you save time, accelerate your career, and gain an edge.