Is This Program for Me?

Our program isn't for everyone, and it's not possible for us to know if our program is for you. What we'll do, however, is be straightforward about our teaching philosophy, our program, and what's expected from you. From here, you can start to get an idea of whether this is the right path for you. Finally, we have our free prep courses to help you make a decision. No matter your experience, you should start with the free prep courses, and get a feel for the format. If you can finish the prep courses and enjoy that experience, you may consider registering for our paid courses; if you can't finish the prep courses or didn't enjoy the experience, then you probably shouldn't take our program.

Who our program is NOT built for

Before we get into our teaching philosophy or 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 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 Prep course, and see how you feel. The Prep course 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.

You need a job in 3 months

Our program takes a lot of time and effort. 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 getting a job with a time horizon of 12-14 months for the transformation. Our curriculum is built with that goal in mind -- there are 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. They're not good for beginners to learn from. Our teaching sequence starts out from first principles, then slowly expose 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

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 learn "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 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 teaching philosophy and what we're about.

Teaching Philosophy

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 teaching philosophy 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. JavaScript, Ruby, CSS, 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 proficiency or just building awareness.

At the core, ours is a skills development program focusing 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 services that focus only on awareness building, 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 because 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 serious beginner, 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.

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, developing to proficiency, understanding problems and circular learning has a cost: time and effort. Many beginners are looking for a trick or edge or the fastest way to 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 that.

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

This is the path to proficiency -- 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 Serious Beginner, 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 with a long and rewarding career.

Mastery Based Learning

At the core, our program is a Mastery based learning system. It's a very different model from traditional training programs and requires that you come with a different mindset and expectations. Please take the time to watch the below recording of a webinar on this topic. It will help clarify what we're about and help answer whether Launch School is for you.

Duration: 45:52

Meet a Student Podcast Series

If you're wondering how our current students feel, this podcast series is for you. We interviewed some of our current students to share how they feel and what they've learned, and also share some of the challenges they've face with learning at Launch School.

You can either listen in your browser or subscribe to our podcast on iTunes.

Webinars

We recorded several webinars that goes over the major topics in this document, plus fielded questions from participants in the webinar. Take time to watch the webinars to get a feel for what we do here at Launch School and whether you want to learn this way. It'll help clarify a lot of questions.

Frequently Asked Questions

Thank you for reading this long document. If you have any questions about specifically how things work, make sure to read the Frequently Asked Questions page. It's likely many of the questions you have right now have been addressed there. If you have any other thoughts or questions not covered in the FAQ, you can email us at hello@launchschool.com.