The Modern Computer Science Degree

on Wednesday, March 23 @ 3:27pm

Coding Bootcamps and Computer Science degrees are popular routes for students to launch careers in software development. Coding bootcamps average 12 weeks in length, and teach practical skills like building web applications from scratch. They prepare students for a job as an entry-level web developer, intern, or freelancer. Computer science programs average 4 years in length, and teach a wide range of concepts in programming, algorithms, advanced math, statistics, and general electives which may not correlate with computer science.

Coding bootcamps and computer science programs are the two most prevalent ways to start a career as a software professional. But coding bootcamps lack computer science fundamentals, and computer science programs often lack practical experience, and are extreme commitments in time and expense. The gap between what you learn in a coding bootcamp and computer science degree is why we created the Software Engineering Track.


Bloc’s Software Engineering Track teaches practical skills and combines them with advanced computer science topics and open-source software development. It teaches you everything you need to be a professional software engineer, and leaves out everything you don’t. We know this because we built the program after consulting with companies like Google, Facebook, and Twitter. After consulting with top engineering teams, we developed this chart to represent the programming learning curve:


We believe that 2,000 hours of focused study and practice are essential for becoming a software engineer. This chart shows where you’ll be after graduating from a coding bootcamp — which is between 500 and 1,000 hours — but it doesn’t explicitly illustrate why our Software Engineering Track is more effective than a computer science degree. Let’s explore four reasons why Bloc’s Software Engineering Track prepares you for a career in software engineering more effectively than a computer science degree.

For more information on why coding bootcamps often fall short, [read this blog we wrote about the topic](NEED URL).


Time is a Feature, When It’s Focused

A computer science program is four years worth of full-time study. This roughly totals to 6,000 learning and study hours. Thousands of those hours are unlikely to directly help you once you get a job though. A computer science program forces you to take electives, and advanced classes on artificial intelligence, history of computing, and theory that are not easily translatable to working as a professional software engineer. It’s not that these are bad things to learn – they may provide some useful life lessons – but they are not essential for becoming a software engineer. Bloc’s program includes 2,000 hours of learning and study hours, and every single hour is meaningful in becoming a software engineer.

Spending one year learning everything you need is a better use of time than spending four years learning many things you don’t. There’s plenty of time to learn new things in life, but when you’re paying to learn, the topics should be directly related to the outcome.

Avoid Life-Altering Debt

Computer science programs range in cost based on factors like residency, school, and financial status. A four year degree can easily reach into the six figures. For this reason, many students are forced to take out loans with interest rates between 4% and 6%. This is life-altering debt that will likely take years to pay off.

Bloc’s Software Engineering Track is not cheap — $24,000 is significant amount of money — but with reasonable payment options this amount should not be life-altering. In fact, financing as low as $750/month is available, which allows you to pay for the course after getting a job. Also, Bloc offers a tuition reimbursement guarantee that if you are not able to find a job as a software engineer with a starting salary of at least $60,000, you’ll be refunded in full. No computer science program offers such a promise.

At $24,000, Bloc’s program is a fraction of the cost of many computer science programs, and offers a tuition reimbursement guarantee on top of that. Your investment in Bloc is much smaller than it would be in a computer science program, and also much safer due to the reimbursement policy.

Return on Investment

ROI is a financial acronym that stands for “return on investment”. It explains what you’ll earn as a result of an investment. Not only is Bloc’s program a fraction of the cost of a computer science degree, but it also employs you faster. After one year, you’ll start earning a full-time salary as a software engineer. The return on your investment of $24,000 will be greater proportionally to that of an investment in a computer science degree, and it will also come quicker. The ROI you realize from a smaller investment and earning at a faster pace can have exponentially positive results over decades. But most importantly, you’ll also start a career doing meaningful work. Software is eating the world because it solves real problems. As a software engineer, you’ll be able to positively impact other people’s lives through software, and the value and satisfaction you realize will be incalculable.


Path to Mastery

No matter how great a computer science program, coding bootcamp, or our Software Engineering Track is, it will always pale in comparison to the experience you have working as a professional. The lessons you learn in a classroom setting will never match what you learn when you’re on the job. The apprenticeship model – which we employ in the Software Engineering Track – is an improvement over the classroom, as it provides training and lessons in a practical setting, but even it doesn’t match the effectiveness of learning on the job.

To become a master at something, you have to practice a lot, and you have to practice in realistic settings. There is nothing more realistic than practicing your skills when you are being paid to do so. In this respect, you want to be careful not to spend too much time in a classroom.

The final phase in the Software Engineering Track is an Open-Source Apprenticeship, where you work on open-source software with other professional engineers. In addition to learning through practical work, you’ll build a remarkable resume of open-source contributions. After the Open-Source Apprenticeship, you’ll get a job solving real problems for a real company four times faster than you would with a computer science degree.

For more of our thoughts on learning and mastery, [read about mastering software engineering](NEED URL).

Time, Money, ROI, and Learning

We aren’t so extreme in our views that we think computer science degrees should be abolished. They do serve a purpose for aspiring robotics and machine learning engineers, and they do many things well in general. But we feel strongly that they can be improved, and the Software Engineering Track is what we built to prove that. In a shorter period of time, with less of an investment, a safer investment, a faster return on your investment, and more effective learning, you will have a better outcome with the Software Engineering Track, and you’ll start the path to mastery sooner than you would by enrolling in a computer science program.

If you want to learn more about Bloc’s Software Engineering program and how it prepares you to land a job developing software, join us at an online info session. We’ll dive into the curriculum, what it’s like to be a Bloc student, and details about our 100% tuition refund guarantee.

More advice on changing careers

What Companies Look for in Software Developers

Software developer positions are highly desired. Just as astronauts, Supreme Court justices, and Hogwarts professors must have a variety of skills and knowledge, software developers have a combination of technical knowledge and soft skills. This post explores the skills that many companies look for.

Familiarity With Multiple Languages

While many software developers find themselves working primarily in only one language, it’s helpful to have experience in others. Fluency in multiple languages exposes developers to different design patterns and allows them to work on a wider variety of projects. Software developers working in web development may want experience in a backend language like Ruby or Python and a frontend language like JavaScript or CoffeeScript. In iOS app development, developers should know Objective-C and Swift. A person who knows multiple languages is called a polyglot, and this skill set is highly desired.

Knowledge of Modern Software Development Tools

To be effective, software developers need to know how to use modern tools:

– version control software (like Git) – issue trackers (like Jira and Pivotal Tracker) – web computing services (like Amazon AWS and Heroku) – database programming software (like SQLite and PostgreSQL)

The knowledge of these is critical to the duties of a developer. Without knowing the tools that modern teams use, it may be difficult to collaborate with team members, organize source code, or prioritize tasks.

Strong Negotiation Skills

Software developers are responsible for implementing new features. As part of this process, they’ll need to work with developers and engineers on their team to select a specific approach. Debate, disagreement, and discussion are common, so negotiation, conflict management, and compromise skills are very important. While the computer programming part of the job is critical, software developers are expected to be team players who contribute more than simply churning out code.

Understanding of Algorithms, Data Structures, and Complexity

Great code should be understandable and maintainable, but it should also perform efficiently. To write performant code, software developers need to understand how data structures, algorithms, and complexity relate. Different structures for storing data (like queues, graphs, trees, hash tables, etc.) can improve the way data is organized. Algorithms can provide different ways to search or sort this data, and different algorithms are preferred for different use cases. Complexity measurement, analysis, and optimization allows us to describe, measure, and improve the performance of a solution for a given problem.

Combined, these skills allow software engineers to write code that runs faster or takes up less space. Everybody hates to wait, so this work can vastly improve a user’s enjoyment of a product. Great performance can also help a product survive longer because it has a good foundation.

Task Organization and Management

Software engineers are given a wide variety of tasks from small but critical bug fixes to architecting a major project. While issue trackers like Jira and Pivotal Tracker can help organize these tasks, engineers must comprehend the tasks and their relative priority, consider co-workers and customers whose work depends on these tasks, and organize their workflow accordingly. Critical thinking about task and workflow management is an important part of software development.


Whether it’s previous jobs, open-source software contributions, or your own personal projects, software engineers are expected to have practice working with large and complex code bases. This helps them understand how different parts of a program work together, which enables them to effectively add features and understand the cause of bugs.

What Companies Look for in Software Developers
7 Things I Wish Someone Told Me Before I Started a CS Program

It will be difficult

All computer science programs are difficult. This is primarily because the underlying material is difficult to comprehend. Computer science encompasses philosophy, math, science, and logic. All of these can be both very abstract and very specific. Your CS program will be incredibly difficult in this respect. You will have to stretch your brain to grasp concepts that you didn’t even know existed, but you will be glad to have learned them when you’re done. You will have to wrap your mind around something as concrete as binary numbers to something as abstract as encapsulation. These small battles of understanding one particular topic at a time will help you understand the overall picture much better when you’re done. It will take you a long time to win a small battle, but this is why wars sometimes take a long time.

If you know the enemy and know yourself you need not fear the results of a hundred battles. — Sun Tzu

We will never understand the entire picture, but understanding computer science is a big piece to that puzzle.

You will fail, but you will also succeed

You will fail. You will lose some battles. You will not understand certain things. It will take you a longer time to understand certain concepts compared to some of your peers, but you might learn other concepts more quickly. Failure is an integral part of success. If you don’t fail, you can’t learn from our mistakes and push ourselves into the next stage. A sailor who ties a knot incorrectly that causes a sail to blow out does not stop sailing; that person continues to sail until that knot is tied correctly. Repeated failure leaves a more permanent mark in your mind than repeated success does. This is called progression. Success tastes much sweeter when you have repeatedly failed.

You will be working with analytical people, AKA: you will be working with nerds

This is a great thing! Nerds are a great type of people. Don’t be afraid to assimilate with your fellow nerds. Most nerds are introverted, but don’t be afraid to talk to them. Most likely, they want to talk to you as well! You might make a wonderful new friend or study partner, and these connections might be helpful down the road as you expand your career.

You will not be the smartest person in your program, but you have the ability to be better than the smartest person in some way

As is the case in most of life, you will never be the best. That doesn’t mean that you can’t be the best in a certain facet. Strive to compete with your peers in a respectable, reasonable way. You will not be the best, but you can be the best in at least one thing. Find that thing, set an example. It might be asking more questions in front of an audience, or solving a problem in a graceful manner while thoroughly explaining how you solved it. Find your talent and harness it.

The key to succeeding is to never give up

When confronted with a problem, most computer scientists will tell you that, “there’s a better solution”. The truth is, they’re often correct. For example, one could use an iterative search to search through a list, but a computer scientist would tell you you’re wasting your time. But the trick is that you can still solve any problem with brute force. Giving up is the only type of real failure that you can commit.

Your journey is your reward

Your journey starts in the marina. Your journey ultimately ends where you started. Along the way, you will experience both rough and calm seas. The reward is the wealth of experience and knowledge you gain. Your mistakes, failures and successes along the way will mold your character and build you into a tougher, more resilient person. You will also obtain a cunning ability to solve not just math and programming problems but also anything that needs more efficiency. When you are done, you won’t even care about your “merits” because you will be so excited with the new knowledge you have at your disposal to give to the world.

I work hard for the audience. It’s entertainment. I don’t need validation. — Denzel Washington

Computer science programs focus on theory over practical application

If you only learn what a CS program offers, you might graduate with very strong theoretical and analytical skills, but only minimal practical skills. To maximize your chances of getting a great job, ensure you’re also studying popular frameworks, platforms, and languages. For example, many employers expect software engineers to be familiar with modern tools like Ruby on Rails, GitHub, AngularJS, Heroku, Amazon AWS, etc. The combination of a theoretical foundation with practical skills will make you invaluable to any team.

If you’re considering a CS degree, you might want to compare it with Bloc’s Software Engineering Track which builds upon CS degree fundamentals with things like mentors with actual industry experience, an open source apprenticeship, the aforementioned technologies, and a whole community of people rooting for you every step of the way.

Go forth, and conquer!

7 Things I Wish Someone Told Me Before I Started a CS Program