Article’s Objectives and Key Results (OKRs)

Starting July 2018, for every article, we set out to accomplish one or more objectives (the “O” in OKRs), and the success of these objectives will be measured by or determined by some key results (the “KRs” in OKRs). The key results are the specific concepts or ideas you will learn and the steps you will take to accomplish the objective(s).

In this article, we set out to accomplish the following objectives, all of which you will realize when you read the article and complete the exercises at the end:

  • Understand *why* a significant number of students in coding schools and course platforms quit their programming education before they graduate and before they gain employable skills and expertise, so that you can avoid the same fate.
  • Make all necessary plans and sacrifices to ensure you will complete your entire programming training, or at least complete enough of your training (that is, enough to acquire gainful skills and expertise) to get a rewarding job or help you attain proficiency.

Most people who pay for online programming courses (à la carte courses, programming boot camps, MOOCs, coding academies, CS degree at university, etc.) or sign up for free coding courses usually quit a few days or weeks or months into the program—a good amount of time before they acquire any useful value from the program, often leaving themselves mired in student loan debt and worse.

People quit their programming education for a number of varied reasons. Although, many quit for the same set of reasons—including too little time to study, lack of cognitive bandwidth, and lack of purpose (the powerful motivator that ensures personal success). Some also quit when they later discover they don’t enjoy programming enough to put in the requisite hard work and consequential sacrifices to succeed in it.

The many people who quit not only waste a good portion of their time and a handsome bit of their money, but they also hurt a measurable sum of their confidence and career outlook. And some even put their family in dire a financial state, as a result of their failed attempt at a career in programming that was supposed to help their family, who may have helped them (the student) financially or by making other sacrifices.

I know you don’t want to be one of these statistics, so I have written this article for you. I have seen too many students lose out on a rewarding career, and too many put themselves in a worse predicament by signing up for a programing school or technical for-profit college and failing to get any value from it.

The rest of this article continues after the series’ table of contents below.

Beware of Misleading and False Graduation and Job-Placement Rates

Don’t be fooled by those “98%” or “99%” graduation rates and job placement numbers you see advertised on the websites of some popular programming schools. Those statistics mislead, at best, and include inaccuracies, by design. How do I know this? I know because I myself have interviewed a few of the same people who help to create such statistics, and they have confided in me that those schools use “special students” to tabulate the favorable statistics. You should consider such unbelievable statistics as, well, … unbelievable.

What’s factual about this matter is that just as with any educational program (no matter the field of study)—online or offline—many students quit before they graduate. Even at the most prestigious four-year universities, fewer than 40% of those enrolled in Computer Science (CS) programs and related STEM programs graduate on time, and many quit. The statistics are worse for public universities and for-profit colleges. Consider, for example, that just 13.5% of students at California for-profit colleges graduate on time—within four years.

More People Quit than You Think

According to one report, the number of people who quit online coding programs neared a shocking 94%. You don’t want to be part of that statistic, right? If you are going to drop a coding program, or any educational program, quit either in the very beginning, before you waste any time or money, or later, after you acquire sufficient knowledge and skills to be a proper developer, a confident engineer, a person able to get a job with whatever skills you will have acquired before you quit.

But not only people who take online coding programs quit in large numbers; as the NY Times noted, roughly 60% of “students planning engineering and science majors end up switching to other subjects or failing to get any degree.”2 (NY Times) And if you are wondering why these students quit, “Professor Chang says that rather than losing mainly students from disadvantaged backgrounds or with lackluster records, the attrition rate can be higher at the most selective schools, where he believes the competition overwhelms even well-qualified students.”

Why Do Most People at Just About Every Programming Educational Institution Quit their Programming Education?

People quit programming coding schools and coding courses for all sorts of reasons, many unavoidable. For example:

  • People often quit online coding programs because sometime after they enroll they realize they don’t have the capacity for coding or that they dislike the complexity or tediousness of the career path they chose.

  • Some change their mind because they realize the coursework for most programming career paths is too intense.

  • Others quit because of financial difficulty; they can’t keep up with the monthly tuition or they have to work more hours than expected to pay their bills.

  • (We discussed the following point in the fifth article in the series as well.) People who are breadwinners in their family can face backlash from family members and can feel unrelenting pressure from their family to complete their programming training in little time. This pressure along with pessimism (e.g. discouragement or disappointment or criticism) from family members can, on its own, kill a student’s programming education and career faster and more effectively than just about all the other reasons on this list.

    A person pursuing a career in programming (changing their career) is likely to feel some amount of guilt for putting their family through a period of severity and pressure for wanting to resolve the situation as quickly as possible. Further, if the person (the student) takes longer than expected to complete their training, any criticism on the matter from a family member could further exacerbate the student’s fragile state of mind.

  • Some even quit to try out other programs, and they sometimes spend much time trying different programs to find an ideal one or to find one that they believe makes learning to code easy or manageable, only to discover that learning to code is cognitively demanding and difficult, no matter where you train to become a programmer.

  • At the college level, we don’t have all the answers for why people quit their programming education. But we do have some insights. According to College Transitions, “The primary reason why students drop out of engineering programs is a lack of preparedness for the high level of rigor. Beyond the sheer challenge of the material is the time commitment required outside of the classroom.”1 (College Transitions)

The Most Common Reasons People Quit their Programming Education

Of particular interest to you should be the most common reasons people quit their programming education.

Though determined to succeed, financially capable to pay their tuition, and academically prepared for the coding education, many students still quit their programming education, and most these students quit for the same types of reasons—the most common, avoidable reasons. These are:

  • Insufficient time to study
  • And too mentally taxed (lack of cognitive bandwidth) to focus on their coursework.

Indeed, people quit for these reasons more than they do for any other. This fact should matter to you because you want to make sure you avoid these common pitfalls. Ensure you read the related article, The Crucial Factors for Success in Programming, Assessing Your Capacity to Become a Programmer, and Choosing the Best Programming-Related Career for Your Capacity, which discusses, in depth, time bandwidth and cognitive bandwidth, along with the other two crucial factors for success in programming.

What Can You Do To Avoid Dropping Out of or Failing in Your Programming Education?

As you will read in my article The Crucial Factors for Success in Programming, and the Programming Jobs that Are Best for *Your Purpose and Capacity*, to succeed in a programming education and in your programming career:

  1. You must have sufficient time to study.

    You need at least two hours a day or 20 hours a week to train to become a competent programmer. If you don’t have enough time to study, you will take so long to complete your training that, by the time you complete some courses, you will have forget many of the concepts you completed earlier in your studies. This will leave you in a situation where learning new material is typically difficult for you because you can’t recall the related prerequisite material for each new course you take.

    Furthermore, you will likely take too long to complete your training and suffer technical stagnancy in your career path. For example, if you could take 3–4 years to complete your training that should have taken you 4–12 months. when you complete your training, having taken twice as long to complete it, you could have to relearn some of the technologies and be forced to learn new technologies that the industry may have adopted during the time of your study. And technologies and concepts you learned could have been surpassed for newer versions.

    Most people taking online coding classes to change their career already have a full-time job, and this limits their capacity to find enough time to study. In such a case, understand Why You Will Need Your Family’s Support While You Train to Become an Employable Programmer.

  2. Ensure you have a goal and a purpose—the powerful self-motivator that pushes you to success in spite of tough challenges.

    In my article Your Goal and Purpose for Learning Programming Will Determine Which Programming Career Path to Pursue and Whether You Will Succeed
    , I discuss the importance of purpose as a motivator and an essential ingredient for success in programming education and beyond. Read that article for the details.

  3. Before you embark on your programming education and career, ensure you have cognitive bandwidth.

    As I discuss in the related article The Crucial Factors for Success in Programming, and the Programming Jobs that Are Best for *Your Purpose and Capacity*, when your mind is too taxed (such as when you arrive home form work too mentally exhausted to study and learn properly), you simply have no mental bandwidth to learn programming.

    Scores of research over the decades have proven than when you are cognitively taxed, you don’t perform well on cognitive tasks. Indeed, when you are cognitively taxed, you are literally operating with a significantly less IQ than you normally perform with.

    Or, to put it another way, your cognitive capacity has been so reduced that you are performing at about 30%–40% of your cognitive capacity.

    Surely, you don’t want to do anything mentally demanding under this mental depletion, let alone learn to code, possibly the most difficult career to train for.

    So, make any necessary sacrifices and negotiations with your employer and family to allow you to free up your cognitive bandwidth for your programming education.

    If you are so poor that your circumstances don’t allow you to use your full cognitive bandwidth, we might be able to help you via AI Humanity, our organization that aims to provide the unprosperous with realistic paths to prosperity. AI Humanity is still in development, however, so we may not be able to help you before the end of the year. Feel encouraged to email me and I will try to determine how you can get the help you need. I should clarify that you should email me for help with the general scarcity you face in your life, not for help with Bov Academy tuition.

    The Effects of Scarcity on Cognitive Bandwidth: Unfortunately, scarcity of an essential resource (for example, poverty or enduring financial stress) significantly limits your cognitive bandwidth as well. This helps to explain why the poor, generally, does not perform well on cognitive tasks when they are cognitively taxed.

    One solution to help with lack of cognitive bandwidth, as Sendhil Mullainathan and Eldar Shafir, authors of Scarcity: Why Having Too Little Means So Much, advised is for educational programs to provide slack—leniency (or accommodation) for students to complete their education when they are able to do so. Bov Academy was created with slack for students, by design. We have many students who started in the first cohort, in 2016, and who have disappeared from the program for many months, even more than a year, and who are still allowed to continue their education at Bov Academy.

    Such accommodation—slack—is important because, as noted above, some people quit their programming training for reasons beyond their own control. Any help they can get makes a notable difference and can completely change their life and that of their family for the better.

    Slack is just one of the ways Bov Academy operates more like a nonprofit educational institution than a for-profit one, even though we are not officially a nonprofit.

  4. Once you find a reputable coding school and enroll in a career path at that school, stick with it; don’t quit whenever you discover small negativities and “issues.”

    Such issues can be endless; the list of possible negativities includes:

    • Slow instructor feedback
    • Not enough dedicated and encouraging students to partner with and learn from
    • Bugs in the course platform
    • Unintuitive or not slick enough user interface for the courses
    • Unrefined video instruction or lack of video instruction
    • Not enough help from mentors or no video mentoring sessions.

    The issues noted above are all inconsequential to your success; they shouldn’t and won’t negatively impact your education. Most of these issues and negativities can be overcome with patience and optimism. Blaming the sorts of issues noted above typifies pessimism; you don’t want such pessimism to derail your programming career.

    Also, don’t quit a coding school just to try a bunch of new programs to see if one of them is better than others. You can quickly find yourself starting and stopping programs over and over, a process with no net benefit to you. I know at least three people who have tried more than six coding schools and course platforms and are yet to complete 30% of the career path they are interested in.

    You don’t want to be stuck in downward slide to inevitable failure. This can be easily overcome. For example, quitting to try other programs can be avoided with better planning, such as by doing as suggested in this article: Your Goal and Purpose for Learning Programming Will Determine Which Programming Career Path to Pursue and Whether You Will Succeed.

    I usually encourage each student (who wants to quit their coding school to try Bov Academy) to stick with the program they are already enrolled in and ignore the negatives. I encourage them to focus on the positives, because optimism is one of the most crucial factors for success. Every school has negativities and imperfections and “issues.” Some students strive and succeed, regardless of these imperfections, and some students easily become pessimistic and fail or give up, because of the same imperfections.

    There Are Critical Factors that Should Force You to Quit a Coding School or Career Path: Of course, just as no coding educational institution is perfect, some are likewise weak and unrewarding. And, as we discussed in one of the articles in this series, some career paths, misaligned with your capacity and interest, can leave you in destiny to misery. Others, thankfully, aligned with your capacity and interest and career plans, can give you joy and enthusiasm and lead to lasting satisfaction and prosperity.

    Accordingly, if you are attending a coding school that is unrewarding (that is, it doesn’t give you the chance to realize confidence and proficiency in your career path, or it doesn’t provide the resources to help you become an employable programmer in your career path), or if you are enrolled in a career path you believe is not ideal for you and your long-term plans, quit and find the right coding school and right career path for you.

  5. Enroll in a programming career path you have the capacity to succeed in and that you will enjoy.

  6. Complete all prerequisite courses before you take any challenging programming courses and complete all the important courses in your career path.

    This should be obvious, but some students don’t know the requisite material to all the courses they take and other students feel confident that they can successfully complete intermediate and advanced courses without completing the relevant prerequisite courses. Even more surprising, many students, likely the majority, inaccurately overestimate how much they know. They think they know more than they actually know, and skip crucial courses unwisely, a decision that comes back to hurt them.

    At Bov Academy, for example, I estimate that 98% of students who enroll think they know much more than they actually do. We literally ask studnets how much they know and then test their basic knowledge on what they said they know, to get a sense of their knowledge and how we should tailor our curriculum for them.

    Also, a few students believe that taking just a few core courses that cover the specific technologies advertised in job qualifications (such as React or OOP JavaScript) is sufficient to help them secure a great job. They try to take just those courses. When they skip the prerequisite courses for these advanced courses, they typically struggle to comprehend the concepts, which creates frustration and disinterest, which sometimes leads to the student quitting altogether.

  7. Don’t take more than a couple of days break from your programming training.

    Too many students, for reasons of every kind, take breaks in their studies, especially at coding schools, online course platforms, and for-profit colleges. Some take more than a two-week break and some take months off. Others flat out disappear and reappear for more than six months and a year, even two years. A break longer than a week will contributes to a loss of enthusiasm.

    A break longer than four weeks will require you to relearn some of the material you, and will exact a loss of interest in completing the tough coursework and assignments. This is similar to enjoying a successful workout routine (to get fit or stay in shape) for many months and suddenly taking a long break, in the middle of your success, when you are enjoying the results you see in the mirror. Any long breaks at this juncture typically derail people’s workout completely, for staying away is much easier than restarting. Inertia is magnitudes more difficult to overcome than momentum is to maintain.

    Even at Bov Academy, some students disappear from time to time, and some quit. Unlike most other coding schools and for-profit colleges, however, we always contact students—multiple times—if we notice they have disappeared and that we or other students aren’t hearing back from them in a timely manner.

We Won’t Allow You to Easily Give Up

I myself email every student at Bov Academy who disappears for more than a few weeks, to encourage them not to give up. I agonize to see people give up on their dreams, give up on their family. This pains more when I know the student is just a few months away from completely transforming their life for the better with a rewarding career.

Timely and reliable communication between students and instructors helps to keep students engaged, responsible, and committed. We try to understand why students would give up on achieving a high-paying career in programming, why they would waste their money and just quit.

Those are the most common reasons people quit their programming education. Now you have the information you need to avoid the same mistakes and same undesirable outcomes.

Exercises: Actions You Should Take Now

Exercise 1: Find the Potential Obstacles that Could Derail Your Programming Education and Career

Think about some possible obstacles and circumstances that could force you to quit your programming education or programming career, and:

  • Write them down.
  • Discuss them with anyone in your family who may have to help you plan to overcome the obstacles.
  • Try to come up with a plan that will help you avoid the obstacle(s) altogether. If avoiding the obstacle(s) is impractical, try to formulate a plan that will help you carry on with your studies and succeed in spite of the obstacle(s).

Exercise 2: Read the Related Articles

Read the articles I linked to above, and take all necessary actions where recommended.

Exercise 3: Get Support from Your Family: You Need It

You will likely need your family’s support; discuss the details with them before you get too far in your programming career plans.

OKRs Accomplished?

Have we accomplished the objectives we set out to accomplish at the beginning of this article? The key results will tell us; let’s find out.

Key Results to Determine the Success of Our Objectives

The key results, as noted in the beginning of this article, are the specific concepts or ideas you should have learned and the steps you should have taken to accomplish the objective(s). Accordingly, at this juncture, you should have grasped and completed the following; these are the key results:

  1. You can describe five reasons, including the two most common ones, why people quit their programming education.
  2. You have discussed (or will discuss) your programming education and career with your family to get their support to ensure you don’t quit your programming education for any of the noted reasons or for any reason.
  3. You have identified some possible hurdles that could force you to quit or take time off from your programming education and you have preempted those obstacles by making any necessary sacrifice and plans now.
  4. You have used your goal and purpose (or will do so) to finalize your plans for your programming career, including selection of the most apt career path for you—the one that aligns with your capacity and short- and long-term plans.
  5. You have selected a coding school (if you don’t plan to learn programming on your own) that allows you to complete your studies without interruption or that allows you to resume your studies without any problems if you must take time off.

Recommended Reading List to Expand and Refine Your Knowledge on the Topics Discussed

The books in the list below will enrich your life and help you on your path to success. Some of them will give you a jolt of inspiration. All of them will enlighten you on subjects you may not know or that you know little of or not enough of.


  1. College Advice for the Career-Minded: So you want to be an engineer…

  2. Why Science Majors Change Their Minds (It’s Just So Darn Hard),