Learning Web Development
Are you a junior web developer looking for structured approach to levelling up your skills? Perhaps you’re just finishing University and want to know what it takes to have a lasting career in web development in the GPT Era? Either way, you’re in the right place. This post outlines a practical blueprint to learn web development skills, from junior to senior level, as I experienced it. I consider myself a skilled full-stack developer with a backend focus. With 10+ years in the industry my career led me to be an EM or Emoji Manager, as a teammate proposed. So now I have so much free time I decided I should compose this post on my ergonomic split keyboard.
Web Developer Career Skills
- Master the Fundamentals - before diving into complex frameworks and technologies, ensure you have a solid grasp of the basics:
- HTML/CSS/JavaScript: These are the building blocks of the web. Get started now - you just need a browser and text editor. Maybe even just a browser.
- Internet Basics: Understand HTTP, DNS, and how browsers work. Read the first 10 chapters of the ultimate classic “TCP/IP Illustrated”. At some point read them again. Do this in parallel with the next step - learning a real programming language. Own your home network, analyze some traffic with wireshark, hack a router.
- Version Control: Git is essential for collaboration and code management. There are alternatives like SVN, mercurial etc, but honestly no reasonable company does that. However there are companies big enough to develop internal tooling for this, but if you’re reading my blog, you’re probably not working at Google or Meta (just yet) 👀
- Backend Development - choose a backend language and dive deep:
- Language Options: Java, C, Ruby, JavaScript. This was my first loop. Every year or so go through such cycle again and again. Learn a few new programming languages a year: Erlang, Rust, Go, Zig are all amazing languages for vastly different reasons. Learning the basics isn’t enough. Exercise your brain. Build something with every language to get a good grasp of which language is good for what. This will also develop a taste. When possible, work with a stack you love, but never shy away from working with something you don’t yet understand. Here are the most admired and desired languages for 2024 based on StackOverflow.
- Frameworks: Learn popular web frameworks - Ruby on Rails, ASP.NET Core, Java Spring or whatever is cool nowadays in the JS world. Frameworks are tools - pick ones that do the job. Don’t use a screwdriver to hammer a nail. Here is what people are getting paid to do mostly, based on the same StackOverflow 2024 survey.. So even if Ruby is far from the most admired and desired and even after 10% drop over 2024, it’s still in Top 5 based on the SO survey.
- Databases: Master SQL (e.g., PostgreSQL) and experiment with NoSQL (e.g., MongoDB, Neo4j etc) databases. You can use GPT to help you, you can use an ORM, but you need to understand SQL and be confident with complex queries.
- Frontend Development - most of the companies have separate backend and frontend applications and dedicated team members supporting them. You need to understand what your buddy is doing. Get on top of:
- Modern JavaScript: ES6+ features, async programming
- Frontend Frameworks: React, Vue, or Angular
- State Management: Redux, Vuex, or NgRx or WhateveRx
- After you see what hell is, try out HTMX, Hotwire or any other HTML over the wire. Love your life. Sadly you will need some of the above in most real world companies.
- Check out frontendmasters
- API Development - the backbone of modern web applications. Now you understand that your FE teammates are working on awful lot of things, make their life easier by providing solid understanding of their expectations on:
- RESTful API Design: Principles and best practices. Old but proven way of doing things.
- GraphQL: An alternative to REST, which allows clients to pick what the API serves. More and more companies use it.
- Authentication: JWT, OAuth. You have to deeply understand even if you’re probably not going to implement that yourself.
- DevOps and Deployment - learn how to deploy and maintain applications:
- Cloud Platforms: AWS, Google Cloud, or Azure. There are easier alternatives, but this will help you understand the actual architecture running your apps.
- Containerization: Docker. Build a few images, get comfortable and configure your environment as you wish. Learn some Kubernetes. Know what a pod is and how to debug.
- CI/CD: Jenkins, or better yet GitHub Actions. Nobody likes Jenkins.
- Testing and Quality Assurance - ensure your code is reliable and maintainable:
- Unit Testing: Whatever your language of choise is, there are usually a few alternatives to support unit testing. Ruby’s RSpec is more popular, but minitest is maybe nicer. Try them all. You’ll still have bugs.
- Integration Testing: How do building blocks fit together.
- End-to-end Testing (E2E): why, when, how. Learn about the testing pyramid.
- Test-Driven Development (TDD): Writing tests before code. I know it doesn’t make any sense in your fun side project, but in big repositories with high test coverage it probably helps. Also nobody dares to say anything against TDD, so pretend you do it all the time and be able to do it when requested.
- Architecture and Design Patterns - as you progress, focus on writing scalable, maintainable code:
- Design Patterns: MVC, SOLID principles, Observer, Strategy, Decorator, Singleton, etc…
- Microservices Architecture: Breaking down monoliths into microservices has been modern. I’m not sure if it is now. Do it only if you really need it. Don’t do it for your side projects, unless for fun. There is a saying that you shouldn’t have more microservices than users.
- Event-Driven Architecture: Kafka, RabbitMQ. Some operations are better handled asynchronously in a queue.
- Performance Optimization - learn to make your applications fast and efficient:
- Caching Strategies: Redis, Memcached
- Database Optimization: Indexing, query optimization, N+1
- Load Balancing: Nginx, HAProxy
- Scaling, concurrency
- Security - protect your applications from common vulnerabilities:
- OWASP Top 10: Common security risks. TryHackMe.com provides a good way to try some things out for free.
- Authentication and Authorization: Best practices.
- Data Encryption: At rest and in transit
- Soft Skills - last but definitely not least important:
- Communication: Clearly express ideas to both technical and non-technical audiences
- Teamwork: Collaborate effectively in a professional engineering environment
- Problem-Solving: Approach complex issues methodically
- Actually, I published this one first - Junior to Senior: Soft Skills. I think soft skills are fundamental enablement for good career progress.
Continuous Learning
The field of web development is evolving fast. Never sit still and stay up to date:
- Follow tech blogs like mine, but better. If you can’t find others, sign up for mine. Accept the cookies too. Follow on socials and get in the discussion if you’re into it.
- Attend conferences and meetups. This might also help you finding a job. You will find people who are interested in similar tech stack as you and are already working somewhere.
- Watch youtube - ThePrimeagen is fun and will make you learn vim.
- Contribute to open-source projects - even if it’s updating the documentation. The learning comes from the contribution process.
- Build as many side projects as possible to experiment with new technologies and grow your confidence in different scenarios.
Becoming a senior developer is not just about accumulating knowledge, but even more about applying it effectively to solve real-world problems. Focus on depth as well as breadth, and always be curious about the “why” behind technologies and practices. This will take you places.