Prepare for a backend job by mastering computer science fundamentals

About - Our Method

By Lane Wagner on Feb 6, 2020

Humans enjoy learning, we’re naturally curious creatures. As such, it should be much, much easier to become a software developer. 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.

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.

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”

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.

For example, you could build a strong vertical bar by focusing primarily on backend development in Go. At the same time, you could build a wide horizontal bar by occasionally doing projects in JavaScript, Tensorflow, functional programming, or distributed systems.

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.

There are exceptions to this rule, but if it works within your personal constraints and goals, look 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 beliefs, we’d love to hear them. The easiest ways are to get in touch on our Discord community server or to tweet at us.