On This Page
📣 This post is targeted at web development but most concepts will translate to other specialties as well.
The web is the biggest software platform in the world and continues to become more capable every year. But how do you learn web development? Or, how do you up the skills you already have? There are so many ways to learn but the best one will depend on your goals and learning style. This post outlines 15 different strategies and describes the benefits of each.
What to Learn#
Before we start, I quickly want to touch on what to learn. And, to be honest, it doesn't really matter what you learn. The most important thing is not giving up, so pick projects and topics you're interested in so that you'll be motivated to push through challenges. Also, remember that the more you learn now, the easier it will be to pick up new skills for that dream job. 💼
Here are 15 strategies to learn (or get better at) web development. These are in no particular order except, if you are a new developer, the ones near the top will work best.
📺 Watch a video course#
Good for broad introductions to languages, frameworks, or libraries
My first foray into web development (and programming in general) was watching a video course by Jeffery Way on building a content management system (CMS) in PHP, from scratch. Because the course didn't build on any existing frameworks or libraries, I learned a lot about the fundamentals of PHP and how the web works in general.
Later, I went on to watch another one of Jeffery's courses which had a similar goal but used the Code Igniter framework. The benefits of the framework were immediately obvious because the framework solved many of the problems the previous course covered. Video courses are a great way to introduce yourself to a topic or compare languages or framework in a lightweight manner.
If you'd like to get started, here are some great sites I've used in the past:
✅ Finish something small#
Good for problem solving, planning, and time estimation
Once you have some fundamental knowledge—even if extremely basic—try building something simple on your own. The most important part of this strategy is finishing because it will force you to get past the problems that only come up in the last 10%, which are usually the most difficult. So, pick something small to limit the complexity of problems and time commitment.
TIP: Aim to finish the entire project in one weekend which also forces you to cut things out to hit the deadline. 🤗
- Custom dropdown menu for website
- Calculator app
- Deploy a starter app to Heroku
🎁 Ship something for others#
Good for design, communication, and feedback collection
This is similar to the previous strategy of finishing something small but forces you to focus more on the user experience and iterating quickly. Finishing a project is one thing, but finishing something that's good enough for other people requires more thought around design, usability, communication, user acquisition, and marketing. You'll also learn the how to internalize and implement feedback.
TIP: If your goal is to eventually become an independent developer, this strategy is the most important. Strong technical aren't useful without the ability to gain and serve users. 🌠
Small (depending on skill level) project examples:
- Website to show status of outdoor ice rinks in Montreal
- Website to allow others to publish cooking recipes
- Website to chat with people playing a specific PC game
- Website to encourage every-day writing habits
🧰 Rebuild in a new way#
Good for quick learning by comparison
Most of the work that goes into building something is not writing code, it's taken up by things like planning, design, and content creation. To avoid spending time on non-coding tasks, pick a project you've already done and rebuild it in a different language or framework. Building the same thing in multiple ways provides contrast which makes it easier to identify the similarities and differences of each technology. Common software concepts will also show themselves.
NOTE: There's a project called RealWorld that contain community implementations of the same app (a Medium clone). If you haven't built anything yet, this may be a great place to start.
🚀 Copy something that exists#
Good for building technical and design ability
Copying things is great because it forces you to observe and ask questions – a fundamental skill of software development. If you chose something that's popular (eg. Medium, Slack, GitHub) then you'll inevitably ask some really useful questions, like:
- Why is this image set with a CSS background instead of an
- Why does this site load so much faster than others ones?
- How did they do this awesome thing?
- What happens if I view this on a smaller screen?
- Why didn't they do it like this?
TIP: There's also a lot to learn from bad products, like banking websites
Answering questions like this will build your problem-solving skills while also providing insight into what makes popular things popular. And, the great thing about the web is that you can inspect the source code to see what libraries, network calls, and CSS styles are being used.
👥 Pair with friends#
Good for learning tools and techniques, and for social growth
Writing code with friends can be fun, stimulating, and a great learning experience. But, besides these, the real benefit is seeing how someone else uses their tools. I learned Vim because I saw in-person how productive it was, and there are so many other little tips and tricks I've picked up from watching friends and co-workers use their computers.
**TIP: Watching livestreams on Twitch can also provide similar benefit
📚 Read a book#
Good for mastering what you already know
Books can be a great resource but beware, they quickly get out of date. Because of this, I recommend choosing topics that age well. For example, The Pragmatic Programmer or Domain Driven Design are great for learning how to think about writing code, regardless of technology.
Since books often go deep on a single topic, they are great for filling in knowledge gaps around subject you already know. For example, if you've built a few things in Python, reading a book about Python will cover language features you haven't even heard of yet and explain the why behind the parts you already know.
🎙 Listen to a podcast#
Good for keeping up with the newest trends
The best part about listening to podcasts is that there's no visual component. You can listen to podcasts on your commute, while doing dishes, or while sitting in the park. Because they are audio-based, podcasts usually don't get very technical, but they're great for keeping up with the news, discovering new things, and seeing how other people solve problems.
Recommended development podcasts:
👩🏫 Teach someone something#
Good for solidifying recently-learned concepts
Programmers, and people in general, are lazy. Why do more work that needed to accomplish a task? Because of this, we often don't fully-understand the things we learn. We simply learn (or copy/paste) only what's necessary to accomplish the task at hand. Teaching something—whether in-person, in writing, or in a tech talk—requires having enough knowledge to explain the why behind the concepts and answer questions that may arise. Even though it might not feel great initially, your ideas need to be challenged in order to solidify understanding.
If you don't have one already, I recommend creating a blog where you can write about your learnings. And who knows, maybe it will be useful to others as well? 🥰
💙 Contribute to open source#
Good for codebase comprehension of real-world projects
Real-world software that real people use is a lot different than software made within an academic or exploratory context. For example, you may learn:
- there are many common software patterns,
- documentation and tests are extremely important,
- coding styles vary widely, or that
- code is often poorly written 😭
Now, you don't necessarily need to contribute code to learn these things but contributing will help with understanding by forcing you to setup a development environment, build and run the project, and work with the test suite.
There's also many ways to get involved as a newcomer. For example, DigitalOcean hosts Hacktoberfest every October to encourage developers to participate in open source.
💪 Create open source project#
Good for learning best-practices and writing higher-quality code
Do you find yourself doing a repetitive task in your projects? Perhaps you could turn it into a library and open-source it! Most open-source projects never get any traction but, if it does, it could be a great opportunity to meet new people, learn from others, get hired, or simply enjoy the fact that others are benefiting from something you created. And, no matter what, they make a great portfolio for job seeking.
Even if the project is not something that others could use, I still suggest making the code public because it forces you to hold yourself to a higher standard, just knowing that someone else might look at it.
🕵️♂️ Make observations#
Good for learning more subtle skills and techniques, especially around design and content
The act of observation has been mentioned a few times in this post, but I wanted to give it its own section because it's so important. There are so many websites, apps, designs, libraries, and frameworks in the world and there are so many things to learn from simply observing how they're put together.
If you sign up for a new product, observe the signup flow; if you get a nice error message from a compiler, make a mental note of it; if a product gains popularity quickly, ask yourself why. If you see an open-source project with an interesting code structure, figure out what it is. Each observation is an opportunity to learn something new.
TIP: Not only does the skill of observation help you learn, but it also makes you better at giving feedback to friends or colleagues when they need it. 🤗
🥾 Enroll in a Bootcamp#
Good for testing the waters, practical knowledge, and employment opportunity
Coding bootcamps are everywhere these days—and can vary greatly in quality—so try to get a recommendation from a friend if possible. Bootcamps are great because they aim to condense years of practical learning into just a couple months! Just note that this is likely bad for long-term retention.
Here are a few things you may get from a bootcamp:
- Exposure to fast-paced modern web development
- Opportunity to meet others like you
- Help with job placement
If you have the money and time to spend, a quality bootcamp may be a good way to get a wide exposure to the world of web development, especially if you're trying to decide on a career change.
👩🎓 Get a university degree#
Good for fundamentals in math and algorithm design
If university (or college) wasn't so expensive this would be closer to the top of the list, not because it's good for learning how to write code but because university teaches you things you'd never learn on your own.
TIP: School isn't great for practical knowledge because most curriculums lag 5-10 years behind. My degree in 2008 didn't cover web development at all 🤯
Things you may learn in a computer science degree:
- How a database indexes content to perform fast lookups
- How a computer allocates memory
- How processes and thread communicate
- The difference between TCP and UDP
- How to write compilers, parsers, and ray tracers
- Calculus, physics, linear algebra, and signal processing
- Social and life skills
But above all university teaches you how to learn in an independent way. Just know that a degree is not necessary in the real-world unless you want to work in a different country or in larger organizations or riskier (eg. health, finance, security) environments.
💼 Find a job#
Good for learning about trade-offs, business priorities, and working in larger groups
There's no better way to learn than to jump straight into the deep end. Yes, a new job can be extremely stressful but—assuming you have a supportive team—no other method of learning comes close to it, especially for a new developer. You'll learn more in your first week than you could in months on your own.
NOTE: The reason this is at the bottom of the list is it can be hard finding a job as a new developer. You'll likely need to learn a few things on your own before you land your first gig.
Hopefully these 15 strategies will be useful in your journey to learning web development! If you have any other recommendations you think should be in here, send me a message on Twitter @GregorySchier or @CodeSaladDev.
Stay safe and happy learning! 🐶