Learn computer science by building real projects with modern technologies

About Boot.dev - Our Method

By Lane Wagner on Feb 6, 2020

At Boot.dev, we believe humans enjoy learning. We’re naturally curious creatures. And this means it should be much, much easier to become a software developer.

A good diet isn’t just a month of eating less sugar - it’s a lifestyle change. Boot.dev isn’t just a collection of courses and a community of developers, it’s a methodology for becoming the most successful software engineer you can be.

The following principles guide our thinking as we continue to build and develop resources for our community. We update them as we learn.

You can’t learn to code if you aren’t writing code.

Many new learners are lured into watching hours of online lectures and YouTube videos, only to find they’re unable to build even the most basic applications when they start a project alone. Writing real code while learning new concepts is more effective nearly every time.

It’s not hard to find coding courses online, but it is hard to find good ones.

If you’re willing to drudge through thousands of Wikipedia pages, scholarly articles, and blog posts, you can learn anything online today. We don’t want to give you ten different “Data Structures” courses by ten different authors. We’ll give you a single option, and update it religiously to make sure it’s the best one.

Mastering CS fundamentals is the best way to differentiate yourself as a junior developer.

Maybe as soon as five years from now any high-school graduate will be able to build a rudimentary web application. It is possible that application development becomes the next decade’s “blue-collar” job. Understanding computer science concepts like algorithms, data structures, distributed computing, or cryptography will be the way to stand out as a developer.

At boot.dev, we don’t focus on the latest hyped-up framework. We teach evergreen skills that will serve you well through your entire career in software engineering.

Traditional boot camps are too fast, CS degrees are too slow.

The coding education world is plagued with clickbait like “You can learn to code online in 8 short weeks” or fake assertions like “you need a 4-year computer science degree”.

We think that somewhere between 6 months and 2 years of learning is a reasonable expectation for you if you’re able to spend a couple of hours studying each day. And that just gets you to your first job! If you stop learning just because you have an entry-level position, your career will stagnate.

It’s not as sexy as pretending we can teach you to code like a pro in eight weeks, nor is it as lucrative as demanding $40,000 for a full degree, but we think it’s the best way. If you’re looking for fake promises or get-rich-quick schemes, you won’t find them here.

A mix of guided and unguided learning is essential.

“Tutorial hell” is when you keep watching tutorials one after another, and you feel like you’re learning a lot, but as soon as the instructions go away you realize you just don’t know how to apply what you learned to real-world problems. We provide guided courses designed to teach you new concepts, then we give you actual projects to build so that you can apply what you’ve learned in a real application.

Learning the “soft lessons” from mentors is as important as grokking cold-hard facts.

Yes, it’s important to understand why binary trees make lookups fast, how DNS queries resolve, and what a round-robin load balancing strategy entails. However, there are a lot of valuable lessons that can only be learned from your coding elders.

For example, you might learn in a course that PostgreSQL is a relational database that isn’t optimized to scale horizontally. However, from an experienced mentor, you’ll hear a real story about how their company used PostgresDB up until they had 20 million users, and that a specific issue with user notifications forced them to consider a different technology.

Our courses offer a mix of the computer science facts you need to internalize as well as the community of experienced coders to give them context.

There is something magical about learning with others.

Similar to gaining insights from mentors, it’s really important to also have other learners with you who are learning the same things. There are a couple great reasons for this, but a few of the most important include:

Understanding and retaining information is important, grades are not.

In an ideal learning environment, students don’t move from one concept to the next until they’ve shown mastery of the first. In traditional schooling speak, that means only A-plus students should move on to the next class.

This doesn’t work in a physical classroom because a teacher is forced to teach 30 students at a time, so they leave students behind to ensure they can complete their material during the semester.

With online learning, we can allow students to move at their own pace and master each concept before moving forward.

The future of learning is online.

We believe the benefits of online learning drastically outweigh theose problems. Imagine tens of thousands of professors across the world giving effectively the same lecture on bubble sort semester after semester.

With online learning, we can take the best explanation of bubble sort and distribute it globally. We can also do it on-demand and almost for free.

It’s only enjoyable to solve problems that you have the tools to solve.

Solving problems that you already know how to solve is a waste of time. Attempting to solve problems without knowing where to start is maddening.

The zone of proximal development is where we want all our students to be. We give you enough tools and context so that you’re never bored, but rarely confused. We want you to be able to muddle through with the right instruction. The “muddling through” is where you learn most effectively.

T-shaped developers are the most successful.

The vertical bar on the letter “T” represents the depth of your knowledge in a specialization, and the horizontal bar represents the shallow breadth of your knowledge across all facets of software engineering. For example, you can build a strong vertical bar by focusing primarily on backend development in Golang. At the same time, you can build a shallow wide bar by doing small projects in JavaScript, Vue, Python, embedded firmware, functional programming, networking, distributed systems, or anything else that piques your interest.

Your coding skills don’t matter if you don’t know how to show them off to a potential employer.

You can be the best developer in the world, but if you’re not able to prove yourself to potential employers you will never find a programming job. Spending time working on your portfolio and resume will make your job search possible, then practicing the interviewing skills you’ll need will ensure a successful job hunt.

We offer all the courses and tools you need to learn to code, but we also have a suite of resources dedicated to helping you get your foot in the door and pass interviews.

If you don’t define your career goals, you’ll never know when you’re ready for your first job.

“Learning to code” doesn’t take a fixed amount of time. There isn’t a magic threshold to cross that separates the “coders” from the “non-coders”. Your learning path never ends, but along the way, you’ll become qualified for different kinds of software engineering jobs. If you’re looking for your first job, you can streamline this process by focusing on the most important skills for your goal. If your goal is to become a backend web developer, the things you need to learn before starting your job search are different than if you want to write mobile applications on iOS.

The ideal first coding job is a full-time gig

Often developers think that freelancing will somehow be easier than passing coding interviews. Trouble is, when you freelance, you spend a significant portion of your time trying to find clients, and that’s time you aren’t spending coding. Second, the best part of working on a team as a junior developer is that you get all of your bad habits corrected by more senior engineers. If you jump right into freelancing you’ll miss out on the best part of junior jobs – the mentorship and experience.

There are exceptions to this rule, but assuming you don’t need the flexibility that freelancing can offer in terms of schedule setting, we recommend looking for a full-time job first.

Let us know what you think

We’re always learning and refining our ideas. If you have any thoughts on our philosophies, we’d love to hear your story. The easiest ways are to get in touch on our Discord community server or to tweet at us.