Don’t be a Junior Developer: The Roadmap
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 follow-up 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.
You know HTML, CSS and Javascript. You have built a few projects yourself. You understand how to work with Github, and perhaps you also know how to create a simple Node.js server (if not you should check out this). But you still feel like you know a tiny bit in a giant universe of skills. Where should you get started? What happens if your boss asks you to be in charge of a project? How will you know how to make good architectural decisions?
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
— Learn about how SSH works, and how to SSH into a server.
— Learn a little about Symmetric and Asymmetric encryption as well as Hashing
— Learn how to manage SSH keys
2. Learn Advanced Javascript
— Learn common algorithms and data structures
— Learn some common design patterns
— Learn the difference between OOP and Functional Programming. Pros and Cons of each
— Learn common Functional Programming techniques
— Learn how to Optimize Code
— Learn how modules work
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
4. Learn About Progressive Web Apps
— Learn how to build a Progressive Web App
— Learn about the key things that allow us to create such apps: HTTPS, App Manifest, and Service Workers.
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 that covers absolutely everything you need to know from zero to mastery. And you’ll get to build a massive E-commerce app with Redux, Hooks, GraphQL, ContextAPI, Stripe, Firebase.)
— 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
7. Learn About TypeScript
— Learn the benefits of having static typing in Javascript
— Learn how to use the TypeScript Compiler and how to write in TypeScript
— Learn when and when not to use Typescript
— Learn how to use DefinitelyTyped
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
11. Learn About Different Types of Databases
— Learn about relational and non relational databases
— Learn when one is better than the other in certain situations
— Understand the benefits of in-memory data stores like Redis
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
Conclusion
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 on 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