I often get asked questions like ‘what frameworks do you teach at Launch School?’ or ‘do you cover data structures and algorithms?’. These questions aren’t surprising. They likely come from “10 things every developer should know” type articles, or topic-based bootcamp curricula.
Questions like these suggest a misunderstanding about Launch School and our curriculum. They also highlight a more general issue: a misconception about what it takes to be a software engineer.
These questions are rooted in the idea that software engineering is only about knowledge. In other words, “learn this list of topics and you can be an engineer”. This misconception is dangerous for the following reasons:
- Knowledge alone isn’t sufficient preparation
- Performing the role requires a certain set of skills
- Knowledge acquisition is not the same thing as skills acquisition
- Knowledge can often be temporary and short-lived
- Properly acquired skills are deeply ingrained
For example, knowing how to drive a car isn’t the same thing as being able to drive a car. Think back to when you learned to drive. It probably didn’t take you to long to know which pedal was which, or how the steering wheel worked. However, it probably took many hours of practice for you to be competent enough to pass your driving test.
Becoming a software engineer is no different. This is why the Launch School Curriculum is not simply ‘a list of topics’ concerned with knowledge acquisition. Instead it’s about leveraging solid fundamentals and focused repetition to acquire the skills necessary to be a software engineer.
Here’s another thing that’s not widely understood: the right set of skills, combined with solid fundamentals, makes knowledge acquisition easier. The reason we don’t cover a ton of frameworks, or advanced data structures and algorithms, isn’t because they are difficult to learn. They’re not. It just doesn’t make sense to teach these things early on. We don’t want to give you knowledge of a handful of software engineering topics. We want to give you the skills to be able to access all of them. For example:
- We can’t talk about how to reduce the time complexity of an
O(n^2)algorithm if you're not already familiar with nested loops
- Dissecting ORMs doesn’t make sense if you’re not comfortable with SQL
- There’s not much point discussing the trade-offs between WebSocket and WebRTC if you’ve never used HTTP
I could list dozens of similar examples, but they all come back to the same point: combining strong fundamentals with a software engineering skill-set unlocks any topic that you might want to learn. Focus on these things first, and they will serve you for your entire career.