To be honest 95% of large corporate software development doesn't require a computer science degree. They are usually one form of another of CRUD application. The novelty is only that they need to support more than one platform or be web based. It's not exactly rocket science. And even scaling problems are basically common sense, not advanced maths.
To me this lack of training is more concerning from a quality point of view, and in software who says quality says security. But I am not convinced a formal computer science education teaches coding best practices either (but not having done one myself it is hard to judge).
You're kind of off-base. A formal computer science education doesn't really teach coding at all. You'll learn how to write code (hopefully) as a corollary to learning how computation works. At least in my program, there isn't any single course that's oriented around the act of writing code.
That may be true but it's not responsive to his real point, which is that you don't need to understand computation to build a typical line-of-business application.
Companies used to build LOB apps in Microsoft Access, and nobody believed you needed a degree to use Access (plenty of business people figured it out for themselves, just like Excel). Now nobody uses Access anymore, but the web frameworks that replaced it aren't that much harder to use, and don't really involve a lot of complexity theory or parser generators.
In some ways understanding computation actually undermines you.
Here's a true story, a few years ago I was a DBA on a large-ish Oracle database (~50T) supporting many users. One guy would run his report, and it would time out (in his client software, Business Objects I think). So he would run it again and it would time out. But on the 4th or 5th attempt, it would work! Why was this? I was curious enough to investigate and what was happening was he was gradually getting more and more of his working set into the cache, and eventually he had enough in-memory that his query could complete in time. Let me tell you for sure, that guy did not have any mental model of computation that led him to discover this. He just tried it and it worked. Would a guy with a classic CS education have done this?
While his solution worked for him, it also revealed a flaw that could've been a deal breaker if sales were demoing the system. Of course what constitutes a significant problem is often up to a nontechnical department.
It really depends. Mine had a whole lot of classes that focused more on the theoretical CS, but I had two different assembly language classes, for very different processor architectures, and I had a class on OO that, fr all intents and purposes, was about teaching practical programming. Different schools do different things.
One thing seems pretty clear to me though: If you let people that can't write code graduate, you are doing them, and your program, a disservice. The most theory driven industry jobs I have ever seen, and I have seen many, require coding competence.
That depends on your criteria. If one of them is to minimize the running cost of a program in production, then knowledge of CS will definitely help you achieve your goal. If you don't care about the running cost, then sure, lots of bozos can throw together a program that happens to achieve the business objective.
Also, let's separate the notion of the CS degree from the notion of CS knowledge. They are not one and the same. Many good software developers do not have a CS degree, but have taken the time to accumulate CS knowledge.
IMO, the rate of failure for software projects suggests it's harder than you might think. A degree is not a requirement, but required and useful are two seperate things.
Even "Best Practices" are very fluid. it's easy to add a lot of overhead that's unnessisary or to shrink past the point where current overhead is a good idea.
My belief is that the failure rate shows an immaturity of the field in general. For example, history is littered with many attempts at flight that today we find foolish and laughable, but back in that time they were probably genuine attempts. Much error eventually lead to sound principles that are applied today with great precision.
However I think that software probably falls in to two general categories:
* Stuff so generic that everyone needs one even if it isn't an exact fit. (Think houses, and standard things in houses <> Operating systems, basic information processing software of various types.)
* Stuff that is custom made or otherwise fabricated to an exact need out of an otherwise generic template. (Artisan works, and knowledge of customizing things that are more difficult to do correctly without basic concepts.)
Open source software as a public service (and a thing that academic institutions should be contributing with completely open patent free work) really fills the first of those categories. Security audits and security code should also be a government service (with multiple governments as well as public entities working in the open with audit-able logic for every security decision as a web of interlocking watchers).
> To be honest 95% of large corporate software development doesn't require a computer science degree. They are usually one form of another of CRUD application.
And that's exactly the sort of work which will eventually be easily automated away. The only real reason that it still uses people even now is that someone needs to select the refactoring menu items in a Java IDE. A smart company will use a better language, and have six developers delivering the impact of hundreds of IDE monkeys.
Maybe I'm reading too much into these articles, but it seems like people think that the individuals taking these bootcamps are all ex-baristas. I took one, and most people had several years of high-professional work experience, many of whom had undergraduate degrees in STEM. My current boss is our lead architect with more than 20 years of programming experience. He has an undergraduate degree in neuroscience. My father is a physician/oncology researcher. He has an undergraduate degree in physics. Skills are transferable, especially within the entire STEM bubble.
> “You emerge from a bootcamp fit to do an oil change, but not design a car,”
You emerge from an undergraduate degree with a permission slip to join the professional world. Undergraduate CS degrees aren't 5 year engineering programs. They are just your average bachelors like the rest of them. Your major is a demonstration of what you were interested in during college, not whether or not you're capable of being a a contributing member of an industry. The vast majority of the fundamental career knowledge is learned within your first two years. A couple years into my career in finance, my coworkers with English Literature degrees were impossible to differentiate from those with Finance degrees (those that made it that far). The reason isn't because the Finance major was entitled or less capable. It's because the two were equally capable, and the general industry knowledge plateau comes quickly before you start working towards some specialization.
"Undergraduate CS degrees aren't 5 year engineering programs."
It depends on where you go, really. Undergraduate "CS" programs are all over the place, ranging from programs that might be better called "IT", to ones that are basically just specialized math degree. A good marker, IMO, is whether the program requires a compilers course that actually requires that the student implement a compiler. Of course, I would say that, of course, since mine did. :-)
It also required enough math that I could've gotten a dual degree in math by taking (IIRC) two more courses. I was in calculus-based physics and ODE right there with the engineers, too. Where the programs diverged was when they started taking statics and dynamics (after physics), and I started taking compilers, theory of computation, and stuff of that nature.
> It also required enough math that I could've gotten a dual degree in math by taking (IIRC) two more courses
That's my point. I did a double major in Math/Econ with a minor in Applied Statistics. I could have switched 2 courses away from my Econ major and instead received a minor in CS. There are countless boot-campers that just didn't take enough 300 level courses to put it on their resume. Looking back on my degree and my career so far, I can't say I've used the phrase "generalized autoregressive conditional heteroskedasticity" in a context other than a joke or in conversations exactly like this. That's from Stats-3xx time series analysis. I worked as an equities trader for the first half of my career before switching to programming. It's harder to get more time-series analytical than that. Who uses that phrase? The PhD econo-quants and risk managers who spent a bit more time studying it than the 2 weeks I went over it in an alcohol filled second semester of my senior year.
I'm simply saying, undergraduate degrees aren't much more than a rubber stamp. Sure, you may have learned more about data structures than I did. We both probably took some form or another of graph theory, linear algebra, algorithm design, etc. What you learned in a semester of data structures, I'm sure I learned 95% of it in a year on the job. Similarly, if you decided to go into finance, I'm sure you could pick up all the meaningful parts of macroeconomics in a year. Because that information is USEFUL in the day-to-day. If you decided to apply to a job as an equities trader, you wouldn't be dismissed because you don't know how to implement a model you will never use.*
* unless, of course, you decide to work towards being a quant. In which case, you'll probably know more about it than I do in 2 weeks. * poof *, there goes the value of my undergraduate degree.
I went to a bootcamp, and I think people are way too fixated on the three month thing. You have to write code to get accepted to a decent school, so the students on day 1 are definitely not "straight out of Starbucks." For me it was 2-3 months of full-time study while I applied and got the school lined up (including pre-curriculum while I waited for my cohort to start).
The program itself was three months of intense 50-60 hour weeks. Then I continued studying full time for a month until I got a job. So by the time I showed up to work, I had put in ~7 months of full time coding.
Since then, I've still been going hard, as have most of my classmates. I've been working in two languages that I didn't learn at school, and using a third one in my side projects. Nine months removed from school, I still spend a lot of my free time studying whatever looks interesting to me at frontendmasters/egghead/pluralsight. I read a lot about programming, and listen to 5-10 podcasts each week on my commute. At some point the three months I spent at a bootcamp or the four years somebody else spent in a CS program are irrelevant. How passionate are you, and how hard are you willing to work?
I recently finished out a stint at General Assembly's Web Development course in Atlanta. I'm definitely not an average example of my cohort, though I would like to say that prior experience I brought in really drove up the "average" for many of my peers.
Of a class size of 17 people, many of us had jobs lined up before we finished while several were / are still taking time to "get ready"; There was only one who sort of remained clueless during the cohort, but in spite of that they have worked very hard to keep up in class.
The coding required to get into GA was minimal, and the interview beforehand was not very difficult-- the person I mentioned who was generally clueless actually blew through the admissions process (better than I did, in fact).
I'm not sure where it's appropriate to set that barrier to entry, especially given that most of the early material caters to someone with very limited knowledge-- it would have been interesting to see a course targeted at someone who already has a foundation in basic web technologies.
Living in Atlanta, I've had the opportunity to speak with grads of many other bootcamps both in Atlanta and on the West coast. The biggest difference I really notice is between people who were able/willing to work those 60/70 hour weeks to gain as much as possible and those who couldn't/wouldn't.
I was definitely in the top x% for some values of x. :)
Kidding aside, I definitely wasn't the best or the worst in my class. The variance from best to worst was pretty large, but that's obviously going to be true for traditional CS degrees or anything else in life as well.
This will always be a divisive subject and my opinion will likely be equally divisive.
For the record, I took a bootcamp over doing a master's in CS: the clincher for such a decision came when an engineer friend at a tech unicorn said he'd take a smart bootcamper over a regular CS grad on the basis that from hiring experiences:
- you don't use most of the stuff you learn from CS at work (when was the last time you proved root two was irrational, or used red-black trees on the job?)
- a bootcamper will write cleaner code and is less likely to have some of the stereotypical traits engineers are prone to having (e.g. takes feedback badly/doesn't communicate well/takes feedback badly) he attributes this to the more diverse pool of people boot camps attract
To be frank, I think the aversion to bootcampers primarily stems from individuals' need to validate their own life choices thinking things like "I studied CS for four years to become a Software Engineer so how could someone come close to playing catch up in 3 months!?"
But really this style of thought is flawed - people underestimate the fundamental value of doing a degree, which teaches you way more than just knowledge. Think how much less developed you were intellectually coming out of high school than post college.
With that said, it's also probably true that there are plenty of bootcamp graduates out there with an inflated sense of worth and companies that have hired/rejected poor bootcampers and now have a set opinion about bootcamps.
To these people it's worth noting that bootcamps have only been around for a couple of years, and as is the case in any good startups, the product improves as the companies grow and mature and have time to iteratively improve it.
Graduates from a bootcamp today are probably of appreciably higher quality than they were back then.
> - you don't use most of the stuff you learn from CS at work (when was the last time you proved root two was irrational, or used red-black trees on the job?)
Used them yesterday in fact. Then again, using red black trees and knowing when you need to isn't uncommon in kernel programming. I'd couch this more: you generally don't need to care about using red-black trees. Until you do need them that is. The key is knowing and realizing when that time has come.
Just thought I'd put my $0.02 in on that one as it is both my opinion and experience.
Though you raise (inadvertently) a related issue in mentioning kernel programming:
When asking a friend whether I should learn C, he posited:
Do you want to be a programmer or do you want to be a coder? If you want to be a programmer you should look at C at some stage. His stance being that "programming" involved writing lower level code while "coding" involved working higher level with scripting languages and frameworks. There was no value judgment in his use of the words programmer and coder btw.
So really it's a case of realising what you want to do with your code:
If you're interested in working on kernels, OSs or videogames then CS is probably going to be more useful than a bootcamp
If you want to work on building webpages and apps, a bootcamp could be a fast means of getting you onto the first rung of the ladder.
The world of software is large enough for both CS and bootcamps to coexist.
I always pose this slightly differently as developer vs engineer, but it's the same thought. You can be a developer that's only ever written JS after reading a few blogs trying to make your Wordpress site do something fun. If you don't know what a pointer is, or aren't able to talk about thread safety intelligently, or pick-your-example, you're a far way off.
I often press employees on this - it doesn't require a 4 year degree, but it does require years of education. You can be a developer the rest of your life, or you can continue to educate and push yourself.
I graduated with a 4 year degree and definitely had a head start on some of the more esoteric concepts, but I think it took 7-10 years before I was confident to call myself a software engineer.
Sure, I wouldn't tell anyone they need to learn C. Far from it to be honest. It is a rabbit hole of epic proportions. If you don't need to use it don't. But being able to drop down to C/assembly is sometimes the only way to fix problems.
If you're writing a web page though... I'd say you're nuts to use C/asm. You should still at least learn some C at least in passing but I'm also a freak that likes to learn a new language every year. I don't stick to them but its a good exercise I think.
The constants though are data structures and complexity, no matter what language you use those will always come in handy. Knowing when things turn quadratic is really useful. Or to be able to spitball how the tree structure you're using is going to fall down with N entries or traversals is a good thing to know.
Honestly, it's only a matter of time before bootcamps are made specifically for teaching the basics of algorithms and data structures, with an emphasis on acing interviews. Seems like the sort of cram school/career "consulting" that would naturally develop from the semi-dysfunctional interview process that tech has. And such a program would be beneficial not only for people without CS degrees, but also CS majors as well.
And that's the kicker, isn't it: software development has stratified a lot. I'd put and other low-level programming languages on one end, and IT on the other.
It takes a really special person who hasn't gone through a CS education to be aware that when faced with a problem that have an obvious solution, they realize that there are things they don't know and either seek out resources to learn them or identify people that can ask for help beyond a simple "I'm stuck, solve this for me!" response.
And that's why of you're a good software engineer, your job is secure. Because most people definitely aren't that and just end up making a real mess of things.
I think after a certain amount of time writing code you get a feel for that though, even without a CS degree. Anyone who's opened a terminal knows they don't know everything, but it takes a few iterations of shittily reinventing the wheel before you internalize it. After that things start to smell(?) like someone solved them and then it's a matter of finding the right chapter in a book or set of google search terms.
Do you think that level of independence and self awareness is restricted to special people or CS grads?
Is it so unlikely that someone who has earned a decent degree (which involved self study) and gone through a bootcamp to foster that behaviour in a software context may also have it?
I think the comparison of bootcamp vs 4years CS degree is not very apple to apple, because well, you compare on 1 side people who almost "discovered" programming 3 months earlier to people who have been studying it for 4 years + most of the time have had internships etc.
What I can say tho, is that, for junior positions (I guess one of the points of the article) those bootcampers can be 1. very good and productive, and because of the nature of the bootcamps, 2. usually very motivated and eager to learn, get feedback etc.
So if you are willing (and have resources) for some extra mentoring, bootcamps can be a very good additional pool for hiring (since hiring engineers is very hard is most places) and can be very good long term for your company.
I joined a YC startup after my bootcamp and continued to work my ass off there for a year (during work, and after work to continue to learn CS concepts etc.) and I think I can say I was successful there. I had good mentoring despite our size (3-4 engineers at most) but I eventually became a good asset to the company.
After 1 years, the company was sold and I needed to find a new job. I did well on multiple interviews, both startups and big cos (facebook and co) and am now very successful at a top startup in the bay.
You just need to expect what is expectable - I remember when I did my bootcamp, I was never promised to get a CS degree in 3 months - I was promised to learn the basics I would need to 1. be hirable at a junior level and 2. learn how to learn, to be able to figure things myself and continue growing.
That's what I got from it.
I think everything's the same - if you are motivated and driven to be successful, you'll be successful, if not, cruising through both a CS degree or a bootcamp won't do it.
I've interviewed hundreds of people, from bootcamps, new grads, masters, phds, experienced people, and people from each background have done from bad to great.
This isn't to take away from your success at all, and it's great that you're happy with the outcome. But I think there are some self-selection biases involved in success stories that go unmentioned, likely due to a lack of people asking the right questions.
Did you have a college degree before the bootcamp? People frequently mention you don't need a computer science degree, but plenty of places require a bachelors for standard office work. And having gone through a bachelors program might prepare someone for the "learning how to learn" aspect that's required for survival after the bootcamp.
Did you possess any prior technological aptitude(s)?
How much prior experience with mathematics did you have? Are you good at math, or able to understand it with enough work?
How strong are your logical skills, and how were they maintained prior to the bootcamp?
Anything else relevant? Autodidact? Connections to other people? Occupations of parents?
Also, having the financial resources to pursue a bootcamp as an option might also be indicative of something.
I think my point is that the promise of a bootcamp as guaranteed success no matter what your background seems uncertain without more data.
Speaking of self-selection...on HN, we're likely to hear testimonials from successful bootcamp graduates because -- assuming "success" equates to having a programming job and/or enjoying/understanding programming -- those are the type of people who are most likely to go on to visit and participate in HN discussions (though I know at least one bootcamp that tells its students on day one that they should be visiting HN's front page every day). While people who are dissatisfied with their experiences are just as/more likely to speak out about it -- I mean in general, such as a dining experience or App Store review -- they probably use another, more general forum for that.
Many of the bootcamps rely on this self-selection as an aspect of their admissions, to ensure their post-program hire numbers stay high. For example, having a technical interview with a high failure rate, followed by about 80 hours of precourse work, followed by another failure chance on a precourse test. Those that have the desire and ability to learn enough technical material to first pass the technical interview, and then complete the precourse work, probably would have figured out a good deal of developer skills on their own anyway.
Most of the good bootcamps are likely to be more selective for these reasons, but we also don't get to see the data published in a transparent way to prove it.
It's something that I think should be more open and verifiable, and that would include being able to verify that the published data is legitimate. Because it might help prevent against shadier operations who would obviously not release this data or attempt to fake it. If they're a for-profit entity, it's not in their interest to release accurate data if it were to be bad for business.
It might be in the interest of the best bootcamps to lead by example here to prevent the proliferation of scam bootscamps that tarnish everyone's image.
well yeah they are really select, but taking this into account goes in the same direction as saying that then it's fine to hire people from those bootcamp because the selection has already been made, right?
you are right. good questions. So I had a bachelor's degree, but from a business school which I don't think gave me any "direct" skills needed for it. Maybe some stats classes etc. but I feel like this helped me very little.
I don't think any of my jobs required me to have a degree and a lot of my current co-workers are self taught too.
I don't feel like any bootcamp guarantees success, at least no more than a bachelor's. I had a lot of trouble getting a job despite a good degree in Canada, and am now way more successful with a bootcamp in the bay area.
I'm not trying to say one is better, they are just different way of learning, different experiences and different length, so each work with different type of people I guess.
Thanks for sharing. I don't have a computer science degree so I find it interesting to hear.
And being in school for those years doesn't tend to make people more stupid, so maybe it had some effect. I think people underestimate how quickly some skills like math atrophy when they go unused, or even more basic skills than that.
It's funny to see such strong regional differences. Here, I believe it's normal for temping agencies to turn people away unless they have a 4 year degree (and a 2-year degree isn't considered valuable). I always get the impression that the Bay area is the most open to people taking this route.
It seems like most tech hubs are ok with that. Since early on I've been contacted by startups also from NYC/Seattle area.
I think it's like everything else, in areas where it's hard to hire engineers, companies will be willing to take open up their requirements... We're lucky in the tech industries, where positions and promotions are not based on degrees. Might be helpful for the first job but once you've got 1+ years of xp, it's all about what you can do, not your degree.
Most of my friends in other industries HAVE to go back to school for an MBA or other degree because their company "only give X positions to MBA". Stupid.
Not the OP, but for me, I'll be honest with you: no, I probably couldn't have. I was holding down a full time job, working part time elsewhere, and between two jobs, hitting the gym, and holding down something of a social life, I didn't really have the bandwidth to do anything else. I could have stopped working out and going out, but that would have cratered my mental and physical health. The bootcamp I went to let me put everything else aside and make that jump.
I did a bootcamp after having worked a year as a developer. A job I got by being self-taught. The advantages were huge. I got to learn how to interview properly, getting a feeling for where I was skill wise, have an awesome network of people who were also into programming, and have a clear roadmap for what to do next. Basically, a bootcamp can provide a lot more than just teaching you how to code. People forget there's a certain insecurity that comes with being self-taught that can be hard to shake off.
Not the person you asked - but I did it with those resources while holding down a more than full time engineering job (not in software). Most people don't have the drive to do it on their own and that's fine too. Getting guided through a 3 month bootcamp is a straightforward way of learning the basics of software development.
With that said, I can't say enough good things about developing the skills of self-education. I was homeschooled K-12, so I probably have a leg up in that department.
All really great responses already to this comment but to add one more - a bootcamp is a structured and trialled course. Ultimately this leads to fast acceleration in learning:
The topics you learn are current and high priority (e.g. learning to write clean and readable code while or testing)
Common issues are well documented/there is a support network in place - you hit diminishing returns on learning quite fast when you get stuck.
Yes, you could probably learn this stuff yourself but it'll take longer and don't underestimate the value of collective intelligence/group learning
Maybe. Not sure. I had nobody around me who had those skills to ask questions to, to help, etc.
One of the biggest advantage of those bootcamp is being surrounded by 1. teachers helping you, 2. other very motivated people offering help, people to relate to and peer pressure, and 3. a better curriculum to follow (since as a beginner you don't really know what's valuable to learn or not) and 4. help to get a job through mock interviews and intros to startups.
I did the 3rd cohort of Devbootcamp - which I guess was one of the first if not the first to at least work out and be successful. I was also very lucky to do this very early one (3+ years) now when less bootcamp were out there
Software development is not the same as Computer Science... Even then, it's a small part of STEM, and beyond that, how much shortage is there, really? In the end, I've seen far better results from self-starters that try than graduates with C.S. degrees that don't.
I think that there is a lot of arrogance in the software industry, and it tends to do far more harm than good. It bubbles certain mindsets and pushes out others. In the end, it does little for what's being worked on, and when good enough solutions that work are displaced by "best" solutions that come out months/years late and/or outright fail.
In the end, you can get a LONG way with pragmatic choices... you can go even further, with consistently simpler ones. The more complex something is, the more likely it is to fail when you need it to grow the most. Time and time again, people just don't see this. I've been guilty of it myself.
You don't need a C.S. degree, or a bootcamp, and honestly, if you do, you're probably not enough of a self starter to actually be productive, help and work with a team checking your ego at the door anyway. I'm guilty of this myself at times. But the debate is pretty silly. Nobody should go six figures into debt for a job that starts out at less than six figures. And nobody should expect to master anything in much less than a couple years.
What often bugs me more than anything is institutional resistance to anything new.
Okay, going to sign off this messy rant... I just find the whole debate the article makes irritating, as it's the people more than the process that determine success.
I like to think that software can actually be perfect, and that "good enough" is the mortal enemy of excellent. I agree regarding arrogance, though... I think it's insane to imagine that the insertion sort (for example) is somehow more innovative than the plane, train, automobile, or combine.
I think that you can actually get very far in terms of educating yourself with the materials and tools that are now publicly available. I'm currently spending a lot of time doing this, so I suppose it's an axiom that I've accepted.
For instance, I personally find Jupyter Notebooks many times more useful than traditional course notes. They're executable, they can be revisited and expanded upon, and they're actually used commercially... so you're killing many birds with one stone. It would be a very different world if the first thing you learned in high school was version control and Python, but it might actually be one worth living in.
Perfect is entirely subjective though... One software usage that I usually rally against is DI/IoC usage... most of the time it only adds indirection and complexity that hinder the development of an application and rarely help it. Time and again I see it used in conditions where there aren't multiple implementations of interfaces, and there isn't any testing at all. So it serves no purpose in these contexts, but is argued as "better".
That's just one piece, but one I've consistently come up against. There's also the more functional vs. classical (class oriented) approaches.
In any case you can come up with "perfect" is entirely subjective... and if it takes significantly longer, it's rarely the better option.. so long as every piece is modular enough that it can be ripped out, rewritten or replaced easily, and with that mindset in play... then it isn't even good enough.
> You don't need a C.S. degree, or a bootcamp, and honestly, if you do, you're probably not enough of a self starter to actually be productive
That really depends on how you're measuring productivity. I needed to get a CS degree to become a good programmer. Not because I'm not a 'self-starter', but because I self-start in so many different ways that I'll avoid becoming a great programmer and instead become a mediocre musician, painter, runner, mathematician, teacher, cook, physicist, biologist, historian, novelist, and programmer. Among other things. I love learning and mastering things. But I don't have the self-control to abandon everything else I love in the world to just do programming unless I've got a dedicated channel for doing that. That doesn't mean I'm not a self-starter.
What's valuable is the practice. In sports, in music, in coding.
The value of the CS degree, for the people that try, is that they spent the better part of four years coding something. As compared to someone that hasn't, and now it's the team's job to carry the slack.
"He’s skeptical of bootcamper applicants and is more inclined to hire four-year CS degree graduates, especially for the most in-demand positions: “full stack” developers who possess a range of coding skills. He compares the skillsets of bootcampers to performing auto repair on a car, versus the kind of large-scale, architectural skills of your standard CS degree holder, who can do everything from small repairs to making deep structural changes. “You emerge from a bootcamp fit to do an oil change, but not design a car,” he said."
If employers prefer actual CS degrees, they should be pushing to make obtaining said degrees not require people to go into massive amounts of debt. The "gold rush" might be part of the issue here, but the cost of bootcamp certs vs degrees is not insignificant, as the article states.
The best bootcamp curriculums, on paper, offer skill sets that college computer science/engineering schools would envy. I'm teaching some coding to university students now, some of who've gone through a couple quarters of the CS track, and am sometimes surprised when they have trouble with file I/O (opening text files, deserializing their contents) or lack experience with doing things like interacting with web service APIs or creating and running code outside of an IDE (if the CS track does the Java/C/C++ track). I'd be more shocked if that weren't my experience as a computer engineering graduate (though web APIs and products like Github and Sublime Text were not around in my day)...I don't ever remember running code outside of Eclipse or Microsoft Studio...when I worked professionally, an intern had to show me how to use version control.
That said, 10-12 weeks of "intensive" coding is only as effective as what students bring to it. If you have a science background, and have less instinctive shock at dealing with "symbols", rigor in language, and scientific hypothesis (or rather, knowing how to recognize the difference between a system error and and error in your expectations)...you'll undoubtedly benefit from being thrown into an intense course of learning devops and software engineering best practices. If not? You may be able to know and memorize the steps of complicated processes...e.g. how to deploy a Rails app from scratch onto a production server...but you might be likely to only adopt the skillset described in the article as "the same skillset that can be easily outsourced or offshored."
10-12 weeks is a short time to learn the ropes and get all the moving pieces together...but it is almost certainly too short of time to build the right mindset -- the kind that can properly debug. I've noticed that top-tier bootcamps that promise 90% to 100% rates of employment at $80K+ also have stringent acceptance rates, such that the vast majority of students they're working with are STEM graduates looking to get into dev. The outcome is probably significantly different for non-STEM students looking to do the same.
That's my experience with a bootcamp as well. I had the right mindset from attending an engineering school, but no degree / not living in the SF Bay Area / not having the structure and organization to put myself out there.
The faculty was also concerned about succeeding through the acceptance filters - if they couldn't make less prepared students successful, then expanding in order to accept more students is a really poor choice.
Bootcamps could be useful if students just use them to get their foot in the door at a truly entry level job that is basically a learning experience.
If you pay cash for a bootcamp and then work for $30,000 a year for 4 years on real projects, you would be a much more attractive job candidate than many people with an undergraduate CS degree, and you might even have some savings instead of massive debt.
The problem with "bootcamps" seems to be that some people think that they can short circuit the learning/experience process, which is just not possible. If willing to keep learning after the initial program, seems like it could be a good option.
I attended a bootcamp and was fairly unimpressed by the curriculum and general quality of teaching. The absolute biggest advantage of a bootcamp was that it held my feet to the fire. For the most successful students, it was pretty clear that the bootcamp was (pedagogically at least) not responsible for their success, rather mostly providing a space and opportunity to the kind of group work that is difficult to do alone.
At the same time, people are very arrogant about their CS degrees. I was very successful as a student in a non-technical field and it's honestly amusing that a student in a giant CS department at a random public university would think that they have a competitive advantage against someone like me in the workplace simply because they have a technical degree. CS majors don't have a monopoly on smarts and 95% of enterprise software development is honestly not rocket science.
The content of programming boot camps will eventually be moved to high school curriculums (I'm not sure if they currently do this in North America or not).
This will be a good thing. Students who were somewhat interested in programming (but not so much after delving into it) will have picked up some basic skills. Those who were very much interested in it will have to take less of a 'leap of faith' when it comes to a third level course.
It's like anything in life. You have enthusiastic people that have this vision in their head about becoming a software developer and joining a startup.
When the realities hit and they realize that some of it is mentally taxing and boring work, they give up and quit.
I've been writing software for 20 years. I haven't gotten bored yet.
In any boring task, I can always learn something new that's interesting.
What's with the assumption that you can only learn fundamental computer science in a classroom? If you go through a bootcamp and get a real job but never grow, that's not because you never got a CS degree, it's because you never took advantage of the Internet and a workplace full of practical problems and people who know more than you.
It seems like something in the middle would be a good idea. Low cost, 2 year program, sufficient to cover some theory — but CS only, unlike community college associate degrees today. Do we really need to pay $10,000-30,000/year for gen. ed.?
I see little difference between this and a community college degree. Community college CS associates can teach you everything you need to keep yourself up to date on basic algorithms and enough theory to get you ready for industry. It has the added benefit of also transitioning into a 4yr degree if you need it. All for about $20k. Some of the best engineers I know took 2 years at CC and then moved to a 4 year degree.
It really depends on the quality of the CC and it's faculty. I was a Physics major attending a branch university that merged with the local community college. The Phys dept was fantastic, though a single focus. The CS department was a joke.
I learned more about software on my own and by working with some of the physicists who specialized in data analysis that I did in any of my CS classes. Many of the CS junior/senior level CS students couldn't do anything real-world. Couldn't hand-optimize code. They also couldn't get anywhere without a fancy IDE that did everything for them.
The faculty wasn't very good. Some of them may have been OK at implementing the things they taught, but most of them seemed to follow the "if you can't do, teach" philosophy.
Had an argument with one of the faculty members about the viability of Python as a useful language. They dismissed it as anything more useful than a scripting language, and likened it to an uppity BASH substitute. I argued that when used properly, it is a very dynamic language with many uses.
All in all, the faculty was all over the board. There was a particular faculty member who was fairly skilled with machine learning and NLP. Until he went on vacation, joined a cult, wiped the NLP research server, and went around campus spouting how the planets were going to align the following December and life as we know it would end.
> Many of the CS junior/senior level CS students couldn't do anything real-world. Couldn't hand-optimize code. They also couldn't get anywhere without a fancy IDE that did everything for them.
So the student body wasn't top notch, which is perhaps to be expected at a CC (no entrance exams), but how was the faculty?
I'm a community college transfer, and seeing that 20k always reminds me how nice the California Community College system is. Completing an AS is 5K max, assuming you don't get 100% tuition covered which a large percentage do via BOG.
The best bootcamps are actually quite selective. This helps because it creates the kind of environment conducive to pair programming and learning. Community colleges are not very selective.
I agree. I don't understand why community colleges can't provide something like this. It seems like an opportunity for them to be something other than a pre-4-year college.
I took a 4-year CS bachelors program in 2-years (avoiding general ed requirements due to a previous degree.) It was actually a very rewarding experience.
>Do we really need to pay $10,000-30,000/year for gen. ed.?
General education is very valuable if you're not so myopic as to believe you already know everything.
As a former instructor at a bootcamp, there are some massive pros to the bootcamp model, but low quality programs will typically produce low quality producers.
Our program spent a considerable amount of time setting career expectations and preparing for interviews. High performing students would regularly find themselves landing mid-level software engineering jobs based on their interview performance, but we would try to maintain the expectation that an internship or a Jr dev position was really great. We saw some of our competitors get torn apart by past students who's expectations were higher than the reality of being a bootcamp grad. You can't tell someone they're going to make 100k/yr after 12 weeks of learning to code. People believe you, buy into your bullshit, and get burned.
With so many bootcamps popping up, consumers have a lot of resources and choices to find a good program. Low quality programs are slowly being edged out by the market. It's becoming more competitive, which I think is good.
Bootcamps aren't a silver bullet, but they help a lot of people get on a trajectory of a successful engineering career.
They also help with diversity, a lot of folks can't afford to get a CS degree, whether it's because they have an aversion to crippling debt, or they're a single mother who has to work full-time, or they just don't thrive in a university-style environment. I know a lot of really unique engineers that wouldn't have been able to have the careers they do without a bootcamp.
I think a bootcamp is pretty useful for someone who has no experience in development and wants to obtain it in a relatively short time frame.
Teachers come to mind here. Many of them encounter a LOT of difficulty when they try to find jobs outside of education. Many, many companies completely discount their experience regardless of the length of time they've spent in the profession. This essentially means that teachers who've been in the system for a while and are becoming disillusioned with it are almost forced to restart their career; this is very painful for those that have many, many years in the game.
A bootcamp is a great way of getting the experience needed to restart their career into a well-paying industry (for now). Yeah, they don't learn Big O or discrete math, but they do learn how to write an app that will make their founders a LOT of money if it sells, and that's worth a lot.
BTW: A lot of high-falutin places (like Jane Street, which I worked at a few years ago) care much more about your experience and what you've done than where you came from (at least on the development side of the house, which pays handsomely compared to market; the trading side still heavily recruits from the Ivies). I remember them hiring a few Hacker School type devs, and if they survived our interview process, that means they HAD to be good.
> They don’t have the fundamentals to pick up a new set of tools and technologies. Will they be bootcamping every 3 years?
Programming professionally requires constant learning even when your stack remains roughly the same. No one survives professionally on the strength of memorized rails g commands, and even if one did you'd have to be insane to want to.
I'm sure some people muddle through bootcamps who really don't have the desire or ability to always be learning, but, at least at quality schools, they're in the minority.
(Disclosure, I'm a bootcamp product who had previously been learning on my own)
A tiny bit off topic, but I keep thinking there should be a "Software Development" degree separate from a "Computer Science" degree. Less (but some) math, more process and communication. Lots of code.
Bootstrap programs seem great as an accelerator for folks who are inclined to otherwise be self-taught (of which there are lots). Others would make great developers, want a little more time or standard academic environment, but don't want all the math.
A lot of schools have a Software Engineering degree, which is more development and process oriented. Not sure if it's exactly what you're looking for, but it's one alternative to a CS degree.
I went to a top 5 CS university and liked what I received(and it wasn't too expensive with instate tuition), but I honestly think my time would have been better spent with something like Pluralsight(& similar) + newsgroup of fellow learners moderated by mentors + Github.
I don't like the idea of boot camps unless there's some follow through but I think it's very important for there to be good alternatives to the 4-year CS degree path.
Why wouldn't we want to train people to do the jobs that are being outsourced? Especially when the jobs that are being outsourced can be critical to a business and provide valuable experience to the workers that take them on? Gigs that I've heard are being commonly outsourced: machine learning (usually NLP), android development, QA (typically related to frontend)
This isn't entirely new. When I graduated in the mid nineties a lot of friends that took non technical degrees (history, english, psychology) did temp work and got "certificate" at a university which helped them secure work. They ended up doing pretty well. Of course the tech economy was just starting to take off back then....
To me this lack of training is more concerning from a quality point of view, and in software who says quality says security. But I am not convinced a formal computer science education teaches coding best practices either (but not having done one myself it is hard to judge).