An ambitious junior front-end web developer in my team asked me this question a few days ago in our one-on-one meeting:

I don’t have a formal CS background. Are there things I should dive into or learn that might hold me back in the short term? What do you recommend me to do? I know I lack things, but what are specific skills that I might not learn while doing the job?

I believe this is a common concern by many developers that didn't go through formal CS education. This advice is very specific to his job title and his position at the company but I will share my answer anyway hoping that it could help other people as well:

Learn things on the edges of your specialty:

As a junior developer, you need to be eager to help your team and the best short term “hack” I can think of is to broaden your skill set with techniques on the verge of your current expertise. This depends on the technologies or the industries your company work with, but for example, If you're already familiar with HTML and CSS, diving into some parts of the back-end or expanding your JS knowledge will allow you to own larger features and become a more valuable asset to your team.

Learn very different stuff to what you're used to:

On the other hand, you also have to keep broadening your horizons. Software engineering is a very multidisciplinary career, and junior people will always have time to specialize later. My advice is that you try to learn a little about many things, even unrelated to your job duties. This has a twofold advantage; It will help to find you the common thread going through different programming languages (no matter how different they appear to be from the outside). Another advantage is that it will inspire to direct your career in a different direction that you would have expected to follow.

Compare different alternatives to solve the same problem:

Explore similar technologies and ask yourself: in which way are they different? Where do they overlap? Try to extrapolate common ways of solving problems by working backwards: From the specific technology to the general concepts of software engineering shared by most languages. For example, if you know how to use React, try to build the same thing in Vue or in Svelte. Again, trying to find the common thread will teach you the fundamentals that you can apply in different aspects of your career.

Learn how to work with APIs:

The most specific advice on the list, but no less important than the rest. The backbone of many web apps is based on creating and consuming APIs in some shape or form. This is not very glamorous, but it's a reality of many dev jobs (especially entry-level ones). Mastering this work will give you skills applicable to a big variety of issues that can make you a more useful contributor to your team.

What do you think about these tips? I'd love to hear your thoughts on Twitter!