Humans enjoy learning, we’re naturally curious creatures. As such, it should be much, much easier to become a software developer.
Boot.dev isn’t just a collection of computer science courses, we have unique opinions about how you can become the best software engineer you can be. The following principles guide the development of our platform and community. We update them as we learn.
Computer science skills will set you apart in the job market
People are becoming more tech-literate every day - and that’s a great thing. However, we think simple website development will become the next decade’s “blue-collar” job. Understanding CS concepts like algorithms, data structures, distributed computing, and cryptography will be the way to differentiate yourself as a developer.
You can’t learn to code if you aren’t writing a lot of code
Many new learners end up watching hours of YouTube videos, only to find they’re unable to build the most basic applications when they start a project alone. Writing real code is a more effective way to learn.
Take a straight learning path to your career goal
So many students struggle figuring out what to learn next. There’s nothing worse than wandering around in “tutorial hell”, from programming language to programming language, and framework to framework. We have a simple, linear computer science program that’s designed to prepare you for an entry-level role in backend development.
A great project portfolio and Github profile is better for your job search than a formal degree
Degrees from a university and certificates from formal programs don’t hurt, but most students overestimate their value. There’s nothing more powerful than being able to show employers exactly what you’re capable of and how much coding you’ve done.
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 have 10 different “Data Structures” courses of varying quality - we have one that we dedicate all our resources to.
A mix of guided and unguided learning is essential
There’s nothing worse than spending a bunch of time learning, only to realize you don’t know how to apply what you learned to real-world problems.
- We use courses to teach new concepts like algorithms, data structures, and functional programming
- We mix-in real-world projects so you can use those same concepts to build real applications
Boot camps are too fast, universities are too slow
We disagree with the following common claims:
“You can learn to code and land a developer job in 8 weeks”
“you need a 4-year computer science degree to be successful”.
We think that if you spend an hour or two each day, it will take around 6 months to 2 years of learning before you land your first job. It’s important to have realistic expectations and achievable goals.
Mentors provide insights you won’t get from a textbook
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, stories and anecdotes from mentors will help you understand how it all applies to solving real business problems.
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.
There is something magical about learning with others
Similar to gaining insights from mentors, it’s important to have peers at your same level you can learn with.
- The motivation provided by a good group of peers is strong. You can keep each other accountable and moving forward.
- Teaching a concept is the one of the best ways to learn it deeper yourself. You will reinforce your learning on that topic in a serious way.
Mastery is important, grades are not
Students shouldn’t move from one concept to the next until they’ve shown mastery of the first. In traditional schooling, that means only A-students would move on to the next class.
That strategy doesn’t work in a physical classroom because teachers are responsible for 30+ students at a time. They’re forced to leave students behind so the rest of the class can move forward. With a self-paced strategy, you can move at your own pace and master each concept before moving on.
The “return on investment” of online learning is amazing
Tens of thousands of professors across the world are giving the same lecture on “bubble sort” semester after semester.
With online learning, we can take one of the best explanations of bubble sort, and distribute it globally. We can also do it on-demand and almost for free. Paying thousands of dollars for access to well-known concepts doesn’t make sense in the information age.
Be in the “zone of proximal development”
- Don’t waste your time solving problems that you already know how to solve
- Don’t waste your time trying to solve problems that are nearly impossible for your skill level
The zone of proximal development is where you should be. You should be challenged, but not lost. You’ll learn best when “muddling through” hard problems that you have the tools to solve.
T-shaped developers are the most successful
The vertical bar on the letter “T” represents the depth of your knowledge in a specific area, and the horizontal bar represents the breadth of your knowledge across all facets of software engineering.
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. Practicing interviewing skills will ensure a successful job hunt.
If you don’t define your career goals, you’ll never know when you’re ready for your first job
You don’t ever stop “learning to code”. There isn’t a magic threshold that separates the “coders” from the “non-coders”. Your learning path should never truly end, but along the way, you’ll find yourself qualified for different kinds of programming jobs.
If you’re looking for your first job, you’ll move faster 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 are slightly different than if you want to write mobile applications on iOS.
The best first coding job is a full-time gig
Many developers foolishly think that freelancing will somehow be easier than passing coding interviews. That’s usually just wrong.
- When freelancing, you spend lots of time marketing your services. That is time you aren’t spending coding.
- Working a full-time job on a team provides the most valuable thing an entry-level job can offer: mentorship from senior developers.
There are exceptions to this rule, but if it works within your personal constraints and goals, look for a full-time job first.