Tips to make the leap from Junior to Senior web dev
Published: 2023-09-26 16:36:51

Web dev has evolved rapidly since I started programming, and many new languages and frameworks have popped up over the past 10 years or so.

It can be daunting for new developers to know what to learn and which stack to invest their time in. Some are even scared of learning the wrong tool and becoming irrelevant.

In this article, I will go through some common techniques - I have learned throughout my career to help me master many languages and tools effectively.

Note: I take it for granted, that you should know basic programming concepts such as: loops, if statements, HTML, CSS, and Javascript. 

## 1) Learn your algorithms and data structures

I see a ton of developers learning these to land a job at a FANG company. That's cool, nothing wrong with this approach but if you not applying to a FANG company or just learning these for the purposes of passing a test - bad idea, rather invest some time getting to know the fundamentals. It'll greatly help you throughout your career.

## 2) Learn SQL properly

A lot of web dev is capturing data from users, storing that data, and then reporting on or manipulating that data.

Whichever language you settle on for your backend - you will need to interact with a DB at some point and usually this is a SQL DB. 

SQL is standardized, there will be a few differences between DBs however, by in large the language is 90% the same. 

Once you understand SQL concepts, learning ORMs and wrappers around SQL will become a breeze.

## 3) Types

Types - understand the difference between an int and an int64, a float, and a decimal. This is kind of a repeat of point 1 however this time, using your language of choice - learn how to set these and manipulate them.

## 4) String manipulation

In nearly every language you will have these functions:

1. Search for a string in a string.
2. Find an index of a string.
3. Replace a string in a string.

Practice these functions in your language of preference, and master them. Throughout your career - you will always be doing some string manipulation. 

Let's say your main language is JavaScript, once you've mastered these functions - go look at the documentation in Python, PHP, and C# and see how the same functions work there. 

You don't have to deep dive into the other languages, just read up on them - practice a few. This is training your brain to gradually understand these other languages.

## 5) Numbers

Naturally in every programming job - you will need to understand a bit of math. Learn the following:

1. Round, floor, ceil - functions. Doing pagination is a good way to learn some of these.
2. How to calculate averages, standard deviation, delta.
3. General math, like percentages, BODMAS, etc...


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cr79b0zg39owpdc8np5k.png)


I know this stuff is repeated 100 million times in every textbook and course, but they are vital to training your brain to think logically and not just diving into a framework and building.

## Beyond the fundamentals

Now that you are confident in the building blocks, it's time to up your game and learn some key techniques that will help you learn and adapt to any language/framework.

## 6) Pick a C dialect but not JavaScript or TypeScript

Do you notice: that JavaScript/TypeScript, C#, Java, PHP, and most modern languages - look similar in many ways? , this is because they all were inspired by C in some way. PHP itself was initially just a lightweight wrapper around C.

Learn one and you have all the fundamentals to learn the rest, it's not too hard to shift from PHP to Java or Java to C# and so forth.

The reason why I say no to JavaScript, is you have to learn JavaScript anyway but learn JavaScript independent of a UI library such as React - because these introduce implementation concepts that will distract you from actually understanding what's going on under the hood.

## 7) Problem solve.
 
Constantly look for a problem to solve. Look at every website or app you visit or use, and break down functionality - e.g. as I'm writing this article I'm using a markdown editor, how do I build a markdown editor from scratch?

Your brain, like any other muscle in your body - needs constant training. The more you train the more muscle you build. 

Do not try to build an Instagram clone early on, just focus on small bite-sized items that you can master in a few days. Gradually tick off things you can build.

Eventually when you need to build a big app - all you doing is putting together these building blocks together like legos.

## 8) Don't reach for stack overflow or chatGPT too early

Sometimes you feel like you've hit a brick wall. This now leads to reaching out to senior devs or stack overflow.

It's not a bad thing to ask for help, it's actually a good thing and you often learn a ton more collaborating and tag teaming - but constantly giving up after debugging for 20 minutes every time, is not going to help you in the long term.

Try to exhaust your own process, do research, experiment - believe that you can find a solution, even if it takes you 2 hours or 2 days.

You do this often enough - and eventually, it'll become a mindset, that no problem is beyond you and you'll be able to solve more and more problems on your own. 

Don't become an "I know everything" type of person, but having confidence in your ability is a great tool.

## 9) Tutorial hell


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hxvgvvqhtkqk8u5glt7q.png)

It's okay to follow tutorials, after 15 years of developing I still do from time to time. The problem comes when you jump from tutorial to tutorial but don't actually practice anything - you just follow instructions.

Instead, learn something via a tutorial, then repeat steps 7 & 8. 

Once you've mastered the basics - go to the API documentation or documentation, read through - and try to understand how the language/framework/tool works. Don't just build a blog or do a "Hello World" and just move on to the next tutorial. 

Find industry experts, and follow their talks. E.g. in PHP, Taylor Otwell is the creator of Laravel and is widely respected. 

There's also: Rob Pike, Ken Thomson, and Uncle Bob to name a few. You may not understand everything they cover but it's a good idea to just listen to their talks and absorb something. As you grow in your career - you'll most definitely find meaning in these talks.

Having access to their experience and knowledge, will ultimately make you a better developer - don't just focus on "how do I build a todo app in react?", think about how react's state model works under the hood.

Here's a good example: https://www.youtube.com/watch?v=oV9rvDllKEg 

## 10) Three year growth hack

You picked Laravel & PHP. 3 years in you've mastered most things like validation, forms, CRUD apps, queues, and artisan commands and are fairly confident in your ability to handle most projects.

This is when you, throw it all away - well sort of. Always drive towards mastery, knuckle down, and become an expert but once you get there. 

Re-invent yourself, keep learning Laravel, and become better at it, but don't get comfortable - you should at least every 3 years take on a new challenge. 

Learn some machine learning, or Django, or Next.js - whatever as long as you enjoy it, and it's relevant to your career growth.

Doing so will make you a better developer, after a while, you'll be able to adapt and move between languages/stacks quite easily.

This gives you an edge in the Job market and will help you gain access to a wider pool of jobs so that you not just competing with the PHP developers or the Python developers - you competing with both groups.

While I say three years, work at your own pace - we are all different and learn differently. For some it may be 6 months, for others 2 years, and for others 5 years.

What's important is to become proficient regardless of how long it takes you - always strive to master everything you touch. 

This is not always possible, sometimes you have a small project you just need to pick up angular for and don't need to dive too deep - this is okay but should be the exception, not the rule.

In closing, remember everything takes time. Be patient and take it one day at a time. I hope this article will be of some use to you and will help you in some way on your journey to becoming a rockstar senior dev.