Bootcamps vs. College (2016)
triplebyte.com
triplebyte.com
From my experience, the very top tier bootcamps basically function as an extended job interview. They select for people who either already have most of the skills needed, or who possess an extreme natural aptitude. Graduates from these programs can be effective programmers out of the gate. However, the pool of people who can pass these programs is extremely limited. The failure of many top tier bootcamps to scale points to this.
As for graduates from other programs, I place them in 2 buckets. The first is people who have substantial additional experience--they’ve been programming as a hobby for years, they learned python to automate work in their old career, they have a related career or degree etc... These candidates can also be extremely effective.
The second is candidates who have little to no experience beyond the bootcamp. These candidates from what I’ve seen are almost never a good fit. They generally come in below the level of a 2nd year college intern. 12 weeks just isn't enough time--barring extreme outliers.
The problem is that people who fall into the first set of candidates tend to be effective with or without bootcamp. My advice is that if you want to be a programmer, don’t pay thousands of dollars for bootcamp. Either take the time to go to school and learn the theory, or learn on your own through free or lower cost materials if you’re happy with CRUD jobs.
There are other ways to level up into more interesting work, but most people won’t learn the boring parts without external motivation and structure, and a CS degree is the easiest way to provide that.
1. This is what inspired me to build this project. Hopefully I can build up some data and present my finding on HN: https://news.ycombinator.com/item?id=19524645
As always, it depends.
Assuming retire means you’re going to get some kind of pension, you could definitely be in a nice position to take contract jobs and let the pension smooth out any income fluctuations. Also if you can start trying to pick up contract work on the side now, you’d be a very good position in 4 years.
If you want to find a full time, entry level job, that’s doable as well assuming the economy is doing relatively ok in 4 years.
You could also try to find a programming job where your existing experience would be relevant so you're not starting out at the bottom. Maybe a programming job with a company that makes forensic software or just a company that works with law enforcement in general. Domain expertise is the big differentiator once you have a few years of programming experience.
I definitely do as well. The problem I see is that the ROI just isn't worth it with the common 12 week bootcamps. It's not that you couldn't come up with a bootcamp program that was worth it, it's that I don't think 12 weeks is long enough. Look at skilled trade apprenticeships--they all take much longer. Even something like cosmetology school is a year long program.
If you had a program that was a year long and was priced similarly to community college, I think that could be worth paying for.
>They are expensive, but going back to school for a 1 or 2 year CS masters is way more expensive than a bootcamp in both time and money.
The problem is that those things aren't remotely comparable. I think the problem is that bootcamps are what for-profit education ends up looking like. 12 weeks isn’t based on how long it takes someone to become proficient, it’s based on how long people are willing to go with no income.
Looks like Lambda school is 9 months now (I though it was 6 but perhaps they increased it). That is equivalent to a full academic year...whats your experience with Lambda school grads and are they objectively much better than one graduating from an in person one?
You don’t need deep understanding of computer science writing yet another software as a service CRUD app or most bespoke internal corporate tools that will never see the light of day outside of the company.
>You don’t need deep understanding of computer science writing yet another software as a service CRUD app or most bespoke internal corporate tools that will never see the light of day outside of the company.
Sure provided you’re having your hand held by someone on your team who does have a deeper understanding--basically acting as an apprentice. There's nothing wrong with apprenticeship, but you also don't need a bootcamp to prepare your for that.
And if you ever want to move beyond writing CRUD apps, you’re going to need to make your way into much more complex territory at some point.
The complexity in much of software engineering comes from understanding the business requirements translating that to code and making a system usable.
Most development is not about leetCode and DS&A.
The most we can expect from a junior developer who just graduated from college with a CS degree is for them “not to eat the chalk.” At least the boot camp grad can hit the ground running and add features.
The type of theory companies care about isn’t how to invert a binary tree and whether you know how to write a merge sort. Heck even C had the built in qsort that was good enough.
This is the exact opposite of my experience. Bootcamp grads tend to come in well below early college interns.
>The type of theory companies care about isn’t how to invert a binary tree and whether you know how to write a merge sort. Heck even C had the built in qsort that was good enough.
I don't really care whether you can implement merge sort from memory. But, I've been on both sides. And understanding the relational model, graph theory, set theory, computer architecture etc... has made translating business requirements to code a hell of a lot easier.
I’ve even had to maintain a bespoke development environment/IDE/compiler/VM for Windows CE written in C when I was transitioning to an “enterprise developer”.
But, for the last 10 years, I can honestly say that nothing I have done takes any level of advanced computer science understanding that you would learn in school.
Schools don’t teach what I consider “computer engineering” - how to build a maintain complex system within a team that translate business requirements to working maintainable systems.
Most developers aren’t doing anything new or complicated, they are just taking preexisting tools, frameworks, packages and putting them together. They aren’t even working in non memory managed languages anymore.
I don't work at a FAANG company. We mostly work on boring line of business apps, but I use CS theory every single day. If I take what you say literally, my experience is so different from yours that we might as well be working in different industries.
My guess is that we have different definitions of "advanced" computer science theory, and that you've internalized a lot of what I'd consider computer science theory to the point where it seems like common knowledge to you.
When I went back to school, the programming classes weren't super helpful because I'd already been programming for professionally for 7 years or so. But in every single theory class I constantly discovered much better solutions to problems I'd had in the past, or in many cases I realized that I'd spent a day or 2 rediscovering a solution to a problem that was solved 50 years ago.
There were so many holes in my knowledge that I didn't know were there, and if you'd told me just how valuable having a more complete understanding of CS theory (and hardware) I wouldn't have believed you, but it has been immensely helpful.
>Schools don’t teach what I consider “computer engineering” - how to build a maintain complex system within a team that translate business requirements to working maintainable systems.
They do. I had several software engineering classes that focused on building large projects in a team--estimation strategies, design patterns, how to gather requirements and talk to business people etc...
I’m not considering design patterns, continuous integration and deployment, or something like the “Well Architected Framework” https://d1.awsstatic.com/whitepapers/architecture/AWS_Well-A... (not too AWS specific) as the stereotypical whiteboard algorithm type of questions that I keep hearing about but I have never had to endure.
If the typical school is teaching software engineering and not just theory, I find it amazing that graduates have never heard of unit testing, automated deployments, or even how to use git for source control. I end up having to come in as adult supervision for both types of developers - boot camp or recent graduates.
I think that broad knowledge of CS theory is useful, but I agree that being able to replicate specific algorithms from memory is not particularly helpful.
In fact I think that FAANG style whiteboard interviews are one of the worst interview systems ever devised.
>If the typical school is teaching software engineering and not just theory, I find it amazing that graduates have never heard of unit testing, automated deployments, or even how to use git for source control. I end up having to come in as adult supervision for both types of developers - boot camp or recent graduates.
Almost every class I had required us to submit projects using github (they wanted to teach source control, but they also wanted to see version history to discourage cheating). This was at both a middle tier state university for undergrad, and a top 5 university for grad school.
I've also hired plenty of people who were bad at unit testing, but I can't recall ever working with a junior who hadn't at least heard of the concept.
Yes that's what I'm saying. Except for the very top tier programs, no one cares that you have bootcamp on your resume.
>Looks like Lambda school is 9 months now (I though it was 6 but perhaps they increased it). That is equivalent to a full academic year...whats your experience with Lambda school grads and are they objectively much better than one graduating from an in person one?
I’ve never hired anyone from Lambda school. I did spend some time looking into it when I’ve seen it pop up on a few resumes. The threshold for repaying tuition is 50k a year and it’s 17% per year for 2 years (capped at $30k). That’s about 3x more than what the OMSCS at Georgia Tech costs. And since you can get federal loans for GA Tech, you can have a similar income based repayment plan (capped at 10% of income above 1.5x the poverty level).
For an online course, that is way too much.
I also found that there’s a guy claiming to be the co-founder who spends his time on reddit arguing with ex-students.
https://www.reddit.com/r/learnprogramming/comments/8qopsz/if...
Also other threads with people claiming to be employees arguing with former students. Doesn’t exactly inspire confidence.
Couldn't Lambda School be one of those top tier programs?
> For an online course, that is way too much.
Lambda's co-founder recently tweeted that the number of applicants as grown six-fold in the last 3 months [0]. If their offering is such poor value for money, why is there such a huge demand?
[0] https://twitter.com/Austen/status/1111324507715690496?s=19
It's not. It's nowhere near selective enough to have a high enough percentage of their applicants end up at a FAANG company.
>Lambda's co-founder recently tweeted that the number of applicants as grown six-fold in the last 3 months [0]. If their offering is such poor value for money, why is there such a huge demand?
I have no idea whether Lambda school is effective, but number of applicants to a program with no upfront costs that makes big claims about return on investment doesn’t imply anything other than good marketing.
> I have no idea whether Lambda school is effective
Similarly, might an A/B test persuade you on this point? Suppose Lambda identified 100 applicants who met their admission criteria, but 50 were rejected at random, then Lambda reported a significant difference in the median income of each group over the next two years...?
To be a top tier bootcamp, a significant amount of your students would need to end up at FAANG companies because that's what top tier means, but you could run an effective bootcamp that wasn't top tier.
However bootcamps have a bad reputation because there are too many terrible bootcamps. Therefore to cut through that noise, as of right now, your bootcamp needs to be top tier.
>Is there anything Lambda could do to change your mind on this point? For example, suppose they submitted their graduates' CVs to 100 job ads, but for 50 randomly chosen ads removed any reference to Lambda from the CV, then reported a significant difference in response rate...?
Sure, assuming an outside independent group did the test, and you replaced 9 months at Lambda School with 9 months of equivalent experience, but that's not going to happen anytime soon. Reputation is just people's perception, and right now outside of a few elite bootcamps, the perception is that bootcamps in general are mostly a neutral to negative signal.
>Similarly, might an A/B test persuade you on this point? Suppose Lambda identified 100 applicants who met their admission criteria, but 50 were rejected at random, then Lambda reported a significant difference in the median income of each group over the next two years...?
Sure again assuming an independent group conducted this test, so I wasn't just taking Lambda's word that the recruits were rejected at random.
But what's the point of this? No test like that is ever going to happen.
Turing School can arrange loans for tuition ($20,000) and Lambda School’s students almost all pay via an income share agreement, where once they’re earning over $50,000 a year they pay 17% of pre-tax salary up to a maximum of $30,000 over two years.
Neither of their programmes are comparable to a Master’s in CS but they're roughly comparable to a graduate diploma or an assiciate’s degree.
Lambda School’ Front End curriculum
https://lambdaschool.com/courses/cs/web/
Turing School’s
Edit: a comment below pointed out that Turing isn't online.
And I wouldn't recommend a $200k degree to anyone either unless it's from an elite university where the signaling and networking is worth it. Also top tier universities almost universally offer income based financial aid.
You also might want to disclose that you are the founder of Lambda School.
Perception and reality often diverge--particularly when there is significant information asymmetry. Accreditation doesn't fix this problem, but it alleviates it by providing minimum standards and consistent metrics to allow more comparison.
Accreditation still feels to me to be in the perception category for the parties who are new to the process, just a basic gating... the hard stats for real-world performance indicate the industry perception and are going to align with actual expectations bar a shift in industry hiring practices or program quality.
Again, I probably agree with the hypothesis that the best grads of a short bootcamp probably had the skills to get good jobs regardless of attending or not...probably starting with some informal experience and the bootcamp took them from a 3-4 to a 7, or enough to get a pretty decent job.
And I totally agree with the advice to just skip the bootcamp and learn online for free. It's basically the same advice I give people who ask me about my experience. Therefore, I think the best solution would be to organize something within your community to engage with free resources together. Perhaps even pitch in small amounts of money to get a professional to review/mentor/help out on weekends or something like that.
You don’t learn how to implement various sort algorithms by hand in boot camps (oh weird, I never had to implement or work with anyone who had to implement one yet we all had to pass that during whiteboarding).
I’ve hired boot camp grads with success and failure. I’ve also hired CS grads with success and failure.
The number one quality that determined their success in my opinion was grit and passion for programming. Programming is always evolving and really hard to master without dedication, time and so much trial/error that you’re so pissed off by the 18th time of trying to solve something that they 19th time when you do solve it the high is so intoxicating you’re ready to do it again on the next task.
None of that is taught in a classroom regardless of its a boot camp or CS degree.
Meanwhile, at least in my case, schools don't appear to teach their students anything about figuring shit out. Students have to be hand held through a series of prepackaged projects that don't have any real context or motivation in the real world. Most importantly, they're never taught that programming is a skill. They don't understand that to get good at programming, they need to practice. Maybe most of them don't want to become world class programmers. But even a mediocre soccer player needs to practice dribbling. A CS student who just takes classes and doesn't write any more code than what is necessary is setting themselves up for failure, much like a fencer who only takes group classes and never practices.
If your goal is the fastest track to employment in any programming job, then web development/CRUD is probably the easiest route to get there, and a bootcamp is the most economical. However, you’re limited to only frontend web development or Rails or various js jobs. On the other hand hand, so many bootcamp grads have had astounding success transitioning from minimum wage jobs to 100k salaries in 4 months’ time.
A CS degree, on the other hand, is a long-term investment. Done properly, it sets you up for success for a wide variety of roles, and gives you hard earned understanding of the big picture that comes with years of studying. The blog post specifically advises you to hire CS grads (or grads with academic CS backgrounds) for anything remotely more specialized than javascript, like databases, etc. but, it involves 3-4 years of full time studying.
These are not substitutes each other: they are dependent on your goals! Each involves trade offs. Because I’m biased towards academic CS education, I’ll say this: tech is one the fastest changing industries, and I think it is crucial to be grounded in the fundamentals, not just for your future employability, but your overall understanding of CS and where your work fits in.
Also, while there are those that go from bartender to developer via bootcamps, a lot of people who do these camps have technical undergrad degees (other engineering, math, physics, etc.) and probably took as many math classes for their major as a typical CS grad.
And let’s be real...most developers, maybe especially at FAANGs, are frankly overqualified for their day to day job and aren’t doing much more than things they learned in a CS 102/103 class.
It's hard to say how it is in the large, but at Microsoft I do apply CS principles fairly regularly, use statistical tools, and think fairly regularly about different data structures and algorithms. A lot of this is due to working in performance-constrained environments. If that were not the case, then I would say the academic side of things would be less prominent.
I hear too many stories from angsty mid-career FAANG developers who do little more than write a bunch of Protocol Buffers all day, every day.
What I can agree to is that the job has significant challenges that a CS education does little to prepare you for. The interpersonal challenges. The challenges of designing large systems, forward and backward compatibility, the interaction of business and technical priorities, deployment, production safety, etc. And it makes little use of a number of skills that were very important to CS performance. I can tell you I've used zero graphics programming knowledge, little of my compilers course, very little of what I learned in my networks course (despite that I'm regularly called upon to write programs that communicate over the network). I've written exactly one proof since I started my professional career. In that sense, my CS program over-qualified me for the work. But I think it's more accurate to say that I'm differently-qualified, education-wise, from the field I'm actually working in.
I haven't seen differential equations, but sometimes calculus, probability theory and a basic understanding of machine learning and deep learning is needed to understand what other teams that you're working with are doing, or to analyze the statistical significance of an experiment that you ran.
At FAANG I often wished I knew probability theory and statistics better (instead of other things that we learned at my University).
However, I do jump between discussing if a trie is the right way to implement something, discussing whether the "simple" model should be a SVM or boosted tree, trying to figure out if we've covered the major abuse angles in our product, coordinating with all the other teams we're collaborating with, analyzing the experiment results, etc, etc.
Having at least some actual CS certainly helps fill in the gaps, even if it's not what I'm doing most of the time.
I wouldn't, either. But I've discovered that if I go about relearning it, it comes back very quickly. Having learned it before, I also recognize when I need to go relearn it, and what I need to know.
It's a lot better position to be in than having no idea how to go about figuring out how to solve the problem.
I'd wager that 90% of working developers _with_ a CS degree would not pass any of these tests. The reality is that the vast majority of software developers use little to none of this math in their professional employment. We really need to stop forcing people to get science degrees to order to be employed in engineering, it makes little to no sense.
I would far prefer to employ somebody who has a wide range of experience and knowledge over somebody who has churned out what is essentially the same CRUD web site anyday. Even if the job is to produce CRUD web sites.
One employee will just be able to produce what they have always done, the other will be able to look at the particulars of the problem, analysie it and potentially produce a product that is far more likely to meet the customers requirments.
Do you also prefer to pay the premium price that someone with a wide range of experience and knowledge commands? There is an even higher premium to get them to accept doing CRUD work for any length of time, if you can convince them at all.
> One employee will just be able to produce what they have always done, the other will be able to look at the particulars of the problem, analysie it and potentially produce a product that is far more likely to meet the customers requirments.
It seems like you're conflating "once had this knowledge" with "currently has this knowledge", this is only true for recent graduates, after that you starting forgetting everything you don't use regularly. I'd encourage everyone to go an khan academy for a refresher on everything they've forgotten since middle school, I'd even forgotten things I was extensively drilled in like long division.
I'd also strongly disagree that a comp sci degree teaches you to break down problems and come up with optimal solutions.
Thank you! It irritates me so much to see people refusing to learn just because it isn’t a sought-out skill listed in job descriptions.
Yeah I started out as a computer geek over thirty years ago in my bedroom doing assembly language. But anytime I spend learning anything at this stage in life is with the goal of making money.
Yet...I don't use much of any of this in programming, it's mostly just not applicable. Calc is vaguely useful in the sense that understanding at a high level what derivatives/integrals are is a good thing to know, but if you tossed an AP calc exam in my face I would fail it. The most important ideas there (rates of change) are not hard to teach without the rigor of calculous. You don't have to pass calc 3 to have an idea of rates of change or gradient decent. These are pretty simple ideas you can explain to almost anyone as long as you avoid math jargon and get to the point.
As someone who did not major in CS, and learned coding on the job, I find this particularly elitist and an awful attitude. I realise that I am behind the ball a bit on things like having memorised the space-time complexity of sorting algorithms, but I am filling these gaps quickly, especially when it applies to real world problems I face in my career.
I can't say for certain that I would be able to pass calculus, linear algebra, discrete math, and differential equations, but I think that I would. To throw some elitism back at you; I wound not consider any of those subjects to be anything except pretty basic in the realm of mathematics.
It's not elitism. I'm saying this as someone who tried (and failed) to get a CS degree after working in the industry for 4 years as a self taught developer. Math classes have a way of exposing deficiencies you never even knew you had. It takes years of study to gain the mathematical maturity needed to pass these classes for anyone with just a basic American high school level of education. And yes, they are quite basic in the realm of mathematics as a whole, which makes it all the more disheartening. It made me gain a whole new level of respect and understanding for the necessity of these skills, and how they simply cannot be picked up along the way in the same manner as coding.
They value what the degree unlocks for their career.
I think what you're saying is true, but the problem is that people hear success stories of silicon valley technology startups being founded in a dorm room at MIT and decide they want to have the same opportunity.
Can't blame them.
I Interviewed with them about two years ago, mainly bc I was looking for interviewing ideas for the team I directed.
The interview was good, but they definitely asked about CS fundamentals, and funnily they rejected me because I did not know enough of them hehe.
I held no grudges, because I wasnt tried to get somewhere, but I find hard to believe that someone without a CS degree will pass their interviews.
There's a certain type of "Bootcamp grad" that seems to fit well with my teams. Those people who got a degree and then found that they hated the field they worked in (biology, law, English teachers) have just come in and killed it for us.
I can't say, exactly, how that compares to CS grads, but I do know that every fresh Grad we've hired had to be hired on as an intern first to get them up to speed, while bootcamp grads were able to be productive from day 1.
Just my 2 cents.
1. Very hard, or...
2. So obscure that you can't find examples of doing it in the past
As an example I'm wrestling with now, I am trying to come up with a way to describe applications as finite state machines by evaluating their event streams and then evaluate with PCA across multiple of these state representations. That's something that doesn't really come out of anything but theoretical computer science.
One of my favorite interview questions is "how would you design a text editor?" Bootcamp candidates and recent grad candidates often struggle a bit. Recent grad candidates often jump into a straightforward solution like breaking characters into contiguous arrays by line. More experienced candidates take more effort to put the task into context. Is this a text editor for the web? Is it more geared towards editing plain text? Can we assume relatively frequent line breaks? The best candidates think of improvements on their own. One candidate suggested automatic saves every 10-15 seconds, and could explain the backend changes necessary to make it such that the saved copy was retrieved when the user navigated back to the page. Others talked about locality and caching when talking about optimization. This sort of question is more like a foundation, and the interviewer is looking to see what the candidate is building on top of that foundation.
Granted, this isn't to say that bootcamp candidates aren't good. Not being able to effectively answer those sorts of interview questions signals that the candidate is better fit for a junior role - which bootcamp candidates and new grads are probably looking for anyway. Realistically, probably only 20% of my university time was spent learning how to develop software - maybe 30-35% if we include club and personal projects and not just class assignments. A decent 40% on topics wholly unrelated to software development, and 40% was spent on more academic areas of tech not really related to writing code. The latter is useful and has given me a deeper understanding of a lot of topics (ML, Operating systems, compilers, network infrastructure) but probably doesn't add nearly as much value to my employer as coding ability. I can see how a bootcamp could teach someone to code as well as a new grad in 3-6 months.
The only useful skill I've picked up from all those classes, is grit and hard work. I've learnt how to put my head down, and grind my way to success. Useful skills to be sure, but I could have learnt that by doing literally anything. "Build a Facebook clone" would have taught me grit just as well, while also teaching me practical skills relevant to my career.
I see a lot of posturing about how college education isn't meant to be "vocational" and should teach you how to think, but I don't buy it. The free time I've spent volunteering at my college newspaper, and reading/writing philosophy, taught me far more critical thinking skills than the majority of college classes that I've taken.
Looking back, 80% of the value that I got from my college classes, came from the 20% of courses that are "vocational" and relevant to my career. If not for the resume-padding benefits of going to college, I would have been better off going to a elite bootcamp and then spending another 6 months self-teaching myself anything that the bootcamp didn't.
MOOCs are great but lack the physical contact which is so important.
Unfortunately most bootcamos make outrageous claims as to the job opportunities post completion, and also the quality is uneven. Both are serious problems.
or a bootcamp that focuses on these particular skills.
Universities imagine they are for people pursuing higher knowledge and not a job, and now this can be true again. Time to divorce universities from the corporate sector, there are enough programs to build now that enough tech companies don't gatekeep this way. On the culture side, technical leaders who hire also don't care because there is stuff to build.
If low level is really where you want to go, you can get comfortable with typical frontend and back end programming, and then as you become more comfortable, it's a short hop to GPU stuff, C/C++, and taking the academic stuff in MOOC's.
As an example, I just spent several days last week chasing a bug in C# code all the way down into the native Windows stack inside optimized compiled C and C++ code. While I do not expect a boot camp grad to be able to do it, I think they're perfectly capable of picking it up with time. But to do what I was doing, you had to have spent substantial time working with C/C++ debugging and be comfortable staring at memory dumps.
That's just not a good ROI on bootcamp time because most jobs are app development, not troubleshooting low level stacks. But since 4 year programs teach low level stuff, it gives those grades more career flexibility.
existing 6 month boot camps "can't" do it since they are just recruiters that create the pipeline instead of making excuses about it, 4 year university still probably not the most optimal either.
In some ways, 4-year university is actually the ideal place, because it allows you to to spend four years traversing a conceptual dependency graph in parallel without making it your life. Assuming you're not just partying it away, you're getting a bunch of other valuable skills, personal growth, network, etc. out of those 4 years.
I think MOOC's are the cheaper option. Bootcamps, even at 6 months, have an issue that it's really not enough time to cover basic algorithms, basic systems programming, basic circuit design, linear algebra and graph theory, advanced algorithms, then finally specialized topics. It's just too much and too subtle to blitz through. But MOOC's don't have that limitation.
> or a bootcamp that focuses on these particular skills.
Do these exist yet? Low level C, Assembly, Rust, we’re going to finish Knuth’s Concrete Mathematics kind of boot camps?