A couple of years ago I got a message from an old friend who was studying computer science. He asked if I had any advice on what he should work on and learn, given that I'd been in the software industry for a few years. Re-reading my response, I was surprised to see that my advice then was largely the same as it would be now, so I thought I'd post my thoughts here for future developers-in-training to stumble across.

A quick clarification

This advice is targeted at someone who has learned the basics of programming and is looking to take his or her skill set to the next level and/or start a career. There are tons of helpful resources out there for absolute beginners that I won't try and recreate, but I'll link a few below if that's what you were looking for.

Resources for absolute beginners

Solve real world problems

Find ways to get some experience. This might seem like a counter-intuitive point to start with, but I think the best way to grow as a developer is by doing something where you're more likely to encounter and solve real world problems. This doesn't have to be paid experience (though if it is that's great!); side projects and internships are totally valid. Plus this way you'll have something to put on your resume or a project to show off to potential employers.

Find a focus

Try to figure out an area of software development that's your primary focus. For me it's UI development on the web. Obviously the more capable you are in more pieces of the stack the better, but you can't be an expert in everything. Its good to have some depth in an area or two to go along with a general base.

Avoid framework frenzy

Counter balancing the previous point, don't get caught up in what I'll refer to as "framework frenzy". While there's probably more of it in my niche than most, you'll probably come across it in other areas as well. At each dev job I've gotten I didn't have any experience with the specific framework/library the company's app was built with when I started. Try to build depth of knowledge in a language and in cross language concepts as these will make it easier to pickup whatever framework/library ends up being the next big thing.

Be aware of tooling

One thing school did a poor job of preparing me for was the world of developer tooling. It's a huge part of modern development workflows and can make your life much easier. While I wouldn't spend too much time on this, it'd be valuable to familiarize yourself with some common types of tooling and what problem each is trying to solve.

Attend a meetup

Meetups can be a great way to get exposed to new ideas and meet people in the industry. If you live near a decently sized metro area there's a good chance you can find some nearby, though I wouldn't be shocked if there are fewer now due to Covid. Conferences can also provide these opportunities, and some are available as an online experience (here's a good resource for finding frontend focused conferences).

Remember the soft skills

Technical skills are important, but so are "soft" skills. Being a good communicator, being a good collaborator, being open to learning new things and exited to grow; employers care about these traits. Especially that last one when you're first starting out, they may be hiring you more for your demeanor and potential than for your expertise.

I hope you find these tips helpful, they've served me well. Best of luck and happy problem solving!