By beginners I am referring to people who are preparing for entry level software jobs or internships and not people just starting out to learn programming. Over the time I have come to realize that a lot of things we learn on the job could be learned beforehand and could give you an edge when learning. Although there's a huge difference between building you first blog site that just runs on your machine and building the same thing for 10k+ concurrent users a lot of the needed skills are very difficult to learn solo. However, there are some skills that you can not only learn but hone to get an edge over all your competitors and even get ahead once you land a job, all by yourself.
💡 Here's my top 3 picks:
Automated Testing : Whether its writing basic feature tests or writing enough unit tests to give your codebase a 100% coverage, learning to check whether your code is functioning the way it should without opening a bunch of pages or clicking buttons is a massive time saver. Although learning to write tests and writing tests take time they save far more time down the line. This is something you can learn on your own for whatever stack you use and having these tests on your portfolio projects or GitHub repo will surely help you standing out.
Methodical refactoring : Most of the time you'll be working with legacy code instead of developing something new from ground up. Learning to spot bad code, methodically improving them is invaluable. Although making great improvements take a lot of experience specially at an architectural level but learning to avoid code duplication, improving nested if-else ladders or breaking down oversized methods is relatively easy. There isn't much content on this topic online as videos but there's some great books on refactoring and you can search for code reviews on YouTube for your stack.
If you're particularly interested in this topic I suggest reading "Refactoring" by Martin Fowler. Something that I found greatly helpful personally.
- Written communication: Whether its writing documentation, user manual or design docs being able to write short, clear and organized documents is a core software engineering skills because on the workplace you're likely to never work alone. And written documents are one of the most comprehensive ways of sharing information. You can learn this by writing a good readme for your personal projects as well as user guides and FAQ's.
[Side note: All this being said, I am still a junior and consider myself a beginner since I have been working as a software engineer slightly over a year. So, take my opinions with a bit of salt and you have better points or something that I missed out but is also really important write them in the comments.]