Is This Program for Me?

We get a lot of emails from prospective students asking whether Launch School is the right learning program for them. In most cases, they write in great detail about their history and background and then end it with "So what do you think? Do you think Launch School works for someone like me?" It's tempting to just reply "yes" here, but the real answer is we don't know. But one good way to try to see if there's a fit is seeing if your study goals align with our program's goals.

Primary Goals of the Launch School Program

  • Master first principles and fundamental things that don't change in software development
  • Build foundations for a long-term, multi-decade career in Software Engineering
  • Develop life-long habits to learn deeply and with mastery as the focus
  • Launch an engineering-centric career

These goals sound good, but they also imply that we are not a good fit for other goals. For example, we aren't a good fit if you just need to learn Rails or React quickly, or if you're looking for a foot in the door to your first programming job, or if you need to acquire some skills quickly for work.

So going back to the question of whether you're a good fit for Launch School, instead of giving a salesy answer, we just try to be straightforward about our teaching pedagogy, our curriculum, the results we're seeing, and what's expected from you. We even talk about the cons of our program and where the stumbling blocks are. It's not a perfect program so we want you to know where the weaknesses are. From here, you can start to get an idea of whether this is the right path for you. We also have our free preparatory courses. No matter your experience or background, you should start with the free preparatory courses and get a feel for the format and pedagogy. If you can finish the preparatory courses and enjoyed that experience, you may consider registering for our paid courses; if you can't finish the preparatory courses or didn't enjoy the experience, then you probably shouldn't take our program.

Our Pedagogy

Finally, make sure to take time to fully digest Our Pedagogy and our take on Mastery-based Learning. Those two documents are so important that we'll mention it again: take time to read them and understand the content in those two links, because they are the operating philosophy on which our program is built.

Who our program is NOT built for

Before we get into who can benefit from our program, we'll first talk about who our program is not for. We've taught enough students at this point to know that if you fall into one of these categories, you probably won't do well in our program.

Our program is not a good fit for you if:

You are brand new to programming, or if you aren't sure if programming is for you

If you have zero programming background, our courses are very likely going to be too hard for you. We've had absolute beginners successfully complete the full program, but they had to expend extraordinary effort. What we typically recommend for people with absolutely zero experience is to first go through our free preparatory courses, and see how you feel. The preparatory courses will guide you through the very basics. Be aware that you may need to spend several weeks or even months there just to be ready for our first course. Make sure to carefully read over Our Pedagogy to identify where you are on the learning journey. Launch School is not built for true beginners still in the Explore phase.

You need a job in a few months

Our program takes a lot of time and effort, much more than you probably think at this moment. We feel there's a right way to learn, and we will lay out the structure for you, with repetition and assessments. But we won't make that path fit into 9 or 12 weeks because everyone learns differently. Because our program is focused solely on your comprehension level, the duration will vary tremendously from person to person.

You want to learn programming to launch your startup

From our own experience, entrepreneurs who want to use our program to launch their products don't do well. Our program is really geared towards those who are serious about launching a career in software engineering. Our curriculum is built with that goal in mind -- there is a lot of repetition to drill in foundations and a thorough treatment on the software engineering process. If you want to build prototypes to verify your idea while you try to figure out product/market fit, you don't need to take a program like ours.

You want to learn Rails, or Angular, or React quickly

One of our core philosophies is learning from first principles. Frameworks and libraries are solutions to problems and are great for existing developers looking for a productivity boost. They're not good for beginners to learn from. Our teaching sequence starts out from first principles, then slowly exposes you to fundamental problems web developers face. After you understand the problem from first-hand experience, you can start to appreciate the tradeoffs that popular frameworks employ to solve those problems. If you're looking for a quick jump start to mastering a framework or library, our program is not a good place for that.

You aren't sure if you can consistently put in the time for 12-24 months (or even longer, if necessary)

One of the downsides of a flexible online program is that we don't have you in a classroom for 9 or 10 hours a day. The cost of flexibility is that you must supply your own motivation. And do it for a very long time. Can you do that? If so, our program may be a good fit. If not, then it won't be.

You are easily distracted by Node, React, or the new shiny thing

Working diligently for a long time on a structured path takes a lot of commitment, and it also takes a lot of focus. It's very easy to get distracted on a long journey. There's so much to learn, and it looks like there may be a shortcut here or there. There's almost a daily feeling of "oh, if I just learn X, I can probably get a job faster". In our opinion, the best way to ensure a long career is to master "things that don't change" and learn to improve your problem-solving ability. Learning a new framework or library is short-term thinking. If you find yourself easily distracted by the hype of the new, our program is going to be hard to finish.

You're looking for a bundle of videos or lectures

Once you sign up, we start investing in you. The farther you go in the program, the deeper our relationship gets, and the more we will spend time with you. The goal is to drive you to job readiness, and it's not about consuming or buying 100 hours of videos or 100 pages of text. It's pretty common for us to recommend reading a book or ask you to take on an additional project. If you're looking for some videos or lectures to serve as a reference or casual consumption, then a book or set of videos would probably be a better fit. Ours is a program geared towards professional readiness.

Ok, that's enough of who we don't serve. We'll now get into our main values to give you an idea of what we care about.

Our Learning Goals

Students often tell us that two of the most confusing aspects of learning software development are 1) too many tools, frameworks, workflows and technologies to learn, and 2) too much change around those technologies. There is also uncertainty around what language one should learn first, and whether the hot language of today will be relevant 5 or 10 years down the road.

Students often ask: "What should I learn?", "To what depth or proficiency?", "In what sequence?", "How long will it take?" and "When should I stop learning?".

While the exact answers to those questions will depend on each individual, our hope is that understanding our learning goals will help you form answers to those questions on your own.

Focus on First Principles

The world of software development is awash in tools, libraries, and frameworks. One reason for this diversity of options is because it's so easy to publish one's own solution. Beginners are drawn in by the power of the framework or library, without understanding the fundamental problems or approach.

In order to really understand any tool -- Rails, Angular, React, etc -- you have to start with the first principles. First, you have to learn basic problem solving with a programming language. Next, you have to learn the intricacies of that language. Then, you have to learn web development, which includes HTTP, front-end vs back-end, SQL, relational databases, etc. Finally, you can start to peel back the conventions in a library or framework. Then, you start over from step one (because developing a skill isn't sequential -- we'll talk about that later).

Despite our program's depth and coverage, our core philosophy is around strengthening fundamentals and building proficiency in "things that don't change". While it may look like the world of web development churns at an incredible pace, the core building blocks of the web were created in the mid-1990s. Python, Ruby, JavaScript, CSS, and SQL were all created decades ago, and their core remains nearly unchanged to this day. What has changed, though, are layers of abstractions and tools built on top of those technologies. Don't focus on that. Focus on things that don't change, focus on the fundamentals.

That's one of the core principles of our program, and our goal is to teach you skills that will carry you for the next 20 to 30 years of your career.

Proficiency vs Awareness

In our program, we'll expose you to a lot of knowledge. It's sometimes overwhelming to try to figure out what one should absolutely know as a developer, versus what one should be aware of. This points to two different types of learning goals. We'll call it proficiency vs awareness.

Awareness is adding another bullet point to the general knowledge database in your brain. You can build awareness by watching a video on a topic and then filing that knowledge away.

Proficiency is becoming a skilled practitioner of that topic. You are expected to perform the rituals of that topic extemporaneously and can educate others on that topic. You can only reach proficiency with hundreds or thousands of hours of repetition and practice.

Most students just look at a list of topics when considering different programs, without looking deeper at whether they're learning it to be proficient or just building awareness.

At the core, ours is a skills development program focused on fundamentals. This means we are practicing towards proficiency in fundamental areas and building awareness on higher level topics. This is a very different approach from other training programs that focus only on awareness building across all knowledge layers, without mind to actual skills development. We will ask you to practice over and over and over, and give you hundreds of hours of exercises. It is designed to be repetitive and challenging at the same time.

Understanding Problems, not Solutions

Once you reach proficiency on the basics, it becomes much easier to understand higher level tools and frameworks. Another reason it becomes easier is that you can appreciate the problems that the framework is addressing. If you skip that understanding and learn the framework first, you'll only be learning solutions. Put another way, a framework is the framework author's perspective on a possible solution to the problem. In larger frameworks, it's likely that the framework addresses many problems in one package; it's effectively a bundle of solutions.

Learning someone else's solution in the beginning is problematic. There are two reasons for this: solutions are opinions and the best solutions abstract away the problem. First, as a studious learner, it's more important that you are exposed to the problem fully, including all of its edge cases. This is the only way to truly understand the problem you're dealing with, but this is also the opposite goal of a framework. The framework hides the problem, so the developer can be more productive. Optimizing on productivity is not the goal for a beginner. Second, the solution is one person's take on the problem at hand and is not the only way to solve this problem. In the beginning, it's important to not fall into a certain mindset, because it blinds you to other solutions. Every solution has tradeoffs, and likely works well with one set of constraints but doesn't work well with another set of constraints. Understand those tradeoffs.

The world of software development appears to have a lot of churn and change, but the core problems remain nearly the same -- the core technologies are largely unchanged for decades. But developers are constantly experimenting and coming up with new solutions, each with their own tradeoffs. Don't start your programming journey by learning someone's solutions.

The best way to truly understand a problem well is experiencing it first hand. Unfortunately, this implies some level of pain. The more acutely you experience the pain, the more likely you'll remember the problem. If it's a true pain, you'll also likely have burned many hours into trying to figure out a solution. It's through the process of turning the problem around in your head over and over that you start to develop an understanding of the nuances of the problem. And it's only through this process that you can start to appreciate the tradeoffs involved in others' solutions.

Our program will help you experience that pain in a structured way, and guide you along the path of exploring and understanding core problems in software development. When it's time to learn a new solution (i.e., tool, library or framework), you'll have clarity on the tradeoffs and be able to form your own opinion, which will be informed through your own first-hand experience struggling with the same problems.

Because our program is focused on exposing you to problems, we won't lead by teaching frameworks or tools. Even when we do use a library, the core concept is still about understanding the problem at hand. Once you understand the problem well, understanding the solution comes naturally. In other words, once you learn fundamentals, picking up new frameworks is no problem.

Circular Learning

If we want to focus on fundamentals, then it's natural to teach a programming language first, without tools or frameworks. We want to sequentially build up enough knowledge to move forward from first principles.

The problem with a 100% sequential approach is that it's not possible to "learn a programming language" in a well-defined amount of time. Like learning any skill (eg. playing the piano, playing golf, cooking, etc), the road to mastering programming is endless.

There's a balance between knowing enough to move forward and staying in one place for too long. Our program guides you through that tradeoff, with the understanding that you will revisit the basics throughout our program in a circular fashion. Through this circular manner of learning, you'll be exposed to the same fundamental concepts over time and in different problem domains.

The Slow Path

Our focus on fundamentals, building to proficiency, understanding problems and circular learning have a cost: time and effort. Many beginners are looking for a trick or edge or the fastest way of reaching professional level skills. Or, some people are looking for the quickest way to ramp up in order to build an idea. Our program is not designed for any of that.

Our program is built for people who are able to work consistently for an indefinitely long period of time, often seemingly without much progress to show for it.

This is the path to mastery -- this is the Slow Path.

Who Will Do Well in Our Program

If you've read this far, you might be a good fit for our program. We'll list out the attributes of our best students, and you can make a decision on whether this is for you. You will enjoy our program if:

  • You are a Studious Learner, looking to transition to a long career in software development.
  • You are willing to spend as long as it takes working through the program, which at times will be a slog.
  • You don't need someone to hold your hand and can get unstuck if nudged in the right direction.
  • You enjoy problem-solving and debugging.
  • You want to learn the fundamental problems in software development, and not a framework or library.
  • You want to learn not just how to use, but how to build a framework or library that solves fundamental problems.
  • You are not shy about asking for help or even helping others. You can collaborate in an online environment and be proactive in communication.
  • You want to learn "things that don't change".
  • You are not in a rush, believe in the Slow Path, and have set aside 12-24 months with the goal of working towards a long career in software development.

If this list describes you well, we have crafted all aspects of our program to fit your learning goals, and at a price point that is sustainable. As instructors, we're excited to work with you to get you started on a long and rewarding career.