The full version of this article can now be found here!
A few months ago, I wrote a post that went viral titled Don’t be a Junior Developer that was read by 100,000+ developers (😱). In this followup article, I want to outline for you, all the skills that you should learn in 2018 if you want to get out of the Junior Developer role and finally get started on the path to becoming a Senior Developer.
Before we get started though, please note that this article will be discussing technical skills in this post. To become a Senior Developer, you will need more than just technical skills. I have written extensively about the other “peripheral” skills (i.e. people skills) in How To Become A Senior Developer.
Ok, enough chatter. Let’s get started and have a look at what skills you need, and how to get you out of the Junior Developer role in 2018.
As with most of my articles, we want to focus on efficiency. We all have the same hours in a day, but some people are able to learn and do more than others. Why is that? Well, some people are more efficient than others at learning and doing. I hope this guide will give you at least a roadmap so you don’t have to figure out what you need to learn (I already did that for you) and you can get started right away in an efficient way.
Here is the recommended path to take and some of the (mostly) free resources for you to use to acquire the skills that will make you stand above a Junior Developer role:
1. Learn About SSH
3. Learn How to Improve Web Performance
— Learn about network performance: improving delivery and minimizing files and images
— Learn the differences between HTTP/2 vs HTTP/1.1
— Learn how the Critical Render Path works
— Learn about pre-fetching resources
— Learn about code-splitting
— Learn about CDNs
— Learn about compression
— Learn about Caching and all the places you can use caching
— Learn how to do Load Balancing using Nginx, then try load testing on it
— Go over important performance topics following this tutorial
5. Learn a Popular Frontend Library + How to Manage Complex State
— Learn a popular frontend library/framework like React, Vue or Angular to build large web applications. My choice is React (here, then here), but you can pick whichever suits you. (UPDATE: I’ve created a full React course, zero to mastery which you can check out here)
— Learn the principles of Redux (or other state management tools) and not only how to manage state but how to think about data flow through your app as it grows.
— Learn about Event Sourcing and CQRS which inspired Redux
— Learn a little bit about module bundling using Webpack 4 and Parcel
6. Learn About Testing
— Learn the current testing landscape and the tools you can use
— Learn about the different types of tests: Unit Tests, Integration Tests, End to End Testing
— Learn how to write good tests
— Learn about TDD and BDD
— Learn how to write Asynchronous Tests
— Learn how to use Mocks, Stubs and Spies
— Learn about Snapshot testing
8. Learn About Client Side Rendering vs Server Side Rendering
— Learn about when to use Client Side Rendering and when to use Server Side Rendering
— Learn the benefits of using Next.js or Gatsby.js instead of implementing your own server side rendering.
9. Learn About Securing Your applications
— Avoid the most common security vulnerabilities like Injections
— Learn how to avoid XSS or CSRF
— Learn how to use HTTPS to make the web safer
— Learn about Access Control, SQL Injections, Command Execution, etc…
— Practice protecting against some of the most common attacks
— Learn why you would want to keep all software up to date
10. Learn About Docker and Containers
— Learn why containers are different (and sometimes better) than VMs
— Learn to create a Docker container
— Learn how to use Docker Compose to orchestrate services
— Learn to use Docker Compose to make developers’ lives easier
12. Learn How to Manage Sign In + Sessions In Your App
— Learn how to manage sensitive user information like passwords
— Learn the difference between cookie based authentication and token based authentication
— Learn how you can use JWTs
— Implement your own authentication/authorization flow in your app
13. Learn About Infrastructure as a Service and Platform as a Service
— Browse some of the most common offerings by the big players like AWS, GCP, Azure and IBM Cloud
— Learn about functions as a service like AWS Lambda and using Serverless
— Create your own Digital Ocean Droplet and run a server
— Learn about serverless architecture
— Learn about Monolithic vs Micro Services architecture
14. Learn About Continuous Integration, Delivery, and Deployment
— Learn about Continuous Integration, Continuous Delivery and Continuous Deployment and how you can manage large projects to run smoothly.
— Learn to set up tools like CircleCI or TravisCI on Github.
— Learn to work in teams
Does your head hurt yet? This will take a while for you to go through but I hope you at least have a roadmap of what is important for you to learn in 2018 to go from Junior to Senior Developer. Being a developer is a never ending journey of learning as technologies always change.
In order to keep up with the industry, your best bet is to be efficient and be wise about what you spend time on because it is impossible to learn and know everything.
Focus your efforts on connecting the dots. Why do these technologies and solutions exist? What problems do they solve? What are the pros and cons of using them? By learning the fundamentals, you are more resistant to change.
This is the theory behind all of my classes that I teach. For example, I created a course that packages everything mentioned above into a course with over 33 hours of video: The Complete Junior to Senior Web Developer Roadmap. You will have everything in one place to guide you along the journey.
Will 33 hours be enough for you to call yourself a senior developer? No! Of course not, that is just silly. But it will guide you in the right path.
If you don’t care for it, then hey, you can bookmark this article and just go through the resources I provided up above on your own. Have fun out there!
What do you think of the above list? Do you have another topic or free resource you want to share with others? Comment below!
If you liked this post you might like some other articles I’ve written which you can find here.
Thank you for reading this far. If you enjoyed this post, please share, comment, and press/hold that 👏 a few times (up to 50 times). . . Maybe it will help someone.
Follow me on Twitter and subscribe to my blog here if you’re interested in more in-depth and informative write-ups like these in the future! By the way, my full time job is to teach people how to code in the most efficient way possible. You can see my courses at zerotomastery.io/courses