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
7 Traits of Effective Software Engineers

If you’re considering a career as a software engineer, then you may have heard how difficult it is to learn. But the right mindset can give you a significant advantage when learning and working in the industry. Software engineers who embody these seven character traits are valuable employees and productive contributors.

Curiosity

It’s what killed the cat, apparently, but that cat was a rock-solid engineer. Great engineers take responsibility for learning and exploration. They do not depend on their superiors to give them explicit direction for a new challenge – their curiosity guides them to reach their own conclusions.

At my first job as an engineer, I worked on an Android game. In the middle of working on a new feature, I noticed that some background tasks consumed an inordinate amount of time. After some investigation, I discovered that we relied on an Android API that took 50% longer on average to complete when compared to a simpler Java counterpart. I reported my findings and as a result, we swapped one for the other in all cases.

An engineer who seeks out new information and investigates the product may discover something new in the process. More importantly, the more versatile an engineer, the more valuable they become. Learn to serve your curiosities and feed them with research and experimentation.

Grit

All engineers require mental stamina. As a new engineer, you won’t solve the most challenging problems during your first attempts. In fact, you may have to spend days, weeks, or longer looking for a solution before finding one that meets both business and product requirements.

If you give up readily, you may not find yourself working on anything interesting, or anything at all. Engineers love solving problems and most refuse to give up until they work them out. Grit is what keeps engineers from throwing in the towel.

In 2014, the popular blogging platform, Medium, encountered a problem rendering underlines in Chrome. The author, Marcin Wichary, states that what was thought to be a one-night project turned into a month-long effort. After brainstorming seven approaches, the team settled on one and Marcin implemented it. Fixing something as seemingly trivial as a proper underline required incredible tenacity and the product is better for it.

Communication

This one is a no-brainer, but if you want to be a part of a functional team, you must communicate. If you’re shy or quiet, that’s fine. You can make up for shyness by communicating effectively in writing.

At Bloc, we rely on asynchronous communication – one out of every six employees works remotely. We use email, Slack, and GitHub to facilitate feedback and discussion. In these messages, we try to use as few words as possible and get to the point fast. This keeps our co-workers focused and eager to read and respond.

Your team needs to know what you’re working on and if they frequently ask for clarification, they may stop asking altogether. By communicating frequently and in brief but descriptive messages, your team will look forward to speaking with, and hearing from you.

Attention to Detail

Despite being another predictable member of this collection, attention to detail is vital for engineers and thus worthy of mention. If an employee at McDonalds applies two ounces of special sauce to your Big Mac instead of two and a half, will you notice?

As a software engineer, if you mistype even one line of code, it can crash an entire application. Details comprise software, and companies hire engineers to craft those details well. If you are someone that looks solely at the big picture, you have to learn to zoom in.

At Bloc, our students rely on our custom curriculum to learn the software trade. If we mistype a line of code or introduce a grammatical error, the student’s ability to learn the subject is significantly affected. We use grammar tools like spell check, linters, and Grammarly to draw attention to pain points.

Divergent Thinking

Some call this, “thinking outside of the box,” but saying that would be yet another cliché and this post has reached its limit of those. When solving challenging engineering problems, the best solutions often come from adopting a new perspective.

If everyone took a crack at a problem from the same angle, they would ultimately arrive at a similar solution. But a diverse team whose approach varies among its members will generate more ideas and non-conventional solutions. You and your team will benefit if you broaden your ability to see things that others overlook.

To allow team members to share new ideas and solutions, we occasionally hold hack day events at Bloc. These hack days, like hackathons at Facebook, permit anyone in the company to work on anything. Thus, people who rarely interact with an aspect of the Bloc product can build new features or solutions that the dedicated team had not yet thought of. For example, our hack days helped us design a new payment flow, student portfolios, a student glossary for recruiters, and so much more.

Modesty

Engineers collaborate, even when managers assign a task to just one engineer on the team. Team members review each other’s code before deploying it to production, and during these reviews, they may criticize or recommend significant changes to code written by their colleagues.

Engineers open to receiving critiques and feedback receive more support from their teammates, and the engineers that receive more support make bigger contributions to the product. More importantly, the product suffers if an engineer deploys code without revising it to meet the expectations of their peers. A good engineer is modest and willing to consider a different approach suggested by their team.

At Bloc, we have a thorough review process both on the engineering and curriculum side. Before we published this blog post, it received editing passes from two individuals that looked for quality content and prose. I was responsible for accepting modifications and including content suggested by my peers; the post is better for it.

Wolf Pack Membership

It’s common for some engineers to isolate themselves and work without consulting their teammates. The industry refers to this proclivity as Lone Wolf Syndrome. Lone Wolves, much like the animals after which we’ve named them, do not survive for long. Wolves hunt in packs, and engineers must collaborate.

To be a productive engineer: seek help when needed, express yourself when overwhelmed, offer to help when you see peers struggle, and in general, engage with the group. No one on your team is excited when one person goes off and returns with unwanted or otherwise broken code. Acting as part of the team builds better relationships and trust among your co-workers.

If you believe that your personality is set in stone or that you’ve grown fixed in your ways, we recommend you read this article from Psychology Today. Those who study the mind believe that personality is flexible and with concerted effort, anyone can alter their disposition.

7 Traits of Effective Software Engineers