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.

software-engineering-job-critical-skills

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:

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).

cost-and-time

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.

mastery

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

The Path to Mastery in Software Engineering

Bloc’s Software Engineering Track takes approximately 2,000 hours to complete. Depending on your pace, we distribute those hours across 48 or 72 weeks. That’s a long time, and students often ask if they can complete the track faster. Our answer is unequivocally, “no.” We insist on 2,000 hours because — like mentorship, curriculum, platform, and community — adequate time is essential for learning a new skill. It can not be truncated, even in the spirit of hustle or efficiency. To understand why time is so important, you must first understand how we view the path to mastery.

Mastery

Any craft can be mastered, barring physical limitations. That is to say, I believe that I could become a masterful guitar player; but my dream of playing quarterback for the New York Giants is undoubtedly limited by my age, height, speed, strength, and my body’s inability to absorb blind-side sacks delivered by 250 pound linebackers.

mastery-football

But most crafts can be mastered, and the path to mastery has been well-defined for hundreds of years. During the middle ages, an apprenticeship system emerged where young adults lived, worked, and learned from an experienced mentor — a master. An apprentice signed a contract and spent seven years learning a craft like metalwork, medicine, cobbling, or tailoring. After their apprenticeship, the apprentice became a master, established their own business, and mentored apprentices of their own.

mastery-anvil

The apprenticeship system of the middle ages was successful, and still applies to current crafts, like electrical work, which has a standard apprenticeship of four years. The apprenticeship system is successful because of three factors: mentorship, practice, and time. In the middle ages, masters provided the mentorship and the apprenticeship contract ensured that practice and time were accounted for. Let’s discuss each of these factors.

Mentorship

A mentor is more than a teacher. Mentors know how to teach, but they are also masters of their craft. A mentor adapts to their apprentice and their apprentice’s learning curve. They understand when to pressure the apprentice, when to help, and when to challenge. A mentor can predict when the apprentice will struggle and adjust their lesson accordingly.

A mentor ensures that the apprentice practices realistically; they know that the apprentice can get only so far with drills and menial tasks, the apprentice must also work on real projects. The mentor knows how to administer these lessons effectively. In Mastery, Robert Greene discusses the benefits of learning from a mentor:

Mentors do not give you a shortcut, but they streamline the process. They invariably had their own great mentors, giving them a richer and deeper knowledge of their field. Their ensuing years of experience taught them invaluable lessons and strategies for learning. Their knowledge and experience become yours; they can direct you away from unnecessary side paths or errors.They observe you at work and provide real-time feedback, making your practice time more efficient. Their advice is tailored to your circumstances and your needs. Working Closely with them, you absorb the essence of their creative spirit, which you can now adapt in your own way. What took you ten years on your own could have been done in five with proper direction.

Practice

When you commit to learning a craft, you accumulate personal debt. “I will become a grandmaster chess player” is a lofty goal that will require an arduous apprenticeship. The only way to pay down a debt is with consistent payments over the course of months or years. In an apprenticeship, your payment is practice.

Your payment may be small one day and large the next – 30 minutes of practicing chess tactics or 4 hours of match play – but the key is that you keep paying. Any debt can be paid off, as long as you commit to a regular payment schedule. Consistent practice is absolute with an apprenticeship, without it there is no path to mastery.

Practice is effective enough to overcome the lack of natural abilities. Bill Bradley was tall as an adolescent, but not athletically gifted. Despite his lack of natural aptitude for the game, he fell in love with basketball and committed himself to playing it well. In another excerpt from Mastery, Robert Greene explains Bradley’s approach:

Managing to get his hands on the keys to the high school gym, he created for himself a schedule–three and a half hours of practice after school and on Sundays, eight hours every Saturday, and three hours a day during the summer. Over the years, he would keep rigidly to this schedule. In the gym, he would put ten-pound weights in his shoes to strengthen his legs and give him more spring to his jump. His greatest weaknesses, he decided, were his dribbling and his overall slowness. He would have to work on these and also transform himself into a superior passer to make up for his lack of speed.

mastery-jersey

Through disciplined and consistent practice, Bradley became an all-time great professional basketball player. He mastered a craft that’s constrained by physical attributes, which is a remarkable achievement. After he retired from basketball, Bradley applied similar rigor and work ethic to another craft he was not naturally suited for – politics. He served three terms as a U.S. Senator for New Jersey, and a campaigned for the 2000 Democratic presidential nomination.

Time

Time is the most misunderstood factor in the path to mastery, because a beginner underestimates how long it takes to become proficient at a new craft. In Outliers, Malcolm Gladwell postulates that it takes roughly 10,000 hours of deliberate practice to master a craft. This has become commonly known as the “10,000 hour rule,” and has proliferated in both supporters and detractors. Gladwell defended the rule in his article Complexity and the Ten-Thousand-Hour Rule. Gladwell cited the conclusion of a 40 year old study about expertise, regarding their research of chess grandmasters:

There are no instant experts in chess—certainly no instant masters or grandmasters. There appears not to be on record any case (including Bobby Fischer) where a person reached grandmaster level with less than about a decade’s intense preoccupation with the game. We would estimate, very roughly, that a master has spent perhaps 10,000 to 50,000 hours staring at chess positions…

mastery-chess

The time it takes to master a craft depends on the person, the craft, and the mentor, though 10,000 hours seems to be a reasonable average for most cognitive crafts. For 99.99% of people, there are no exceptions to this average. Mastery takes time, and there are no shortcuts.

An Apprenticeship for the 21st Century

The need for cobblers isn’t what it once was, but as software eats the world, the need for software engineers grows. The craft of software engineering lends itself to the apprenticeship system. It is complex and requires skills in reasoning, logic, art, math, and theory. Software’s complexity requires masters to develop it, and teach it.

Unfortunately constraints such as time, money, and competition in business impact the ability for masters to train apprentices. Formal software apprenticeships exist – thoughtbot, 8th Light, and Trunk Club offer paid apprenticeships where apprentices train with master software developers – but these apprenticeships are limited. They last only several months, are offered in specific locations, and admit a small number of apprentices.

These limitations demonstrate the difficulty with scaling apprenticeship programs. Coding bootcamps attempt to solve the problem of scale by offering online and and classroom-based focused training, but they lack the key factors of mentorship and time. The average coding bootcamp lasts 12 weeks, or approximately 500 hours.

master-learning-curve

This is the average learning curve for becoming a software professional. The minimum number of hours needed to become a proficient, entry-level full stack web developer is approximately 1,000 hours. After consulting with world-class engineering teams, we learned that there is a skills gap between a full stack web developer and software engineer, which neither coding bootcamps nor universities are addressing.

We believe that this skill gap can be closed with an additional 1,000 hours of focused practice, which is why we require a minimum of 2,000 hours for our Software Engineering Track. We support this requirement with a tuition reimbursement policy – if you’re not able to start a career as a software engineer after graduation, we’ll refund your entire tuition. We are able to make such a guarantee because we know that the apprenticeship model is effective, given proper mentorship and 2,000 hours of consistent and focused practice.

Bloc’s mission is to offer software engineering mentorship at scale; to provide a way for anyone, anywhere to learn software engineering as an apprentice. The tuition pays for the factors required in the path to mastery:

  • Our mentors and curriculum teach students and provide realistic practice through building software and contributing to open-source software.
  • Our platform ensures that students develop a consistent and focused practice schedule.
  • Our track is paced for 2,000 hours, which ensures that a student has spent enough time as an apprentice to begin work as a professional software engineer.

While it would be interesting to offer a 10,000 hour program for software engineering mastery, we believe that 2,000 hours is an appropriate amount of time to start a new career as a professional software engineer. A graduate of our Software Engineering Track will understand how to learn from a mentor, they will have disciplined habits and practice consistently, and with these skills internalized, they will know that the path to mastery is simply a matter of time.

It’s an inspirational idea – to think that you can master a craft with such a simple formula. Seek mentorship, find realistic ways to practice your skills, develop consistency in your schedule, and practice for years. You will become a master.

The Path to Mastery in Software Engineering
Should I Become a Software Engineer or a Junior Web Developer?

The software industry uses words like hacker, programmer, coder, developer, engineer, and architect to differentiate between similar-but-not-identical skill sets. These terms are poorly defined, which causes ambiguity, and their appropriate uses are still debated today:

Bloc offers two related Tracks for students who desire to learn these skills: a Full Stack Web Developer Track, and a Software Engineer Track. Since the definition of these terms can be ambiguous, let’s be explicit about what we mean. (Others may use these terms differently.)

fst-vs-set

If you graduate from the Full Stack Web Development Track, you’ll be able to develop and maintain web apps. You will learn two programming languages, how to create databases, advanced styling techniques, and more.

But there exists a class of problems not covered by this Track. As an example, consider this question: “Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?” It’s called the Traveling Salesman Problem because a salesman must travel through many cities and make the best use of their time. There are many problems like this.

For example, Airbnb might want its users to create search queries like “Given a city and a list of Airbnb rentals, what is the cheapest way to rent Airbnbs for three straight months, using only Airbnbs that have a dishwasher, a washer/dryer, or both?” A junior web developer may not be prepared to write code to efficiently answer that question. A software engineer grad is armed with techniques and skills that make them capable of solving these open-ended and complex problems.

Here’s an analogy outside of software development: a Full Stack Web Development Track graduate is like a construction worker who builds bridges. Bridge-building is highly skilled labor, requiring lots of practice and knowledge of different materials, approaches, scenarios, and designs. A great bridge-builder can adapt their approach to different types of gaps, different weight requirements, etc. But ultimately this person is combining existing tools to construct something, not designing something new.

A Software Engineering Track graduate is like an architect or civil engineer. This person understands the theory behind everything – not just which metal to use where, but why: how to measure it and prove it. This person also understands at a more fundamental level how the sausage is made: what goes into the metal alloy, or how the specific curve of a support beam is important. They are uniquely qualified to design new bridges, and make more creative, iterative improvements on existing bridges.

The former will likely always be employable, at least in areas with bridges. But the latter is indispensable to society: without them, we can never evolve. Ultimately, graduates of the Software Engineering Track can solve harder problems, handle more complexity, and create more robust software.

Now that you know the difference, consider which track to enroll in.

Which Bloc Track Should I Choose?

Given your hard work and diligence, Bloc Tracks will change your career and your life. All Tracks teach professional-grade software development skills, include dedicated one-on-one mentorship from an industry expert, and come with exclusive access to Bloc’s Employer Network and Career Services team. Each Track follows the tried-and-true Bloc approach of building real software, starting with carefully sequenced and technically rigorous curriculum and transitioning to independent work at the end.

In the Full Stack Web Developer Track, you learn the critical skills for modern web development, including Ruby on Rails, JavaScript, HTML, and CSS. You practice these by creating a variety of web apps during your course. Graduates of this Track are qualified to work as junior web developers.

Here are the main differences:

fst-vs-set-chart

Compared to the Full Stack Track, the Software Engineering Track (SET) covers more advanced topics, and requires one thousand hours of additional work. Both are premium experiences designed to help you get a specific outcome: new skills and a new job. SET’s length provides its students with enough time to master the advanced skill set. Whichever direction you go, a Bloc Track will teach you to write outstanding software, improve your career, and enrich your life.

Should I Become a Software Engineer or a Junior Web Developer?