I'm happy to answer any questions about this (I expect it to be controversial). When we started Triplebyte one year ago, I was pretty skeptical of bootcamps. Doing credential-blind interviews and seeing what some bootcamp grads can do, however, has won me over. Clearly there are a lot of bad bootcamp grads (and probably a lot of bad bootcamps). But the model is working really well at the top.
Can you discuss how you might test for bootcamps overfitting their curriculums to interviews? They definitely would seem financially incentivized to do just that. From a personal anecdote, someone I interviewed was able to code a solution for a problem, but then couldn't discuss how or why they did it that way at all, or solve a closely related problem, which made me strongly suspect that they just memorized an answer. How would you test for this?
I would also be curious to see if there was any way to breakdown bootcamp grads with previous programming experience vs. without and by what they studied in undergrad if they went to undergrad.
Interesting questions. Bootcamps are clearly incentivized to do this. However, they do not seem to be particularly good at it. Algorithms are over represented in interviews relative to most jobs, and yet (as our data shows) bootcamps are not very good at teaching this. Now, we are measuring algorithmic skill by asking candidates to actually implement non-trivial algorithms. We've observed that a lot of interviews involve what is essentially trivia about algorithms, and it's possible that the bootcamps are better at preparing students for this (we don't measure this skill so I am not sure). I think that this gets at the answer. If you make your interview go deep, it gets increasingly hard to specifically prepare for it, to that point where preparing is actually becoming a better programmer. Rather than a 30-minute question that covers knowledge of sorting algorithms (easily learnable), have your candidate spend an hour building a collision detection systems using a axis-sorted list of rectangles, and reason about maintaining this sort as objects move around. That's the theory. In practice there will always be some noise.
Do you think there's a correlation between "bad bootcamps" and "bad bootcamp grads"? I assume you can get good grads from bad bootcamps and vice-versa.
Our dataset is not large enough to really answer this. My opinion is that quality of the bootcamp (how selective they are, and how well they present and motivate students) has to matter.
Do you have any date on job performance? It seems to me the complete lack of algorithms is a land mine for any project. I think it is a lot more likely a coder with little fundamentals will be able to grow or see the bigger picture.
I agree that not all jobs require this skills, but then suddenly you get a divided workforce with designers and implementers.
> It seems to me the complete lack of algorithms is a land mine for any project.
If you hire someone and release them into the wild of your codebase, that's a failure on your part not theirs. New hires are an investment, they shouldn't be treated as an immediate need-based solution. My experience in two fields has shown me that new hires are a drain on resources for a fairly significant time period, regardless of their background. If you're not doing everything in your power to educate your new hires and get them up to speed, THAT'S your landmine. It's your job to get them to learn the fundamentals if they don't have it.
> when I was a new grad I started on the codebase more or less right away
I did as well, but...
> Didn't even have code reviews back then.
Not so much this one.
> If you have to train them, then it seems the coding part should be cheaper then the algo part.
I do actually agree. But there tends to be other aspects of the job outside of just code and algorithms. Prior work experience is a shining star compared to a 22 year old in any field. I see my coworkers more than my family. Someone that has a full understanding of everything that goes along with that has a head start across the board. Someone changing careers in their late 20's also tends to put a hell of a lot more into improving themselves than just the basic progress-of-life learning. I just think it evens out as long as you're consciously hiring people for the right role.
I don't know, we pay people to do a job. Sure some coworkers become friends, but most don't. As long as people are somewhat easy to get along with I don't think we should focus too much on other stuff.
I wasn't implying that they should become friends. I meant that the working world doesn't tolerate the "I'm definitely right" mentality that comes with God's greatest gift, the 22 year old college grad. I'm joking about that last part, but there is a certain tact that only comes through time. A 25 year old is much more willing to say "I'm wrong, and I have no idea what I'm doing" than a 22 year old. This alone is a huge productivity boost. Both technical skills and soft skills can be learned, and I'd argue both are equally challenging.
Eh, I disagree with the generalization that all new hires are a drain for a significant time period. In my experience, the rate at which they come up to speed is extremely varied.
Were you able to see any patterns in the backgrounds of the bootcamp students?
It doesn't seem too surprising that someone with a physics or finance or mechanical engineering background can learn enough programming skills in three months to be productive. But do students without as much prior experience in quantitative and analytical thinking have as much success?
We see about a 50/50 split between the two groups. (Of course a lot of the people without a technical background are still analytical thinkers. There's probably pretty heavy selection bias for that)
I think a well-run bootcamp is a better coding education than college computer science. The only thing most grads have on bootcamp people is algorithm knowledge. This is easy to fix. Just teach algos in bootcamp. It really isn't that hard to understand.
Ideal bootcamp:
-css/html/javascript
-angular or any mvvc data mirroring framework
-OOP and ntier patterns
-Stored Procs/ORM/SQL training
-Algos
-Webservices SOAP/REST
The college grads I work with tend to have written a couple shitty programs that don't really do anything, and their "final project" was hooking up a database to a business logic layer.
source: I have taught in bootcamps before and work with lots of new college comp sci grads now.
How long is a well-run bootcamp? Getting a CS degree takes many, many hours of course work, plus typically a bunch of non-CS course work. I'd think a college grad would (should?) be much better rounded. That depends a lot on the quality of their CS program, obviously. What you describe college grads doing sounds more like a 1-semester high school CS class to me.
A CS degree takes 4 years, two of which are usually not related to CS at all. Still valuable stuff to learn, but also a lot of bootcamp students might already have a degree in another field so they already have the gen eds out of the way. The remaining stuff in a CS degree, only some of it will ever be directly relevant to what most programming jobs entail. Sure, you may end up in a job where compiler design comes in handy, but most people won't. If you focus on just the parts that are going to be relevant to most programming jobs, you may need a program a bit longer than the current bootcamps but much shorter than 2 years of CS classes.
If I were put in charge, I would make it 6 months long. I could definitely teach people how to write coherently designed CRUD apps in 6 months (ie. 95% of all programming businesses in the wild).
In another comment I wrote that bootcamp-trained developers are learning to do jobs that will be automated soon. It's interesting that you mention teaching them to write coherently designed CRUD apps, because my company's product is a tool that writes a coherently designed CRUD app based on querying your database schema. Using my company's product, I can spend 15 minutes to do the job that you spent six months training someone to do.
It'll do the job better too; this isn't a simple Ruby-based admin app that gets generated. We generate a feature-rich enterprise-class system with both Windows desktop and web-based UIs, that could be deployed into production as soon as the code generation is complete. (Typically there's customization work done before deployment, but for a lot of tables that's not necessary.)
That's cool you made that app - but you are still going to have to have people think about the architecture, manage servers, maintain the app, implement custom business logic, talk to business people, etc.
I feel like a common theme on this comment page is that bootcamp people are trained to do XY - therefore they cannot do Z or learn Z quickly. People who are actually into computers will learn all the other computery stuff on their own. Things like compilers, how RAM works, heaps, stacks, sorts, networking, security, etc. Just because you are only taught how to make a CRUD app with modular principles doesn't mean your learning will stop there...
I guess this argument is very personal for me because I came into programming without a CS degree. I taught myself all the fancy tech guy dick swinging bullshit by myself by guess what - wait for it - ordering CS books on amazon.com and learning this shit myself. It's not that hard. Anyone who is capable of abstract thought and has a little bit money and time can learn all this CS stuff on their own.
People with the academia mindset of thinking they know so much more than everybody else are doing themselves a disservice. This line of thought will only lead to boxing yourself in because you have only been taught to do things like a horse that has been broken to run races. I personally think people who have experienced hardships and not had the silver CS spoon in their mouth make much more well rounded programmers than the typical CS dick waving upper middle class white guy that seems to be so pervasive in all the companies I have worked for.
I learned software development the same way you did; 34 years of programming experience, with just 19 as a career professional. I got a BE in Mechanical Engineering, not CS, and didn't plan to become primarily a programmer until most of the way through grad school.
My problem with "bootcamp people" is really restricted to people who are choosing a bootcamp over college or on-the-job experience, with the expectation that they'll be able to do the same job for the same money as someone who has a CS degree, or a similar level of self-training like you and I. I have an even bigger problem with managers who would choose someone with bootcamp training over someone with deeper knowledge simply because the bootcamp person is cheaper and seems 'just as good'.
Regarding the app: you're absolutely right. Generating the code is just the first step. The value we provide is in giving you a multi-man-year head start and a solid foundation, so that you can spend your time on higher-level business-oriented requirements instead of all of the basic functionality. (My profile has a link to our website, in case you're interested. Lots of info, some video demos, and a free trial you can download.)
> The only thing most grads have on bootcamp people is algorithm knowledge.
"Just teach algorithms." Do you have two years to spare to do so? Because I'm a platform engineer and I regularly use the extent of my CS mathematics education to write better code--you'd think this'd just be Ruby slinging, "what sort of math do you need to automate systems", but it ends up being remarkably more than that! But you know what else I use, while doing my day job? I use the lessons from my economics courses. I use the lessons from my sociology courses. I use the lessons from my political science courses. Are you gonna bootcamp those, too? Or are you going to turn out a marginally skilled worker with a worse educational foundation?
The only thing a civil engineer has over a carpenter is physics knowledge. Obviously.
Don't get me wrong: bootcamps are fine for some purposes, but in my experience they (and there are certainly exceptions in that experience, though rare--I'm thinking of a couple mid-career switches here) turn out mostly-employable workers with a shallower improvement curve and a relatively low ceiling by comparison. There are definitely roles for which I'd hire most of the folks I know who've gone into tech via boot camp classes. But, in my experience, those roles tend to be ones that are more junior than I'd other expect for their tenure and unless I need immediate productivity (and why would I be building a pipeline where I need that, but not the wisdom that comes with experience?), I will prefer somebody who is educated and not merely trained. Code and "coding" are stump-dumb simple and filtering for those minor applicative skills would be a disaster. Because I can teach skills, even if it requires an investment of effort on my part (heaven forfend!). I can't, practically, teach how to think.
I like your post and agree with most of what you said, except about the algorithms. I don't think you need 2 years to teach them. You need a highschool level understanding of Math and about a week. Obviously this varies from person to person - but I learned them extremely quickly.
I think where we are not seeing eye to eye here is that I envision a bootcamper that has a high aptitude for abstract thought, can read quickly, has a good understanding of math, and is motivated to keep learning and read books outside of "class".
If we are talking about two people who both do no outside reading other than what they are assigned - then yes, the college grad will be more prepared for abstract ideas/thought. However, if you take an otherwise smart person who reads lots of books and can learn things on the fly - then I think the sky is the limit.
If you seriously think you can learn, with any amount of rigor and understanding, algorithms in a week you're absolutely delusional. I think that you would struggle to teach recursion including time complexity and practical applications in a week, and that's not even getting into simplex, dynamic programming, minimax, flow, etc...
We aren't talking about "the algorithms", and to be honest the way you keep referring to "algorithms", rather than a phrase like "algorithmic thinking", is indicative of the real disconnect here. Spewing quicksort at a problem is easy and doesn't require one to really understand it in the first place, and if that's why I said "two years" I'd be totally an idiot. But it wasn't. Two years of instruction is for the mathematics and logic to understand algorithmic thinking at a level where you can reason about problems and approach them from a compositional, mathematical perspective--and that is invaluable when your problem is more than "order a list to splat into HTML". It's not high-school mathematics at all, except for the ten-thousand-foot-view.
I have yet to meet a--what's the phrase that everyone loves, "autodidact"?--who was as comfortable with higher-order computational thinking as many of the people I've worked with. Hell, I wish I had more of a mathematical and CS background than I do. Paxos and the like are still really hard to me!
Rote memorizing algorithms is definitely not the same as understanding why and how they have their specific properties. When you can just use them as-is, it'll work, but without that understanding, tweaking for your specific use case will be hard.
> I use the lessons from my economics courses. I use the lessons from my sociology courses. I use the lessons from my political science courses. Are you gonna bootcamp those, too? Or are you going to turn out a marginally skilled worker with a worse educational foundation?
Every single person in my boot camp class had a college education. One person was a college professor prior to attending. Several people actually had CS degrees that they felt didn't prepare them to do actual practical programming. We also had a lawyer and a couple of people with mathematics and physics degrees as well.
That hasn't been my experience when working with or attempting to hire bootcamp grads, but I'm glad that it happens in some cases! I've seen a lot of HS-to-professional types, some with some college and some without.
I've been in one bootcamp class so my results may not be representative :-).
However I also get the feeling that being a developer has become more visible as well paying, in demand job similar to being lawyer was a decade or so ago. A lot of people wanted to be lawyers not because they were passionate about law but because they knew they could make a lot of money.
I get the impression that many people are drawn to boot camps by ads along the lines of "Make $XXk+ being a dev in X weeks" as opposed to being interested in the field.
The bootcamp I went to (app academy) actually had free algorithm lectures for this reason. While it was helpful, I'd say that it's difficult to teach beyond a skin deep level since algorithms can require a math background that many grads don't have. I'd hoping to learn more algorithm stuff on the job (bc I want to work on stuff like computer vision) but to be honest in my 8 months of web dev work I've only had to think about using an advanced data structure or algo once.
I think that both college and boot-camp styles of training have their place. I'd think my default inclination would be to want to hire the CompSci majors to do the deep-scope planning/figuring and use boot-camp hires to do the grunt-work of supporting that vision.
It's important to note that this is just my initial inclination. I have no expectation that there won't be instances of boot-camp hires being better than CompSci hires in cases. It really comes down to the particular person, and hopefully any hiring process would do a decent job of evaluating each person.
This just isn't how software is built in practice. Engineers make dozens of architectural decisions every day. They may feel like small ones, but over time they add up to a whole lot of surface area. The skills you learn in Computer Science provide a whole lot more context for your decision making when actually building things. Bootcamps, at least from the folks I've interviewed so far, simply don't prepare their graduates to do real work. This is particularly true when it comes to data structures and basic algorithms. Two really key fundamental knowledge areas if you're goal is to build actually reliable and relatively efficient software.
This isn't to say that all CompSci graduates are good programmers (clearly they are not). It also isn't to say that everyone coming out of a bootcamp is bad (they are not, I recently hired my first). But when painting with a broad brush bootcamp's right now seem to mostly churn out students who are sort of comfortable with syntax and very basic logic, but not much else.
I'd be interested to see this article go farther. What do these cohorts look like in two years? Does that fundamental knowledge gap hold those bootcamp graduates back? I suspect it does, but I have very little proof but my own intuition. I'd love to be wrong.
> Engineers make dozens of architectural decisions every day.
> Two really key fundamental knowledge areas if you're goal is to build actually reliable and relatively efficient software.
I would challenge you on this, and suspect that you're looking at a relatively thin slice of developers: can you clarify why you believe this to be the case. As a counter-example, a lot of modern web development is building frontends (mobile or JS), where good code organization matters, but systems architecture doesn't matter so much.
I've been building web-based frontends for my entire professional career, and my systems architecture skills have been invaluable throughout. Web frontends don't stand alone; they run on server, they make use of networks and networking hardware, they talk to other services on the same server and other server, and they interact with the operating system. Being able to understand all of those moving parts is crucial to producing a high-quality frontend that's not going to fall apart as soon as it gets put under stress, and that will be maintainable and extensible over time.
Can you clarify why CS skills are necessary, vs the ones you learn in bootcamps (which I would guess are much more specific to this use case)? I agree they do all these things, but in a way that can be taught quickly and is mostly learned through experience, no?
at what? assessment here would likely be highly task specific.
lines of code?
first pass code quality?
understanding of architecture?
ability to link user's handwaving to functional product?
To be clear, I agree with you, I just think there are tasks where the CS grads would generally win and those where the bootcampers would win as well rather than looking at this as an overall population comparison. No one size fits all, as others mentioned, its all about identifying your need and filling it with the right person not just the right education.
I meant for "standard" developer positions: I would say far fewer than 10% of developer positions require skills such as knowing how to code quicksort, or knowing the CAP theorem.
sorry but this will inevitably come off as pedantic...knowing how to code quick sort may not be germane how to apply quick sort, what quick sort does and why, and how to evaluate whether quick sort is appropriate are all nested within that 'standard' developer archetype in different ways. Not saying you aren't true, just trying to argue for a less digital approach to interpreting or assessing education in the realm of hiring.
Pretty close. I don't talk about this in the post, but you are right. The college grads had more variance. You occasionally get a college grad who has been working on open source since they were 15, and actually looks a lot like a, engineer with 3 years experience.
In my experience, bad CS college grads can't code at all, and >50% are terrible programmers (they probably self select out of your interviews though). I would wager a "bad" bootcamp grad could put together a single-page app using some APIs, with relative success.
> This does not leave bootcamp grads equivalently skilled to university grads. If you want to do hard algorithmic or low-level programming, you’re still better served by traditional CS eduction.
Or, if I may suggest, a low-level/algorithmic bootcamp.
Judging from my own experience, spending some time through the start of Skiena's Algorithm Design Manual, with a side of Programming Pearls or Practice of Programming, would do wonders and easily outstrip a CS education. I'd say you could do it in less than 200 hours, which is about 3 weeks of dedicated bootcamper time.
Maybe dev-bootcamp should offer an optional extra module?
So triplebyte still can't infer anything about how well a software engineer performs on their job from the metrics that they are gathering though if they're basing performance on how well they do on their coding questions and interviews?
there is a simple confounding variable here that unfortunately triplebyte can't touch with a ten foot pole...age/work experience
College is largely about transitioning children to adults (we can argue that separately) the personal and professional development that students go through over 4 years is vast. They are becoming adults in many frames, including understand the world and technology as systems. They aren't just learning to code, they are learning how to think.
To the extent that I know (warning: anecdata) Bootcamps presume a lot more worldly knowledge, attract and expect more grown up students, get students with direct interest in web/software/apps, and are much more likely to get career transitioning students (from the people I know who have bootcamp'ed). They have a much broader knowledge base to build on which will help them in some areas and hurt them in others. I would be curious if Triplebyte has any data they can touch at all looking at that.
Simply said...a 22 year old college student with a CS degree and a 35 year old BC grad may look similar on metrics but function entirely differently as employees in both the short and the long term...caveat emptor, figure out what you need.
I think you may be making a faulty assumption that Bootcamp means the candidate didn't go to college. Many, many bootcamp grads DID go to college... just not for CS.
sorry if it reads that way, I was intending to communicate the opposite actually, that BC students often had gone to college, and/or had other careers, just not in CS.
I think there's a great opportunity for bootcamps to help people like me. I'm currently a pre-sales professional, and have been for a few years now. I'm closing in on 28, and while I've been served very well by developing product expertise, my background isn't in CompSci, and I've never actually formally learned to code. If I want to be a good Solutions Architect down the line, and I certainly do, this could be how I bridge the skill gap.
Sure, I could learn most of what I need to know on my own time, but this might be a great way to get it done quickly in a batch and then move on to applying it in a very practical way with my customers.
Among developers, there are unkind terms used to describe people who call themselves "Solutions Architect" who have no development experience. "Architect" itself is often used as a derogatory term.
In my experience, "Product Manager" is a much better term for someone who's responsible for and guiding the development of a software product, but who doesn't have the technical skills to do the development themselves. Architects who are respected earn that title by working to gain lots of experience doing development.
> Point is, I don't think Bootcamps and Colleges are comparable.
This is the key takeaway here. I'm working with a bootcamper now and the experience has been pretty bad. But it is a fairly large app, I think it's difficult for him to grasp all the parts, how they connect, and how his changes impact everything else. He can code and make things work, but that's it, we have to make big changes to almost everything he does.
A bootcamper who can focus on HTML, CSS, and some simple code would be fine, until they get some more real world experience. In my opinion college vs. bootcamp education are probably the same after a few years of experience if the person is a motivated learner.
Absolutely. I'm glad to have been hired by a company who had experience with bootcampers before.
They gave me a smooth and solid ramp-up to the mid/senior I am now.
Being thrown in on the deep end with the expectations that the guy with 3 months experience is somehow wellrounded with the basics of CS is just foolish.
Also, of course, not all bootcamps are equal, nor are all students.
We have some Node projects and we have a couple of bootcampers on our team who were hired for those projects. We also have a CS graduate who had no Node experience coming on. After a couple of months the CS grad just totally took over and led contributions on the projects. They could do more advanced things that the bootcampers have never had experience with. (Things like writing modular code and data traversing/parsing == algorithms and design).
We don't expect every applicant to be good in all those areas, and we let them pick in which area to spend the majority of the interview. I totally agree with you that no one has all those skills (except of course our esteemed interview teem!). We explicitly look in all those areas so that we can find people who are great in all sorts of ways.
> If your interview includes Practical programming, Web system Design, Algorithms and Low level system design...
> What in the nine hells are you hiring for?
Someone who can solve a business problem effectively.
It's not too difficult to shove data into a database, pull it out, and render it to a screen. Nor is it too difficult to pull data out of the db and send it in JSON format.
What do you do when your the performance of your API server doesn't meet customer demands, or you get written up by re//code and get a 1000x spike in traffic?
Let me turn the question around: if you can only hire one person, why would you choose a bootcamp graduate over a CS graduate?
------
Personally, I think the idea of bootcamps are great, and I root pretty hard for anyone who wants to better their situation by going back and learning a new set of skills.
But I have to be skeptical and look at the bootcamp craze, like the outsourcing craze from a decade ago--a way for companies to hire cheap programmers, and a way for bootcamp operators to cash in on the unmet demand.
>Had it been for a trucker position you'd be asking for "driving license, laws and regulations, engine design and car physics".
There nothing wrong with a trucker just knowing "driving license, laws and regulations", ... as long as they don't mind being laid off when there's no longer a need for that skill.
You're essentially arguing that it's okay to be a one-trick pony. It's not.
1) IT and the software industry change too fast for that to be anything other than career suicide. What do you do when your tricks become out of date?
2) You're competing with all the other one-trick ponies out there. There are a whole lot of them and that makes one-trick ponies an easily replaceable commodity. Yes, yes, everyone's replaceable in theory but its best to minimize that as much as possible.
So basically, the guy who builds a rafter is a woodworker, the guy who nailed the rafter to the structure is a woodworker and the guy who made the dining room table is a woodworker. Each guy is important, but the skill level and education time are different. Not every rough carpenter needs to have an extensive education in fine carpentry to be successful in their area of woodworking.
I think one key aspect that is missing is that boot camp graduates aren't straight off the barista lineup. I took one at age 28 after having worked in a technical role in finance since undergrad. The average age of my class was probably 29. Beyond just time in the workforce, I had a double major in math and economics with a minor in applied statistics. Had I dropped "Behavioral Economics" and taken "Data Structures" along with some other random course, I could have switched my Econ major to a minor in CS. Many people in my class were of a similar background.
Good point. About 50% of the bootcamp folks we work with have some sort of technical background before the bootcamp. The other 50% do not, however, which is really interesting! (I have no idea how this compares to the bootcamp population as a whole. I would guess that folks with a tech background are overrepresented in the group that passes our screening step)
Definitely. I had a wide range of classmates. We had several people that were project managers looking to gain some technical knowledge/communication skills. They had no intention of becoming programmers. A good chunk were designers who had html/css knowledge that were looking to expand their reach. A couple were a drain on my education. My greatest criticism of the programs is that it's an educational boom, so there isn't a stronger filtering process in place yet.
It depends on the school. Some bootcamps have very low acceptance rates to keep their placement numbers high - as that is their main marketing point. They bring in people who can demonstrate they already have the mindset but don't have the knowledge.
Other bootcamps just need you to be able to use your computer and you're in.
Right, all else being equal I would expect bootcamp grads to be significantly more valuable than CS majors, since presumably they're also experts in design, marketing, product management, or some other area.
In addition to being able to contribute in a non-development capacity, even in terms of software being good at coding is probably at most 20% of what makes a good developer.
Being good at coding, in the sense of making robust software products that can stably support components of a business, is way more than 20% of the value of a developer.
Additionally, in my experience, it's way easier to teach non-development skills to thoughtful programmers than it is to teach adequate programming skills to thoughtful non-programmers.
Some of the best designers, managers, product analysts, business intelligence analysts, marketing strategists, and client engagement managers I've ever met all came from heavily theoretical CS backgrounds and spent a lot of their early careers mostly coding.
Understanding the interrelationships between business components and business needs often has many similarities with designing quality software. And many of the pitfalls of software (e.g. monolithic classes, no separate interfaces, no solid tests) are directly analogous to non-software organizational problems as well.
Plenty of people who gain technical credential through a bootcamp will go on to do a great job, and their other skills will be of tremendous value.
But it just seems absurd to me to try to make some kind of rank ordering between bootcamp grads and CS degree holders. You're discounting just how highly effective CS degree holders are at translating their very general skill set into other domains of work. Generally speaking, they are very good at this -- so good that it's often threatening to non-technical people who would prefer if there was an easy stereotype suggesting that CS people should be siloed away from non-tech work.
> Generally speaking, they are very good at this -- so good that it's often threatening to non-technical people who would prefer if there was an easy stereotype suggesting that CS people should be siloed away from non-tech work.
It's almost like having a degree in abstract thinking, designing systems, and discovering hidden requirements makes you good at designing systems to solve complex problems.
Which is what most non-technical work is. Taking an ill-defined problem, and defining+solving it.
That's a path I've been considering as well - had a lot of CS background, hated running Unix compilers instead of working with HTML & C++ (already learned some in HS) - so ditched the major. Went with English, which, you know, is another language 'n all. Got into the working world, still have tech savvy...
So to me I have to question the ROI of walking away from 5+ years of professional advancement and jump into software development again - by way of an in-person bootcamp. I'm not going back to a Uni or interested in online learning settings. However, I do recall the concepts and am certainly excited by the developments in languages and technology since watching some of the roots take hold.
Being a "creative" person who can speak "engineering" is one of my strongest, and often the most unusual of my professional strengths.
Have you heard of CAR (computer assisted reporting)? The field of data journalism requires people who are good at storytelling combined with technical savvy to be able to pull out stories from lots of (usually messy) data - http://www.poynter.org/2005/a-guide-to-computer-assisted-rep...
No I have not and I thank you very, very much for sharing that! I will most certainly look into it. I love the concept as you've described and if I've got an aptitude that sounds like the kind of stuff I'd wake up every day wanting to jump in and work on. Will check it out, thanks again!
I took a pretty significant pay cut switching from an equities trader to a junior developer. I'm more than happy with the lifestyle change. I still find it funny, given my life quite literally revolved around ROI.
Ditto! I went to a bootcamp after having worked in aerospace for 6+ years and, I had a mechanical engineering degree. I had programmed for a long time and had no problem with basic algorithm exercises (of the kind they spend the early part of these camps on). [1]
The problem is, there was no easy way -- for someone like me wanting to go into software -- to (convincingly) say, "Hey, I can code and think abstractly. Give me a chance?"
(If you're going to say, "just contribute to an open source project", there's actually a big gap between being able to code and being able to debug the zillion things that can go wrong in just setting up the builds for a given project. The Open Hatch project c. 2011 was specifically dedicated to helping people contribute, and yet following their instructions would still dump you in a an unnamed text editor with no way to exit.)
[1] Frustratingly, the instructors were very unhelpful at the stuff I needed help with the most -- forming a mental model of how and why Rails works.
> Hey, I can code and think abstractly. Give me a chance?
That's more or less all most CS graduates can say though. I personally don't think anyone is qualified to be a professional developer until they've been programming for several years (especially coding in an unstructured way).
I don't want to be combative, but what made you think you needed a bootcamp? I learned to program long before I went to college and was hired for programming projects long before I graduated.
That's the point -- I didn't. I just needed it to convince someone to give me a chance. Employers would assume someone still in college for CS can program, and so look there. They don't automatically make that assumption for some rando with a different degree.
To be sure, there were also probably some job-searching techniques that would have worked, but they're also hard to learn from reading pointers online if you don't automatically have the skill.
I can say with some conviction that I just did not have the self-confidence to be able to do this and pull it off in an interview without going through the bootcamp and (more importantly) meeting several employed junior developers who were significantly behind me in skillset and professional development. I was completely self-taught and had 25 years of programming-as-a-hobby experience behind me going in.
My problem was basically a lack of network and real understanding of my competition in the field and the bootcamp solved that.
I could have saved a ton of money had I quit my bootcamp as soon as I realized this, but I'm still okay with how things turned out.
that works both ways; you hire self taught because you are self taught, just like CS grads tend to prefer hiring other CS grads.
me, i have no preference when i interview a candidate... can you code? and can you solve complex problems? other then that i dont care about how you got your skills.
This was my experience exactly. Aside from helping me pick up a few concepts more quickly than I would have otherwise, I did it purely to get my foot in the door for interviews. It also was a good excuse to just focus on my portfolio for several weeks whereas if I had held a full-time job during this time, it would have easily taken me 4x as long.
It's a super expensive and wasteful way to do this, but I was optimizing for my time.
I worked in chemical engineering roles for 5 years before deciding to attend a bootcamp. It seems like a refresher/shortcut to get into the webdev or programming industry, so a bit myopic, but it at least gives the added advantage of reducing the amount of time traditional programmers enter and gain traction in software development. Sometimes we only know that we love programming when we hate everything else, at least in my case.
I think structured learning is useful for many - the sad part of being an adult is that for most people, their lives become driven by responsibilities instead by curiosity. Sure, you may want to learn programming (and maybe you even have a good economic reason for that), but there are always "more important" things that need to be done right frakin now. Some people are good at self-organizing and can cut out time for learning, but for many, having an external entity create and enforce a structure for learning is a good way to hack one's problems with prioritizing stuff.
Bear in mind that the tech job market is a lot different than much of the U.S. economy right now. There are fields where experienced candidates with strong resumes can go job hunting and hear crickets. To go from that to not really needing any formal credential is a big mental leap.
When I started work as a professional software developer 10 years ago, I had zero professional or educational experience as a programmer. I had a BA in Philosophy, and my work experience was being a substitute teacher.
I got a great job with my second interview. How did I convince them to give me a chance? I didn't contribute to open source; I just showed them some of my personal projects. I had written a web based baseball simulation game, and I just showed them the code. I did a quick interview, explained how I had taught myself to program as a youngster, and they offered me a job.
In my years since, I have hired people just like me a number of times. Show me some code, if it is good, you are hired.
I think a portfolio is a good thing and suggest it myself, even to people with the educational background. I try not to suggest it as a silver bullet and say it's easy for everyone.
The problem with suggesting this to people who are learning on their own is that building a portfolio takes time. Sure, if you're young and single, you could wait tables and learn to code. But it's more difficult to find the time as you take on more obligations with age.
The other problem is picking the right projects and languages that hold some appeal to the rare employers who will give you a chance. People are also less likely to cut someone some slack for sloppy code, due to lack of experience and knowledge, and other early coder problems.
The last problem is not being able to network successfully to find those less common employers who will give you a chance. And avoiding the bad employers who promise experience, but ultimately have them working as an on-call contractor who just reboots the printers.
Having any college degree helps a lot, but without it many doors remain closed even with a portfolio.
> Frustratingly, the instructors were very unhelpful at the stuff I needed help with the most -- forming a mental model of how and why Rails works.
I suspect that's because they didn't know how or why.
Rails has a lot of magic -- just follow the convention and it works. Magic can be good, because it encourages a standard. Unfortunately, many Rails programmers seem comfortable leaving the magic as a mystery rather than learning how it works and why it was designed as it is.
My first attempt or two learning Rails ended up this way, but I really got it once I had SQL down. In a/A we built our own stripped down, minimal versions of ActiveRecord and Rails. This ended up connecting all of the dots for me.
Interesting. I went through a bootcamp recently. We started with sinatra (a slimmed down ruby application framework), then went into rails, and lastly used node+express.
If we had only done rails, I'd probably have little idea how it worked, but doing all three definitely shored up some weak points.
It also helped that the teachers were genuinely knowledgeable and we had short lectures on deeper-level stuff (we had one hour lecture on how to build a tcp server from scratch in ruby, one on how the internet actually works - from the link layer up, and so on).
>I think one key aspect that is missing is that boot camp graduates aren't straight off the barista lineup.
It seems like everyone is forgetting this.
Since coding is becoming important for a tech driven World, no matter what our backgrounds are. We come in with whatever skills we've gathered from our personal journeys and then learn to code.
I think this misses a huge point: College is a huge factor in social development; This is extremely important not only for developing software on a team, but to developing a healthy lifestyle in and out of the workplace.
I don't understand. Are you implying that taking a boot camp means you haven't graduated college? Out of my class of 24, only 1 person didn't have an undergraduate degree. Several even had masters.
College is far from a panacea for becoming accustomed to how an adult lives and interacts with other adults. American society encourages taking on massive debt, moving away from a support base, and tying social interaction to practices that are often deeply unhealthy. It took me three years of attending myself to realize my mistake—it nearly drove me to suicide. Dropping out and actually trying to interact with real adults was what got me humming again.
I have a slightly more pessimistic view of the situation:
Sure, bootcamp grads can write a web application just fine; after all, it's usually only CRUD. But what value are they bringing to an organization? Why would I pay them the same amount as a college graduate who undoubtedly has more total knowledge not only in CS, but in other areas as well? Ideally, a college should expose students to a diverse range of knowledge, each tidbit providing additional value to an organization. If I just wanted an application constructed, I could offshore the job and get it done cheaper.
Yes, a well-run bootcamp might be a better __coding__ education than a computer science degree, but coding is the easy part. There are other valuable skills that aren't being taught (i.e. the ability to communicate clearly, how to do research, how to learn independently) that make an organization strong.
We aren't in the coding business, we're in the building business. Code is simply a means to an end.
Yes, but then I would argue that a mid-career switcher like me (bootcamp here - now employed full time as a programmer for 2+ years) brings a TON of value to your organization. Rather than a fresh-out-of-college person, I have a Master's Degree in my first field, tons of experience working with diverse stakeholders, meeting deadlines, dealing with people I may not get along with, getting to consensus, etc etc -- as well as a hell of a lot of domain knowledge in at least one large field. (In my case I have a Master's Degree in Social Work with a focus on policy research and statistics, but it could be ANY other field than just a CS degree). It's up to your organization to know what they need -- but sometimes what they need very well could be adequate coders that have a ton of other skills rather than people that know more algorithms but don't have any of those soft skills yet.
(Also, I had been doing HTML/CSS/Wordpress for a decade on the side before wanting to get into backend programming, many of my classmates had similar technical backgrounds with something...)
> Why would I pay them the same amount as a college graduate
These people ARE college grads. I'm not sure where this seemingly pervasive view is coming from. My class had 1 person without an undgraduate degree, and several with masters.
> i.e. the ability to communicate clearly, how to do research, how to learn independently
The average age of my class was 29. 6-10 years in the workforce tends to demonstrate an existing ability to do this.
Echoing this - my girlfriend, 29, just went through one and the average age was similar. Everyone (but her) had a STEM background / college degree. Abstract thought isn't exclusively taught in CS.
> It's a reaction to the question, "can bootcamps replace a CS degree?"
If someone is posing this question, it's not one based in reality. The question is 4 years of a CS degree vs a bootcamp, not 4 years of college vs no college. As I clearly stated, only one classmate didn't have an undergraduate degree. That question is a strawman at best.
I think it depends on the bootcamp. Some bootcamps do market themselves as college alternatives. I spoke with a bootcamp requiter recently and he attempted to convince me that pursuing a CS degree was a waste of time.
I think of bootcamp in the same terms of the finance bootcamp I took coming out of college. It was a 1 month program mandated by my employer as focused learning. Both have been supplements to my undergrad, not replacements. The ones you mention I see more as a trade school, which I think is a different and potentially viable career path. The reason I say viable is because:
"Autoregressive Conditional Heteroskedasticity"
It's my favorite terminology from undergrad. It's from time series analysis. My job coming out of college was as an equities trader. It's hard to get much more time series analytical than that, and yet I never used it even once. Had I gone into quantitative finance, I'm sure I'd use it constantly. 95% of us just use our undergrad as a permission slip to join the real world, CS included. They hand out those permission slips like candy. Most people end up as accountants, not mathematicians. You don't need to know parametric equations to calculate EBIDTA.
It's not a waste of time if it's something you're interested in and you're intelligent enough to use it. It IS a waste of time getting an engineering degree if you think it will give you a leg up on competing for a welding job.
I agree! In my class (I go to Holberton School) the average age is 29 as well.
I wonder if this says something more about how life is lived now, and the choices we get to make because of opportunity.
Most of us are college grads, and our school is not a 12 week bootcamp. We spend 2 years learning, doing internships and coding, and there is a heavy emphasis on soft skills.
A large percentage of the people in my bootcamp already had STEM or law degrees or many years of experience in another technical field (like myself)...and in a few cases both.
I do way more than just CRUD apps - I basically own all of the business logic/processes here at my company. My bosses on a regular basis make it clear that I'm invaluable to the organization.
I think this view is fairly myopic and basically credentialism. As someone who has to interview and make hiring decisions, I swing way in the other direction -- credentials make up maybe 5% of my opinion of a candidate. At best.
The people I seeing decrying degrees as credentialism are invariably those out of bootcamps. I get that people may be satisfied with the level of education they received, but why do they attempt to cheapen others' experiences?
People always talk about how they're concerned with a candidate's ability to see something through, work hard on something with deadlines, know how to learn new things/not just knowing one thing. In my eyes, this, if NOTHING else, is something that a degree shows.
And yet, even though you decry the usefulness of degrees, you're sure to mention that your bootcampers mostly hold them. If they don't matter at all, why even bother mentioning it?
A lot of people flat out say "I don't even consider bootcamp grads" when my experience looking at hundreds of my peers is that it's a rare few that have _just_ their bootcamp on their resume. A few in my cohort even had actual CS degrees but wanted practical skill to make themselves marketable. To overlook advanced degrees + bootcamp (+ experience) because they don't have that precious CS degree absolutely is credentialism.
I'm not "satisfied" with my bootcamp education. I had already been programming for 25 years before my bootcamp, but only as a hobbyist, not in collaboration with others and not in a modern stack. I also have a completely self-taught CS background (that I'm constantly filling the gaps in) and find at my jobs I'm the one most interested in the field and the concepts among my peers.
I agree with you -- it seems totally inappropriate to invalidate a candidate instantaneously due to a lack of a CS degree. That being said, I think a CS degree is, and should be, a competitive advantage.
This is really interesting! I have to admit that I am probably guilty of stereotyping at times (in my own internal thought processes) graduates of bootcamps as individuals from non-STEM backgrounds (e.g. arts degrees, or no formal post-secondary education).
I wonder if there are any studies showing the degrees held by bootcamp graduates?
A bootcamp probably makes a ton of sense for say a mechanical engineer looking to switch professions, instead of going back to university and doing an additional +2 years of courses for a second Bachelors degree or a Masters in CS.
Usually doing innovative independent work requires a whole lot of domain knowledge that can only be learned once you're in the business. (If not, I'd question the defensibility of the business...) Both a bootcamp grad and a recent CS college grad are completely unsuited for that. That's why they're junior developers; they need mentoring to understand the context of their work, the factors that need to enter into decisions, and the body of proprietary knowledge that the industry is built upon.
Doing a CRUD web application is a good way to get a candidate into the door so that you can observe, first-hand, their response to learning that body of knowledge. Your business's competitive advantage may be based upon proprietary algorithms and deep domain knowledge, but sometimes you just need a webserver done. And the person who goes and builds that webserver will learn a lot about the domain knowledge needed to interface with it, and you'll learn a lot about how they approach challenges and seek out the information that they need but don't have.
All of this is independent of whether they learned to build that webserver in college or a bootcamp.
> the ability to communicate clearly ... how to learn independently
I strongly question the notion that these are taught in college. I went to school for hospitality and would argue that they didn't do a very good job either. In my experience you learn those things on your own, just like you learn to learn independently..independently.
I hesitate to add this lest I be accused of moving the goalposts, but I'd like to add that the algorithmic and other low-level knowledge is vital to bringing technological value.
Here's why:
I've taken English courses and Music theory courses, but I am not a writer or a composer by any sense of the word. Sure, I can write a blog post or a comment, and I know how to compose a harmony, but I still lack the sort of knowledge necessary to fully embody the full enormity of these titles. Great composers and writers aren't always necessarily thinking "theoretically, I should do X given that I have Y." But a musician that lacks sufficient knowledge regarding music theory will generally lack the ability to compose truly great works.
Yes, most web applications can be completed by just about anyone if you train them a couple of months. But generally that's all that person is capable of. They won't be able to evaluate a technology critically because they fundamentally do not understand how or why it works. I can also create a movie script -- that doesn't mean it will be any good!
From my point of view, the non-hacker community doesn't understand that software and technology can be as aesthetically beautiful as the Sistine chapel. It takes real craftsmanship and deep theoretical knowledge to get there; you can't just wake up and produce that.
I'd like to thank the other commenters who pointed out that there are a lot of Bootcamp grads who did attend college -- I had no idea. It would be interesting to see the actual stats on that.
(Of course I acknowledge a college degree doesn't necessarily imply the level of craftsmanship I'm talking about here, but generally the theoretical knowledge obtained coupled with working in a meaningful way lead to this sort of craftsmanship. Also, just as art is subjective, beautiful software is as well.)
I hate to nitpick but I think music is a particularly bad example here. The vast majority of music as we know it is outsider art. The people I went to music conservatory with are largely not the same people who produce either music that you've heard or great works.
Sure, the self-taught pop star isn't going to write Rite of Spring anytime soon, but the music business does just fine while being flooded by people with limited theory skill...and I say this while holding the view that most people should just be performers and not compose.
Nope, you're just being a snob. Plenty of "outsider pop stars" (and their songwriters and producers) know music theory just fine and many even went to Berklee/Juilliard/whatever conservatory you're thinking of.
I'm actually saying pretty clearly that it doesn't take deep theory knowledge to write great music, which I think counter's the parent poster's point pretty well. And there's a big gap in the amount of theory required to build your career on playing 12 bar blues and on composing for an orchestra. Most conservatory students aren't rigorously studying composition enough to do the latter anyway. In fact, most just want to eke out a living on dull music that hasn't changed in 400 years.
Berklee is not a conservatory. People actually get practical skills there and aren't treated like shit. Nothing wrong with going there. You are much better off doing that vs New England Conservatory, Julliard, Peabody, etc. (Actually the jury may be out after the Boston Conservatory merger, but we'll wait a few years and see)
You've got it flipped. I'm saying that having a deep knowledge of theory isn't what enables you to make great music. I am also saying that most working musicians' knowledge is extremely limited and that absolutely makes their work outsider art. That's not saying that anyone should go to conservatory (anything but - if you want music ruined for you by all means go), but yes probably every musician _writing music_ should improve the knowledge of their craft.
I have a doctorate in music from one of the top conservatories, but excellence in music (or anything else) is only about putting the hours in. There's nothing I learned in school that isn't widely available in books, or attainable by transcribing records and studying scores. A good teacher is pretty important but doesn't require the formality of school enrollment.
I'm quite sure the same is true in programming. So what if a bootcamp grad can only make CRUD apps a few months into their dev career? What can they do five years after that? At a certain point individual dedication and passion is what matters. There are a million books about algorithms and many bootcamp grads have library cards.
The issue you might run into is that colleges will teach this in theory, but only the good students will internalize all of those things from their education. Same with bootcamps.
If we're comparing the two head to head, I suspect we'll run into a more general nature vs. nurture problem: the ones who want to learn will succeed regardless of whether their means of learning programming was a CS degree or a bootcamp. The ones who aren't taking it seriously will have problems regardless. The interesting part is maybe the degrees of quality within those camps.
I agree with your point about colleges and other skills though.
The bootcamp I attended focused heavily on this aspect. All sprints were pair-programmed, and there were 3 group projects. They lectured repeatedly on team dynamics, feedback methods, agile workflows, etc. Furthermore, applicants with extremely poor soft skills wouldn't make it into the program.
The far majority of paid dev work these days is boring CRUD web work at a very high level of abstraction. Bootcamps (in my experience interviewing some of the grads) prepare you much better for this work than a CS degree.
Data structures & algorithm knowledge is practically meaningless for this kind of work. Knowledge of the various APIs and frameworks, although maybe less "sexy", is actually much more important when it comes to actually getting stuff done. If you're building out a RoR/Node.js/React.js/Angular app, somebody with deep experience with those technologies is going to be able to get a lot more done and be willing to do more bitch work (which let's be real, is most work) than a CS major who loves thinking about complex algorithms.
Sure if you're Google hiring a search engineer, go find yourself an algorithms expert. But for the other 99% of us, most of us are getting paid to solve business problems, not technical ones.
Bootcamp without years if experience will not replace a Computer Science degree. It lacks the depth to build a solid foundation. While this is just an anectdote every company I have worked for refuses to hire bootcamp grads.
I'm in the process of hiring a junior position and have no bias towards college grads or bootcamp grads. The only negatives towards boot camp grads I've seen so far is:
1) One candidate had no idea what the terms "Class" or "OOP" even meant. I'm FINE with them not understanding stuff like sorts/advanced data structures, but he ACTUALLY had 0 idea what an int was. No lie!
2) I wish there wasn't such a heavy reliance on MongoDB in most of these programs. Some do have SQL as well, but I feel like 80% of workplaces will be dealing with SQL, so I'm not sure what the focus on Mongo is all about if the purpose of these programs is to make you hireable. I think it's that it's an easier concept to relay since you're working with JSON everywhere already, but I've seen a bunch of people have a very strong bias towards Mongo to the point where they seem to not understand why you even would use SQL.
3) This part might get me in trouble here, but we are a small company in NJ and budgeting 50k for the junior 0 experience position. Most of these bootcamps in Brooklyn or Manhattan instill that you minimum should be making 60k and not to even look for anything else. I disagree with that personally, but I realize it is possible for grads to make this (especially in NYC). I've just come across a few that scoff at us for the pay we have, and I do understand it, but some of my higher ups who don't really feel comfortable with the bootcamp concept don't think they are worth it.
Obviously there are a lot of pros with hiring them as well. I think typically they are the more qualified candidates skill wise. None of the ones we've come across have been a great fit so far though, but I think it's because of how close to NYC we are. These programs are based there, and we have trouble competing with the salaries there. That's why we have been having more luck finding college grads from the NJ area though, they don't have these kind of higher expectations.
It is. When I hired last summer the Galvanize full-stack course was all Ruby/Rails. By this winter/spring it had shifted to full MEAN stack. I get the sense that it's an industry shift. (Which I personally find a bit frustrating...)
I think Maker Square does Mongo, not sure. Most I see are still SQL-based as they should be. Mongo isn't used that much... and probably less than a few years ago (seems like it has gotten bad press).
It really depends on which bootcamp. I finally picked up SQL while at App Academy and while we did use JSON, we spent no time working with NoSQL databases. Backend ended up being my strength and my primary role at my (full stack) jobs.
The monetary worth as a junior developer is also very dependent on the bootcamp. A decent App Academy or Dev Bootcamp grad in NYC? 60k is a reasonable minimum IMO and a wage below that in NY isn't really livable. On the other hand, bootcamps like GA? Sure, hiring them is more of a crapshoot. None of the NYC bootcamp grads I know are looking in Jersey though.
That's good to hear about the SQL. Honestly, we sort of didn't even bother with AA candidates because I went to the website to check it out, and first thing it says is "graduates earn an average of 89k in NYC". Instantly knew that whatever they were telling the students, we couldn't afford em.
On Indeed, we get a lot of crossover because of our proximity to NYC. I think we come up if you do a 50mi radius and search junior, not sure honestly. I totally get it, but it's getting to the point where we see NYC on the resume, we pass them aside cause we know we can't afford them. Probably better for both parties.
You're right, you probably can't afford them. Salary range in my cohort was 60k-105k, but it's typically higher. a/A grads are in the unfortunate position of having their camp be "free" ($5k deposit) up front and 18% of your first year salary upon hire. They basically have to earn more to pay off the bootcamp. I had to pass on my dream gig (apprenticeship at 8th Light in LA) in part because the debt to App Academy would have meant I was starving in LA (flat 18k if you leave NY/SF).
Some of us optimized for culture fit and life balance over salary. I did this because I was lucky enough to be able to. I earn less than a bunch of people from my group who work 20+ hours more a week than I do and I'm happy with my decision - love where I work, love my coworkers.
I'll let the quality of my work determine the direction of my salary :D
It looks like App Academy is still claiming no upfront cost. I successfully applied a few years ago; despite hearing the "X% of your first year's salary" speech over and over, I was told I would not only need to pay a heavy deposit, but the entire program cost. Kush Patel (the founder) claimed people were bailing after the program and my young age made me a risk.
I can understand those kinds of problems, but waiting until I was accepted to disclose them left me a bit upset. I suggested they update their site, but it appears they still haven't done so.
Yeah they have some hidden terms regarding this and I wish they were more up front about this.
If you are under 21 and without degree, they will require the full program cost up front. Also if you are not a US Citizen, they will require the full program cost up front (for more obvious reasons).
The $5k deposit they also only disclose upon acceptance and it was not something I had planned for but found a way to pay it somehow (I had only budgeted 6 months no income and a 900 mile move back to NYC originally).
These little details regarding payment and also the new internal recruiting company they've started (that works no different than any other standard recruiter and treats their alumni mostly like cattle...) have left kind of a bad taste in my mouth towards the company, but the TAs were amazing and the curriculum is solid (and accepts pull requests!).
I know salaries are lower in NYC than SF, but even $80k/yr probably won't get you an App Academy graduate in SF. If it does get you an App Academy graduate, well, we actually talk to each other about compensation so they will almost certainly get poached after 6 months to a year.
The issue isn't what the bootcamp grad is worth. The issue is what the next best option is - spending more time job hunting and getting a position that values you better. An $80k/yr offer in SF isn't good enough to convince you to call a halt to the process, not when so many of your peers are accepting offers between $100k and $120k.
I think there is nothing of distinguishing value between all three of those boot camps. Trying to place them in tiers, I assume, is just a form of self-flattery.
While you're largely right, there are pay in full and up front boot camps out there that tend to churn through people and either not care about or grossly inflate their placement rates.
And there's a big difference between "12 weeks of structured curriculum" that you get from the ones mentioned vs the "12 weeks of follow the Hartl Tutorial and meet with a mentor for 3 hours a week" variety like Bloc.
I can definitely see that distinction. We've never interviewed from anyone excluding the three you mentioned and fullstack academy, which all have the same general process.
1) That's not really a "bootcamp" issue as it is with a candidate who can't be bothered to learn basic programming concepts or open a book on their own. Almost every book I've read on programming covers OOP in most languages. You can even hack it together in BASH (http://lab.madscience.nl/oo.sh.txt), not that you should.
2) LAMP stack is still probably the safest bet (substitute PHP for Python maybe), but yeah, just because it's the current hotness for a few startups doesn't mean it'll get you hired to know the most hyped tech.
3) Stop looking for candidates from Manhattan, or only hire those looking to move who have done just a little bit of research? CNN's COL calculator shows $100K in NYC is equal to about $54K in NJ so you don't seem too far off base for what you're looking for (http://money.cnn.com/calculator/pf/cost-of-living/). From personal experience their calculations were accurate when I made my move from the midwest to SF. Regardless, again that doesn't sound like a "bootcamp" issue so much as "candidates who can't be bothered to do basic googling/research issue."
We're not looking, they are applying. Like I said, I understand why they aren't a good match COL/salary wise, just kinda of was writing about how I think it's interesting that they teach what salary they should be seeking minimum. That was never brought up in my BS degree.
> 1) That's not really a "bootcamp" issue as it is with a candidate who can't be bothered to learn basic programming concepts or open a book on their own. Almost every book I've read on programming covers OOP in most languages.
I wholeheartedly disagree here, and think it very much is an issue with bootcamps. If a bootcamp doesn't even introduce its students to such concepts as classes, instances, OOP, and basic data types, then it has failed to adequately serve its students with fundamental knowledge and offered a shitty introduction to programming. I've worked to mentor a few people who have come out of bootcamps, and I see this lack of knowledge consistently. When I do, it has never been because the student couldn't be bothered to read or study. It has always been because the concepts were never mentioned and introduced, and thus the student didn't even know it existed, thus that it was something they should understand. Whenever I have introduced the concepts, the students eat that shit up, because they really are interested in learning.
Personally, I think a great many bootcamps are poor places to learn programming because they overwhelmingly focus on web-stack. When you're learning to place shit into the DOM, you don't need to care if it's an int, string, dictionary, array, etc. When you aren't being taught to store your data in an SQL table, you don't become aware of data types, parsing ints, casting strings, coercing one type to another, validating types, etc. You're just being introduced to storing blobs of JSON into Mongo or whatever. Hell, when I started with JS so many years ago, I was rather dumbfounded there was a difference between == and ===. This leads to fresh, potentially valuable developers who don't even know what they don't know. And when that's your starting point, it's a bit unfair to think it's the students' fault. We wouldn't say that of CS graduates.
Bootcamps provide an often too-rudimentary introduction to programming with poor technologies chosen for education. They'd be much better if they sought to teach real CS concepts, not just web-stack basics.
>If a bootcamp doesn't even introduce its students to such concepts as classes, instances, OOP, and basic data types, then it has failed to adequately serve its students with fundamental knowledge and offered a shitty introduction to programming.
Honestly, if someone doesn't understand these very basic concepts, what's his/her curiosity level regarding computer programming? I would not want to hire him/her based soley on that.
Honestly, if someone doesn't know these very basic concepts exist, the fundamental error of attribution here is passing judgment on them and their curiosity level. If we fail to teach, we cannot blame the students for not knowing they were failed, and specifically how.
If someone goes through and passes a bootcamp, it is fair to be generous in granting them some level of curiosity about programming. If the bootcamp doesn't introduce the fundamentals of programming, that's no more the student's fault than it would be the fault of an art history student to not know what chiaroscuro is if it wasn't introduced as part of art history.
Bootcamps market and position themselves as good alternatives for people to learn how to program and, often, get a job. I see no reason to neglect holding them to their promise.
It's still the bootcamp's fault for not at least introducing them to those concepts. I mean, you can't really google what an int is if you don't even know that an int is a thing.
Oh, bootcamps are certainly failing here, but if I were to google "Computer Science," or "Computer Programming," I'd eventually run into the concept of types.
As an analogue, I learned about the functional programming paradigm far before it was ever brought up in a classroom setting. Sure I knew what programming paradigms were, so maybe it's not a perfect example...
> This part might get me in trouble here, but we are a small company in NJ and budgeting 50k for the junior 0 experience position. Most of these bootcamps in Brooklyn or Manhattan instill that you minimum should be making 60k and not to even look for anything else. I disagree with that personally
I'm graduating from a Manhattan college Saturday and I would never take less than $60k for a programming job. In fact, I see most people recommending minimum $70k (and that matches my experience based on jobs offered to me). Most of my peers range from $70k-90k based on experience.
IDK where in NJ you are, but I trust that in your area, $50k is a comfortable salary to live on. In my hometown I'd also expect that much because it's a cheap place. You need to make this clear to your applicants (tell them the cost of living). Since you live near NYC then, sorry, most people will take $60-70k and live in the city with maybe a roommate than $50k in NJ even if they end up making less in NYC.
That said there's a lot of people eager to get some experience in their resume, so you'll find someone eventually.
Totally. I'm not looking for sympathy or an explanation, I completely understand. Was just explaining that most of these candidates from NYC bootcamps are conditioned for NYC jobs, and seem to have very little desire to move out of that area / except different pay ranges. I feel college students are different in this regard. Probably because they live on campus and have to change where they live anyway.
I get it, just kind of writing about my experiences.
Funny story: Before I started a camp, I went to a "hack night" where they had professional RoR devs as the mentors.
I was still learning Ruby at the time and didn't know how to access an object's member (instance) variables. I asked one of the mentors how to do it (I couldn't find the answer quickly from the documentation). He was stumped and had to hit the docs.
That's like a professional C programmer being stumped at how you refer to a variable's memory location.
They definitely are comparable. But I think going to both would be best thing if there is time and strength. Just as I thought college gives you most of theoretical stuff. If you are not used to working on your own, on side projects and are taking college for granted, then you aren't off to a great start. But if you are used to doing something besides college, whether it is paid job or some tinkering projects you do in free time that you later put on github, then need for bootcamp maybe isn't present. So hitting it somewhere in the middle might be best...
Bootcamps seem to encapsulate and accelerate the "I taught myself to program in middle school and high school" experience for adults who missed that boat - which is great.
The results make a lot more sense when you look at it that way.
Do you remember your college web programming courses? The curriculum is always woefully out of date and seems that traditional undergraduate programs don't focus on updating it. This makes sense -- there are very few academic research areas that deal with practical web applications, and this is obviously mirrored in your undergraduate classes.
Don't forget -- universities are also research institutions, while bootcamps are not, and the coursework will reflect this.
My college had state-of-the-art web programming courses along with many other practical classes (mobile, iOS, database design, data mining, 3d graphics). All of which were developed to ensure that students could move onto internships in that field after the course.
All of these courses were optional, but the school was very clear about their purpose: to give their students job skills. Most of the recruiters that came to the campus job fairs knew which of these courses they wanted their interns to take and would ask specifically, "did you take CS___"?
Obviously there was tons of research-oriented classes too, but those targeted jr/seniors.
Our Web Programming course was going to be Rails-based and follow the Rails Tutorial[1], but at the last minute it got changed to late 90s PHP. Sad day.
After reading through all of the comments so far, my impression is that bootcamps are for training the developers whose jobs will be automated away in the coming years, and college is for training the developers who will be writing the code that automates those jobs.
I would love it if Computer Science grads took a boot camp course - one that covers css/html/javascript, any MVC framework, ntier patterns, ORM/SQL/NoSQL training. Because from my experience, they apparently don't teach any of that in comp-sci school.
None of the things you mention are part of the Computer Science academic discipline, which is what they teach. Computer Science undergrad generally covers algorithms, data structures, parsing/compiling, operating systems, discrete mathematics, and linear algebra.
I think this supports the hypothesis that schooling (secondary, post secondary, bootcamps, whatever) is first and foremost a sorting mechanism. Bootcamps have discovered _one_ avenue for quickly assessing and sorting students into a career they can succeed at.
> Bootcamp grads match or beat college grads on practical skills, and lose on deep knowledge.
I feel as though you are attempting to lower the bar of what is acceptable in order to sell something :). The word 'practical' is thrown around in this article without much of a definition. Are we talking about making simple web pages?
I've just finished conducting a round of interviews for a junior level position, and based on this experience I highly doubt I will be considering bootcamp graduates in the future. As an example, for a question which involved sorting an integer array, and providing a method GetElementAt(index)....95% of the bootcamp applicants implemented sort within the GetElementAt method so that the entire array is sorted with every single call. A handful of CS grads made the same mistake, but most of them did not. Is this sort of oversight excused in the idea of 'practical' programming? Or in your definition, is this considered deep knowledge?
Personally, I never expect people to pick the right algorithm the first time. In the real world it's hard to do. I'm much more interested in if they think about alternatives to their solution, know where the problems with theirs are and if they might find an alternate solution to the problem online.
If you're hiring junior developers without expecting to be hands-on in their work and with plan to train them, then you aren't really hiring junior developers, you're just trying to pay at junior rates. It's not doing them or your business a service to hire them.
There are plenty of CS grads out there with all sorts of algo skills but no practical and will take 3 months + to build anything in your stack. This is basically the same problem with different symptoms: You don't have the resources to hire a junior developer.
It's just way easier to blame the hire than your company.
I believe we are misunderstanding each other, as you are making some assumptions. We do spend time training junior developers. We are hands on during work.
I'm talking about one problem at the start of the process. In the example, I didn't touch on their choice of sort algorithm. I was pointing out that they believed that re-sorting the same array, for every single GetIndexAt(x) call, was an ok thing to do. The majority of boot campers did, the majority of CS grads did not.
So if we have two distinct groups applying for a junior level position, and one group has a stronger grasp on fundamentals, I fail to understand how a company is at fault for choosing the better candidate. Objectively, the junior level CS grad had a better understanding of the problem.
Are they saying that it's an actual okay thing to do? ...like, you challenged them on it and had a discussion and they said it was perfectly okay regardless of size of array?
Or it was just allowed to let lie and they said it's an okay thing to do because that's what's in their code?
I think it's a huge mistake to conflate whether someone does know and whether they can know something. Some of the best programmers I've ever seen started off pretty clueless - most of that group learns things absurdly quickly too.
I don't think that exercise gives you good information other than to confirm your expectations. I don't know whether that can tell you if they'll bring value to your organization or not.
There were a few hundred applications to sort through for the position. Applicants all received the same test. The initial response is used to filter the pool and decide with whom to speak with further. Only with a filtered applicant pool is it reasonable to sit and discuss their solution with. Some criteria is needed to filter the pool, so obviously those that have submitted a better initial solution will be selected. The exercise shows that some applicants will require more training than others.
There are many reasons why I think this process is broken that others have written so much at length about enough that I'm not going to bother taking the time.
If it's enough for you to say that because you have a test that everyone takes and it filters your candidates so that's proof of ability, without even going into the results and asking if your test is optimizing for the correct things, there's nothing I can say to convince you otherwise.
Anecdotal, but I know about a half dozen people with experience and CS degrees who would blow your filter but can really get shit done and don't really need any training.
Hiring is hard and the real shame of this industry is that collectively we don't approach this problem with the same level of rigor that we do everything else because by and large we consider this sort of work to be beneath us and not worth a significant investment of our time.
I just want to leave my response to your now-deleted followup:
I don't advocate talking to every candidate but I don't think it's possible to estimate someone's skill without talking to them (even email is a form of conversation).
I find much better filters for that sort of thing are ability to follow directions and attention to detail. If you have hundreds of applications, I guarantee they're not all great spellers or communicate effectively. I value the soft skills way above programming ability (since we have to communicate effectively every day) in the early stage.
I find that it's pretty easy to demonstrate that you "have it" from portfolio, resume, cover letter and the application process.
Personally it's a huge pet peeve of mine in an interview process whenever I have to write code and there isn't some discussion about that code - to the point that I feel it a waste of my time and a strong signal not to work there.
Software companies aren't the only people who hire developers.
I spent today (I'm a non-technical product owner in an enterprise) discussing middleware which will transform 10,000 miscellaneous transactions from multiple line of business system every night into our ERP. There's lots of domain logic and we're paying the supplier a lump sum more than the annual salary of a new CS or BC grad. It isn't a simple web page.
Say the transformation from source to target with good sorting would take 100 milliseconds. If it took 10,000 times longer, that's 17 minutes - and that would meet my user requirements. If it didn't I'd expect the supplier to fix their SQL indexes. So none of their technical guys need to be good at sorting.
That's a very good point. I'm only speaking from the view of my experience, and my responsibilities and concerns are different than your example. I suppose my initial skepticism of the article is grounded in that we do all we have different concerns, and I felt the article attempted to paint with too broad of a brush. The author would have helped me tremendously had they defined terms like practical programming.
445 comments
[ 74.4 ms ] story [ 6948 ms ] threadCan you discuss how you might test for bootcamps overfitting their curriculums to interviews? They definitely would seem financially incentivized to do just that. From a personal anecdote, someone I interviewed was able to code a solution for a problem, but then couldn't discuss how or why they did it that way at all, or solve a closely related problem, which made me strongly suspect that they just memorized an answer. How would you test for this?
I would also be curious to see if there was any way to breakdown bootcamp grads with previous programming experience vs. without and by what they studied in undergrad if they went to undergrad.
I agree that not all jobs require this skills, but then suddenly you get a divided workforce with designers and implementers.
If you hire someone and release them into the wild of your codebase, that's a failure on your part not theirs. New hires are an investment, they shouldn't be treated as an immediate need-based solution. My experience in two fields has shown me that new hires are a drain on resources for a fairly significant time period, regardless of their background. If you're not doing everything in your power to educate your new hires and get them up to speed, THAT'S your landmine. It's your job to get them to learn the fundamentals if they don't have it.
If you have to train them, then it seems the coding part should be cheaper then the algo part.
I did as well, but...
> Didn't even have code reviews back then.
Not so much this one.
> If you have to train them, then it seems the coding part should be cheaper then the algo part.
I do actually agree. But there tends to be other aspects of the job outside of just code and algorithms. Prior work experience is a shining star compared to a 22 year old in any field. I see my coworkers more than my family. Someone that has a full understanding of everything that goes along with that has a head start across the board. Someone changing careers in their late 20's also tends to put a hell of a lot more into improving themselves than just the basic progress-of-life learning. I just think it evens out as long as you're consciously hiring people for the right role.
Were you able to see any patterns in the backgrounds of the bootcamp students?
It doesn't seem too surprising that someone with a physics or finance or mechanical engineering background can learn enough programming skills in three months to be productive. But do students without as much prior experience in quantitative and analytical thinking have as much success?
I get asked about how to break into the industry every now and then--it would be nice to be able to point those people to a quality bootcamp.
Ideal bootcamp:
-css/html/javascript
-angular or any mvvc data mirroring framework
-OOP and ntier patterns
-Stored Procs/ORM/SQL training
-Algos
-Webservices SOAP/REST
The college grads I work with tend to have written a couple shitty programs that don't really do anything, and their "final project" was hooking up a database to a business logic layer.
source: I have taught in bootcamps before and work with lots of new college comp sci grads now.
If I were put in charge, I would make it 6 months long. I could definitely teach people how to write coherently designed CRUD apps in 6 months (ie. 95% of all programming businesses in the wild).
It'll do the job better too; this isn't a simple Ruby-based admin app that gets generated. We generate a feature-rich enterprise-class system with both Windows desktop and web-based UIs, that could be deployed into production as soon as the code generation is complete. (Typically there's customization work done before deployment, but for a lot of tables that's not necessary.)
I feel like a common theme on this comment page is that bootcamp people are trained to do XY - therefore they cannot do Z or learn Z quickly. People who are actually into computers will learn all the other computery stuff on their own. Things like compilers, how RAM works, heaps, stacks, sorts, networking, security, etc. Just because you are only taught how to make a CRUD app with modular principles doesn't mean your learning will stop there...
I guess this argument is very personal for me because I came into programming without a CS degree. I taught myself all the fancy tech guy dick swinging bullshit by myself by guess what - wait for it - ordering CS books on amazon.com and learning this shit myself. It's not that hard. Anyone who is capable of abstract thought and has a little bit money and time can learn all this CS stuff on their own.
People with the academia mindset of thinking they know so much more than everybody else are doing themselves a disservice. This line of thought will only lead to boxing yourself in because you have only been taught to do things like a horse that has been broken to run races. I personally think people who have experienced hardships and not had the silver CS spoon in their mouth make much more well rounded programmers than the typical CS dick waving upper middle class white guy that seems to be so pervasive in all the companies I have worked for.
My problem with "bootcamp people" is really restricted to people who are choosing a bootcamp over college or on-the-job experience, with the expectation that they'll be able to do the same job for the same money as someone who has a CS degree, or a similar level of self-training like you and I. I have an even bigger problem with managers who would choose someone with bootcamp training over someone with deeper knowledge simply because the bootcamp person is cheaper and seems 'just as good'.
Regarding the app: you're absolutely right. Generating the code is just the first step. The value we provide is in giving you a multi-man-year head start and a solid foundation, so that you can spend your time on higher-level business-oriented requirements instead of all of the basic functionality. (My profile has a link to our website, in case you're interested. Lots of info, some video demos, and a free trial you can download.)
"Just teach algorithms." Do you have two years to spare to do so? Because I'm a platform engineer and I regularly use the extent of my CS mathematics education to write better code--you'd think this'd just be Ruby slinging, "what sort of math do you need to automate systems", but it ends up being remarkably more than that! But you know what else I use, while doing my day job? I use the lessons from my economics courses. I use the lessons from my sociology courses. I use the lessons from my political science courses. Are you gonna bootcamp those, too? Or are you going to turn out a marginally skilled worker with a worse educational foundation?
The only thing a civil engineer has over a carpenter is physics knowledge. Obviously.
Don't get me wrong: bootcamps are fine for some purposes, but in my experience they (and there are certainly exceptions in that experience, though rare--I'm thinking of a couple mid-career switches here) turn out mostly-employable workers with a shallower improvement curve and a relatively low ceiling by comparison. There are definitely roles for which I'd hire most of the folks I know who've gone into tech via boot camp classes. But, in my experience, those roles tend to be ones that are more junior than I'd other expect for their tenure and unless I need immediate productivity (and why would I be building a pipeline where I need that, but not the wisdom that comes with experience?), I will prefer somebody who is educated and not merely trained. Code and "coding" are stump-dumb simple and filtering for those minor applicative skills would be a disaster. Because I can teach skills, even if it requires an investment of effort on my part (heaven forfend!). I can't, practically, teach how to think.
I think where we are not seeing eye to eye here is that I envision a bootcamper that has a high aptitude for abstract thought, can read quickly, has a good understanding of math, and is motivated to keep learning and read books outside of "class".
If we are talking about two people who both do no outside reading other than what they are assigned - then yes, the college grad will be more prepared for abstract ideas/thought. However, if you take an otherwise smart person who reads lots of books and can learn things on the fly - then I think the sky is the limit.
"I learned Algorithms in a week" sounds weird.
We aren't talking about "the algorithms", and to be honest the way you keep referring to "algorithms", rather than a phrase like "algorithmic thinking", is indicative of the real disconnect here. Spewing quicksort at a problem is easy and doesn't require one to really understand it in the first place, and if that's why I said "two years" I'd be totally an idiot. But it wasn't. Two years of instruction is for the mathematics and logic to understand algorithmic thinking at a level where you can reason about problems and approach them from a compositional, mathematical perspective--and that is invaluable when your problem is more than "order a list to splat into HTML". It's not high-school mathematics at all, except for the ten-thousand-foot-view.
I have yet to meet a--what's the phrase that everyone loves, "autodidact"?--who was as comfortable with higher-order computational thinking as many of the people I've worked with. Hell, I wish I had more of a mathematical and CS background than I do. Paxos and the like are still really hard to me!
Every single person in my boot camp class had a college education. One person was a college professor prior to attending. Several people actually had CS degrees that they felt didn't prepare them to do actual practical programming. We also had a lawyer and a couple of people with mathematics and physics degrees as well.
However I also get the feeling that being a developer has become more visible as well paying, in demand job similar to being lawyer was a decade or so ago. A lot of people wanted to be lawyers not because they were passionate about law but because they knew they could make a lot of money.
I get the impression that many people are drawn to boot camps by ads along the lines of "Make $XXk+ being a dev in X weeks" as opposed to being interested in the field.
It's important to note that this is just my initial inclination. I have no expectation that there won't be instances of boot-camp hires being better than CompSci hires in cases. It really comes down to the particular person, and hopefully any hiring process would do a decent job of evaluating each person.
This isn't to say that all CompSci graduates are good programmers (clearly they are not). It also isn't to say that everyone coming out of a bootcamp is bad (they are not, I recently hired my first). But when painting with a broad brush bootcamp's right now seem to mostly churn out students who are sort of comfortable with syntax and very basic logic, but not much else.
I'd be interested to see this article go farther. What do these cohorts look like in two years? Does that fundamental knowledge gap hold those bootcamp graduates back? I suspect it does, but I have very little proof but my own intuition. I'd love to be wrong.
> Two really key fundamental knowledge areas if you're goal is to build actually reliable and relatively efficient software.
I would challenge you on this, and suspect that you're looking at a relatively thin slice of developers: can you clarify why you believe this to be the case. As a counter-example, a lot of modern web development is building frontends (mobile or JS), where good code organization matters, but systems architecture doesn't matter so much.
lines of code?
first pass code quality?
understanding of architecture?
ability to link user's handwaving to functional product?
To be clear, I agree with you, I just think there are tasks where the CS grads would generally win and those where the bootcampers would win as well rather than looking at this as an overall population comparison. No one size fits all, as others mentioned, its all about identifying your need and filling it with the right person not just the right education.
Or, if I may suggest, a low-level/algorithmic bootcamp.
Maybe dev-bootcamp should offer an optional extra module?
College is largely about transitioning children to adults (we can argue that separately) the personal and professional development that students go through over 4 years is vast. They are becoming adults in many frames, including understand the world and technology as systems. They aren't just learning to code, they are learning how to think.
To the extent that I know (warning: anecdata) Bootcamps presume a lot more worldly knowledge, attract and expect more grown up students, get students with direct interest in web/software/apps, and are much more likely to get career transitioning students (from the people I know who have bootcamp'ed). They have a much broader knowledge base to build on which will help them in some areas and hurt them in others. I would be curious if Triplebyte has any data they can touch at all looking at that.
Simply said...a 22 year old college student with a CS degree and a 35 year old BC grad may look similar on metrics but function entirely differently as employees in both the short and the long term...caveat emptor, figure out what you need.
Sure, I could learn most of what I need to know on my own time, but this might be a great way to get it done quickly in a batch and then move on to applying it in a very practical way with my customers.
In my experience, "Product Manager" is a much better term for someone who's responsible for and guiding the development of a software product, but who doesn't have the technical skills to do the development themselves. Architects who are respected earn that title by working to gain lots of experience doing development.
Of course 3 months is going to get you running with a solid basic knowledge of your stuff.
In what world would low-level, algorithms and data structures be doable in 3 months?
Point is, I don't think Bootcamps and Colleges are comparable.
It's like being a woodworker and a forester..
There's a place for each and it's not the same positions...
Now, here's my big question:
If your interview includes Practical programming, Web system Design, Algorithms and Low level system design...
What in the nine hells are you hiring for?
Had it been for a trucker position you'd be asking for "driving license, laws and regulations, engine design and car physics"..
For reference: https://i.imgur.com/sh7LJgj.jpg
This is the key takeaway here. I'm working with a bootcamper now and the experience has been pretty bad. But it is a fairly large app, I think it's difficult for him to grasp all the parts, how they connect, and how his changes impact everything else. He can code and make things work, but that's it, we have to make big changes to almost everything he does.
A bootcamper who can focus on HTML, CSS, and some simple code would be fine, until they get some more real world experience. In my opinion college vs. bootcamp education are probably the same after a few years of experience if the person is a motivated learner.
They gave me a smooth and solid ramp-up to the mid/senior I am now.
Being thrown in on the deep end with the expectations that the guy with 3 months experience is somehow wellrounded with the basics of CS is just foolish.
Also, of course, not all bootcamps are equal, nor are all students.
> What in the nine hells are you hiring for?
Someone who can solve a business problem effectively.
It's not too difficult to shove data into a database, pull it out, and render it to a screen. Nor is it too difficult to pull data out of the db and send it in JSON format.
What do you do when your the performance of your API server doesn't meet customer demands, or you get written up by re//code and get a 1000x spike in traffic?
Let me turn the question around: if you can only hire one person, why would you choose a bootcamp graduate over a CS graduate?
------
Personally, I think the idea of bootcamps are great, and I root pretty hard for anyone who wants to better their situation by going back and learning a new set of skills.
But I have to be skeptical and look at the bootcamp craze, like the outsourcing craze from a decade ago--a way for companies to hire cheap programmers, and a way for bootcamp operators to cash in on the unmet demand.
There nothing wrong with a trucker just knowing "driving license, laws and regulations", ... as long as they don't mind being laid off when there's no longer a need for that skill.
You're essentially arguing that it's okay to be a one-trick pony. It's not.
1) IT and the software industry change too fast for that to be anything other than career suicide. What do you do when your tricks become out of date?
2) You're competing with all the other one-trick ponies out there. There are a whole lot of them and that makes one-trick ponies an easily replaceable commodity. Yes, yes, everyone's replaceable in theory but its best to minimize that as much as possible.
I think one key aspect that is missing is that boot camp graduates aren't straight off the barista lineup. I took one at age 28 after having worked in a technical role in finance since undergrad. The average age of my class was probably 29. Beyond just time in the workforce, I had a double major in math and economics with a minor in applied statistics. Had I dropped "Behavioral Economics" and taken "Data Structures" along with some other random course, I could have switched my Econ major to a minor in CS. Many people in my class were of a similar background.
Other bootcamps just need you to be able to use your computer and you're in.
In addition to being able to contribute in a non-development capacity, even in terms of software being good at coding is probably at most 20% of what makes a good developer.
Additionally, in my experience, it's way easier to teach non-development skills to thoughtful programmers than it is to teach adequate programming skills to thoughtful non-programmers.
Some of the best designers, managers, product analysts, business intelligence analysts, marketing strategists, and client engagement managers I've ever met all came from heavily theoretical CS backgrounds and spent a lot of their early careers mostly coding.
Understanding the interrelationships between business components and business needs often has many similarities with designing quality software. And many of the pitfalls of software (e.g. monolithic classes, no separate interfaces, no solid tests) are directly analogous to non-software organizational problems as well.
Plenty of people who gain technical credential through a bootcamp will go on to do a great job, and their other skills will be of tremendous value.
But it just seems absurd to me to try to make some kind of rank ordering between bootcamp grads and CS degree holders. You're discounting just how highly effective CS degree holders are at translating their very general skill set into other domains of work. Generally speaking, they are very good at this -- so good that it's often threatening to non-technical people who would prefer if there was an easy stereotype suggesting that CS people should be siloed away from non-tech work.
It's almost like having a degree in abstract thinking, designing systems, and discovering hidden requirements makes you good at designing systems to solve complex problems.
Which is what most non-technical work is. Taking an ill-defined problem, and defining+solving it.
So to me I have to question the ROI of walking away from 5+ years of professional advancement and jump into software development again - by way of an in-person bootcamp. I'm not going back to a Uni or interested in online learning settings. However, I do recall the concepts and am certainly excited by the developments in languages and technology since watching some of the roots take hold.
Being a "creative" person who can speak "engineering" is one of my strongest, and often the most unusual of my professional strengths.
The problem is, there was no easy way -- for someone like me wanting to go into software -- to (convincingly) say, "Hey, I can code and think abstractly. Give me a chance?"
(If you're going to say, "just contribute to an open source project", there's actually a big gap between being able to code and being able to debug the zillion things that can go wrong in just setting up the builds for a given project. The Open Hatch project c. 2011 was specifically dedicated to helping people contribute, and yet following their instructions would still dump you in a an unnamed text editor with no way to exit.)
[1] Frustratingly, the instructors were very unhelpful at the stuff I needed help with the most -- forming a mental model of how and why Rails works.
That's more or less all most CS graduates can say though. I personally don't think anyone is qualified to be a professional developer until they've been programming for several years (especially coding in an unstructured way).
I don't want to be combative, but what made you think you needed a bootcamp? I learned to program long before I went to college and was hired for programming projects long before I graduated.
To be sure, there were also probably some job-searching techniques that would have worked, but they're also hard to learn from reading pointers online if you don't automatically have the skill.
I ask because I had no trouble getting jobs and freelance work without a degree or bootcamp.
In fact, a bootcamp is usually a strong negative signal for me. I'd much rather hire a self-taught developer than a bootcamper.
My problem was basically a lack of network and real understanding of my competition in the field and the bootcamp solved that.
I could have saved a ton of money had I quit my bootcamp as soon as I realized this, but I'm still okay with how things turned out.
me, i have no preference when i interview a candidate... can you code? and can you solve complex problems? other then that i dont care about how you got your skills.
I like and hire plenty of CS grads as well. I also have a CS degree. It's just bootcamp grads that I steer clear of.
It's a super expensive and wasteful way to do this, but I was optimizing for my time.
I got a great job with my second interview. How did I convince them to give me a chance? I didn't contribute to open source; I just showed them some of my personal projects. I had written a web based baseball simulation game, and I just showed them the code. I did a quick interview, explained how I had taught myself to program as a youngster, and they offered me a job.
In my years since, I have hired people just like me a number of times. Show me some code, if it is good, you are hired.
The problem with suggesting this to people who are learning on their own is that building a portfolio takes time. Sure, if you're young and single, you could wait tables and learn to code. But it's more difficult to find the time as you take on more obligations with age.
The other problem is picking the right projects and languages that hold some appeal to the rare employers who will give you a chance. People are also less likely to cut someone some slack for sloppy code, due to lack of experience and knowledge, and other early coder problems.
The last problem is not being able to network successfully to find those less common employers who will give you a chance. And avoiding the bad employers who promise experience, but ultimately have them working as an on-call contractor who just reboots the printers.
Having any college degree helps a lot, but without it many doors remain closed even with a portfolio.
I suspect that's because they didn't know how or why.
Rails has a lot of magic -- just follow the convention and it works. Magic can be good, because it encourages a standard. Unfortunately, many Rails programmers seem comfortable leaving the magic as a mystery rather than learning how it works and why it was designed as it is.
If we had only done rails, I'd probably have little idea how it worked, but doing all three definitely shored up some weak points.
It also helped that the teachers were genuinely knowledgeable and we had short lectures on deeper-level stuff (we had one hour lecture on how to build a tcp server from scratch in ruby, one on how the internet actually works - from the link layer up, and so on).
It seems like everyone is forgetting this.
Since coding is becoming important for a tech driven World, no matter what our backgrounds are. We come in with whatever skills we've gathered from our personal journeys and then learn to code.
Sure, bootcamp grads can write a web application just fine; after all, it's usually only CRUD. But what value are they bringing to an organization? Why would I pay them the same amount as a college graduate who undoubtedly has more total knowledge not only in CS, but in other areas as well? Ideally, a college should expose students to a diverse range of knowledge, each tidbit providing additional value to an organization. If I just wanted an application constructed, I could offshore the job and get it done cheaper.
Yes, a well-run bootcamp might be a better __coding__ education than a computer science degree, but coding is the easy part. There are other valuable skills that aren't being taught (i.e. the ability to communicate clearly, how to do research, how to learn independently) that make an organization strong.
We aren't in the coding business, we're in the building business. Code is simply a means to an end.
(I do agree that the college experience is more than vocational education and valuable in itself, though)
These people ARE college grads. I'm not sure where this seemingly pervasive view is coming from. My class had 1 person without an undgraduate degree, and several with masters.
> i.e. the ability to communicate clearly, how to do research, how to learn independently
The average age of my class was 29. 6-10 years in the workforce tends to demonstrate an existing ability to do this.
This was a full time iOS program in Totonto.
On the question, "are bootcamps good or bad?" I think most people would tend towards good, though exactly how good is another matter of debate.
If someone is posing this question, it's not one based in reality. The question is 4 years of a CS degree vs a bootcamp, not 4 years of college vs no college. As I clearly stated, only one classmate didn't have an undergraduate degree. That question is a strawman at best.
"Autoregressive Conditional Heteroskedasticity"
It's my favorite terminology from undergrad. It's from time series analysis. My job coming out of college was as an equities trader. It's hard to get much more time series analytical than that, and yet I never used it even once. Had I gone into quantitative finance, I'm sure I'd use it constantly. 95% of us just use our undergrad as a permission slip to join the real world, CS included. They hand out those permission slips like candy. Most people end up as accountants, not mathematicians. You don't need to know parametric equations to calculate EBIDTA.
It's not a waste of time if it's something you're interested in and you're intelligent enough to use it. It IS a waste of time getting an engineering degree if you think it will give you a leg up on competing for a welding job.
I wonder if this says something more about how life is lived now, and the choices we get to make because of opportunity.
Most of us are college grads, and our school is not a 12 week bootcamp. We spend 2 years learning, doing internships and coding, and there is a heavy emphasis on soft skills.
I do way more than just CRUD apps - I basically own all of the business logic/processes here at my company. My bosses on a regular basis make it clear that I'm invaluable to the organization.
I think this view is fairly myopic and basically credentialism. As someone who has to interview and make hiring decisions, I swing way in the other direction -- credentials make up maybe 5% of my opinion of a candidate. At best.
People always talk about how they're concerned with a candidate's ability to see something through, work hard on something with deadlines, know how to learn new things/not just knowing one thing. In my eyes, this, if NOTHING else, is something that a degree shows.
And yet, even though you decry the usefulness of degrees, you're sure to mention that your bootcampers mostly hold them. If they don't matter at all, why even bother mentioning it?
I'm not "satisfied" with my bootcamp education. I had already been programming for 25 years before my bootcamp, but only as a hobbyist, not in collaboration with others and not in a modern stack. I also have a completely self-taught CS background (that I'm constantly filling the gaps in) and find at my jobs I'm the one most interested in the field and the concepts among my peers.
Not at all trying to cheapen the CS degree here.
I wonder if there are any studies showing the degrees held by bootcamp graduates?
A bootcamp probably makes a ton of sense for say a mechanical engineer looking to switch professions, instead of going back to university and doing an additional +2 years of courses for a second Bachelors degree or a Masters in CS.
Doing a CRUD web application is a good way to get a candidate into the door so that you can observe, first-hand, their response to learning that body of knowledge. Your business's competitive advantage may be based upon proprietary algorithms and deep domain knowledge, but sometimes you just need a webserver done. And the person who goes and builds that webserver will learn a lot about the domain knowledge needed to interface with it, and you'll learn a lot about how they approach challenges and seek out the information that they need but don't have.
All of this is independent of whether they learned to build that webserver in college or a bootcamp.
I strongly question the notion that these are taught in college. I went to school for hospitality and would argue that they didn't do a very good job either. In my experience you learn those things on your own, just like you learn to learn independently..independently.
Here's why: I've taken English courses and Music theory courses, but I am not a writer or a composer by any sense of the word. Sure, I can write a blog post or a comment, and I know how to compose a harmony, but I still lack the sort of knowledge necessary to fully embody the full enormity of these titles. Great composers and writers aren't always necessarily thinking "theoretically, I should do X given that I have Y." But a musician that lacks sufficient knowledge regarding music theory will generally lack the ability to compose truly great works.
Yes, most web applications can be completed by just about anyone if you train them a couple of months. But generally that's all that person is capable of. They won't be able to evaluate a technology critically because they fundamentally do not understand how or why it works. I can also create a movie script -- that doesn't mean it will be any good!
From my point of view, the non-hacker community doesn't understand that software and technology can be as aesthetically beautiful as the Sistine chapel. It takes real craftsmanship and deep theoretical knowledge to get there; you can't just wake up and produce that.
I'd like to thank the other commenters who pointed out that there are a lot of Bootcamp grads who did attend college -- I had no idea. It would be interesting to see the actual stats on that.
(Of course I acknowledge a college degree doesn't necessarily imply the level of craftsmanship I'm talking about here, but generally the theoretical knowledge obtained coupled with working in a meaningful way lead to this sort of craftsmanship. Also, just as art is subjective, beautiful software is as well.)
Sure, the self-taught pop star isn't going to write Rite of Spring anytime soon, but the music business does just fine while being flooded by people with limited theory skill...and I say this while holding the view that most people should just be performers and not compose.
I'm actually saying pretty clearly that it doesn't take deep theory knowledge to write great music, which I think counter's the parent poster's point pretty well. And there's a big gap in the amount of theory required to build your career on playing 12 bar blues and on composing for an orchestra. Most conservatory students aren't rigorously studying composition enough to do the latter anyway. In fact, most just want to eke out a living on dull music that hasn't changed in 400 years.
Berklee is not a conservatory. People actually get practical skills there and aren't treated like shit. Nothing wrong with going there. You are much better off doing that vs New England Conservatory, Julliard, Peabody, etc. (Actually the jury may be out after the Boston Conservatory merger, but we'll wait a few years and see)
I'm quite sure the same is true in programming. So what if a bootcamp grad can only make CRUD apps a few months into their dev career? What can they do five years after that? At a certain point individual dedication and passion is what matters. There are a million books about algorithms and many bootcamp grads have library cards.
If we're comparing the two head to head, I suspect we'll run into a more general nature vs. nurture problem: the ones who want to learn will succeed regardless of whether their means of learning programming was a CS degree or a bootcamp. The ones who aren't taking it seriously will have problems regardless. The interesting part is maybe the degrees of quality within those camps.
I agree with your point about colleges and other skills though.
The bootcamp I attended focused heavily on this aspect. All sprints were pair-programmed, and there were 3 group projects. They lectured repeatedly on team dynamics, feedback methods, agile workflows, etc. Furthermore, applicants with extremely poor soft skills wouldn't make it into the program.
Data structures & algorithm knowledge is practically meaningless for this kind of work. Knowledge of the various APIs and frameworks, although maybe less "sexy", is actually much more important when it comes to actually getting stuff done. If you're building out a RoR/Node.js/React.js/Angular app, somebody with deep experience with those technologies is going to be able to get a lot more done and be willing to do more bitch work (which let's be real, is most work) than a CS major who loves thinking about complex algorithms.
Sure if you're Google hiring a search engineer, go find yourself an algorithms expert. But for the other 99% of us, most of us are getting paid to solve business problems, not technical ones.
1) One candidate had no idea what the terms "Class" or "OOP" even meant. I'm FINE with them not understanding stuff like sorts/advanced data structures, but he ACTUALLY had 0 idea what an int was. No lie!
2) I wish there wasn't such a heavy reliance on MongoDB in most of these programs. Some do have SQL as well, but I feel like 80% of workplaces will be dealing with SQL, so I'm not sure what the focus on Mongo is all about if the purpose of these programs is to make you hireable. I think it's that it's an easier concept to relay since you're working with JSON everywhere already, but I've seen a bunch of people have a very strong bias towards Mongo to the point where they seem to not understand why you even would use SQL.
3) This part might get me in trouble here, but we are a small company in NJ and budgeting 50k for the junior 0 experience position. Most of these bootcamps in Brooklyn or Manhattan instill that you minimum should be making 60k and not to even look for anything else. I disagree with that personally, but I realize it is possible for grads to make this (especially in NYC). I've just come across a few that scoff at us for the pay we have, and I do understand it, but some of my higher ups who don't really feel comfortable with the bootcamp concept don't think they are worth it.
Obviously there are a lot of pros with hiring them as well. I think typically they are the more qualified candidates skill wise. None of the ones we've come across have been a great fit so far though, but I think it's because of how close to NYC we are. These programs are based there, and we have trouble competing with the salaries there. That's why we have been having more luck finding college grads from the NJ area though, they don't have these kind of higher expectations.
The monetary worth as a junior developer is also very dependent on the bootcamp. A decent App Academy or Dev Bootcamp grad in NYC? 60k is a reasonable minimum IMO and a wage below that in NY isn't really livable. On the other hand, bootcamps like GA? Sure, hiring them is more of a crapshoot. None of the NYC bootcamp grads I know are looking in Jersey though.
On Indeed, we get a lot of crossover because of our proximity to NYC. I think we come up if you do a 50mi radius and search junior, not sure honestly. I totally get it, but it's getting to the point where we see NYC on the resume, we pass them aside cause we know we can't afford them. Probably better for both parties.
Some of us optimized for culture fit and life balance over salary. I did this because I was lucky enough to be able to. I earn less than a bunch of people from my group who work 20+ hours more a week than I do and I'm happy with my decision - love where I work, love my coworkers.
I'll let the quality of my work determine the direction of my salary :D
I can understand those kinds of problems, but waiting until I was accepted to disclose them left me a bit upset. I suggested they update their site, but it appears they still haven't done so.
If you are under 21 and without degree, they will require the full program cost up front. Also if you are not a US Citizen, they will require the full program cost up front (for more obvious reasons).
The $5k deposit they also only disclose upon acceptance and it was not something I had planned for but found a way to pay it somehow (I had only budgeted 6 months no income and a 900 mile move back to NYC originally).
These little details regarding payment and also the new internal recruiting company they've started (that works no different than any other standard recruiter and treats their alumni mostly like cattle...) have left kind of a bad taste in my mouth towards the company, but the TAs were amazing and the curriculum is solid (and accepts pull requests!).
Their FAQ seems to have a fair amount of information. Though, it was hard to find from the homepage.
The issue isn't what the bootcamp grad is worth. The issue is what the next best option is - spending more time job hunting and getting a position that values you better. An $80k/yr offer in SF isn't good enough to convince you to call a halt to the process, not when so many of your peers are accepting offers between $100k and $120k.
I'm too old to bother with having roommates anymore.
And there's a big difference between "12 weeks of structured curriculum" that you get from the ones mentioned vs the "12 weeks of follow the Hartl Tutorial and meet with a mentor for 3 hours a week" variety like Bloc.
I don't think any of them are really excellent.
I have just met a high percentage of GA grads who aren't successful in their search and give up after a few months.
2) LAMP stack is still probably the safest bet (substitute PHP for Python maybe), but yeah, just because it's the current hotness for a few startups doesn't mean it'll get you hired to know the most hyped tech.
3) Stop looking for candidates from Manhattan, or only hire those looking to move who have done just a little bit of research? CNN's COL calculator shows $100K in NYC is equal to about $54K in NJ so you don't seem too far off base for what you're looking for (http://money.cnn.com/calculator/pf/cost-of-living/). From personal experience their calculations were accurate when I made my move from the midwest to SF. Regardless, again that doesn't sound like a "bootcamp" issue so much as "candidates who can't be bothered to do basic googling/research issue."
I wholeheartedly disagree here, and think it very much is an issue with bootcamps. If a bootcamp doesn't even introduce its students to such concepts as classes, instances, OOP, and basic data types, then it has failed to adequately serve its students with fundamental knowledge and offered a shitty introduction to programming. I've worked to mentor a few people who have come out of bootcamps, and I see this lack of knowledge consistently. When I do, it has never been because the student couldn't be bothered to read or study. It has always been because the concepts were never mentioned and introduced, and thus the student didn't even know it existed, thus that it was something they should understand. Whenever I have introduced the concepts, the students eat that shit up, because they really are interested in learning.
Personally, I think a great many bootcamps are poor places to learn programming because they overwhelmingly focus on web-stack. When you're learning to place shit into the DOM, you don't need to care if it's an int, string, dictionary, array, etc. When you aren't being taught to store your data in an SQL table, you don't become aware of data types, parsing ints, casting strings, coercing one type to another, validating types, etc. You're just being introduced to storing blobs of JSON into Mongo or whatever. Hell, when I started with JS so many years ago, I was rather dumbfounded there was a difference between == and ===. This leads to fresh, potentially valuable developers who don't even know what they don't know. And when that's your starting point, it's a bit unfair to think it's the students' fault. We wouldn't say that of CS graduates.
Bootcamps provide an often too-rudimentary introduction to programming with poor technologies chosen for education. They'd be much better if they sought to teach real CS concepts, not just web-stack basics.
Honestly, if someone doesn't understand these very basic concepts, what's his/her curiosity level regarding computer programming? I would not want to hire him/her based soley on that.
If someone goes through and passes a bootcamp, it is fair to be generous in granting them some level of curiosity about programming. If the bootcamp doesn't introduce the fundamentals of programming, that's no more the student's fault than it would be the fault of an art history student to not know what chiaroscuro is if it wasn't introduced as part of art history.
Bootcamps market and position themselves as good alternatives for people to learn how to program and, often, get a job. I see no reason to neglect holding them to their promise.
As an analogue, I learned about the functional programming paradigm far before it was ever brought up in a classroom setting. Sure I knew what programming paradigms were, so maybe it's not a perfect example...
I'm graduating from a Manhattan college Saturday and I would never take less than $60k for a programming job. In fact, I see most people recommending minimum $70k (and that matches my experience based on jobs offered to me). Most of my peers range from $70k-90k based on experience.
IDK where in NJ you are, but I trust that in your area, $50k is a comfortable salary to live on. In my hometown I'd also expect that much because it's a cheap place. You need to make this clear to your applicants (tell them the cost of living). Since you live near NYC then, sorry, most people will take $60-70k and live in the city with maybe a roommate than $50k in NJ even if they end up making less in NYC.
That said there's a lot of people eager to get some experience in their resume, so you'll find someone eventually.
I get it, just kind of writing about my experiences.
I was still learning Ruby at the time and didn't know how to access an object's member (instance) variables. I asked one of the mentors how to do it (I couldn't find the answer quickly from the documentation). He was stumped and had to hit the docs.
That's like a professional C programmer being stumped at how you refer to a variable's memory location.
Funny how far people can get when knowing little.
The results make a lot more sense when you look at it that way.
Don't forget -- universities are also research institutions, while bootcamps are not, and the coursework will reflect this.
All of these courses were optional, but the school was very clear about their purpose: to give their students job skills. Most of the recruiters that came to the campus job fairs knew which of these courses they wanted their interns to take and would ask specifically, "did you take CS___"?
Obviously there was tons of research-oriented classes too, but those targeted jr/seniors.
[1] https://www.railstutorial.org/
Solution: hire a college grad and send them to a boot camp.
malkovich,malkovich
I feel as though you are attempting to lower the bar of what is acceptable in order to sell something :). The word 'practical' is thrown around in this article without much of a definition. Are we talking about making simple web pages?
I've just finished conducting a round of interviews for a junior level position, and based on this experience I highly doubt I will be considering bootcamp graduates in the future. As an example, for a question which involved sorting an integer array, and providing a method GetElementAt(index)....95% of the bootcamp applicants implemented sort within the GetElementAt method so that the entire array is sorted with every single call. A handful of CS grads made the same mistake, but most of them did not. Is this sort of oversight excused in the idea of 'practical' programming? Or in your definition, is this considered deep knowledge?
If you're hiring junior developers without expecting to be hands-on in their work and with plan to train them, then you aren't really hiring junior developers, you're just trying to pay at junior rates. It's not doing them or your business a service to hire them.
There are plenty of CS grads out there with all sorts of algo skills but no practical and will take 3 months + to build anything in your stack. This is basically the same problem with different symptoms: You don't have the resources to hire a junior developer.
It's just way easier to blame the hire than your company.
I'm talking about one problem at the start of the process. In the example, I didn't touch on their choice of sort algorithm. I was pointing out that they believed that re-sorting the same array, for every single GetIndexAt(x) call, was an ok thing to do. The majority of boot campers did, the majority of CS grads did not.
So if we have two distinct groups applying for a junior level position, and one group has a stronger grasp on fundamentals, I fail to understand how a company is at fault for choosing the better candidate. Objectively, the junior level CS grad had a better understanding of the problem.
Or it was just allowed to let lie and they said it's an okay thing to do because that's what's in their code?
I think it's a huge mistake to conflate whether someone does know and whether they can know something. Some of the best programmers I've ever seen started off pretty clueless - most of that group learns things absurdly quickly too.
I don't think that exercise gives you good information other than to confirm your expectations. I don't know whether that can tell you if they'll bring value to your organization or not.
If it's enough for you to say that because you have a test that everyone takes and it filters your candidates so that's proof of ability, without even going into the results and asking if your test is optimizing for the correct things, there's nothing I can say to convince you otherwise.
Anecdotal, but I know about a half dozen people with experience and CS degrees who would blow your filter but can really get shit done and don't really need any training.
Hiring is hard and the real shame of this industry is that collectively we don't approach this problem with the same level of rigor that we do everything else because by and large we consider this sort of work to be beneath us and not worth a significant investment of our time.
I don't advocate talking to every candidate but I don't think it's possible to estimate someone's skill without talking to them (even email is a form of conversation).
I find much better filters for that sort of thing are ability to follow directions and attention to detail. If you have hundreds of applications, I guarantee they're not all great spellers or communicate effectively. I value the soft skills way above programming ability (since we have to communicate effectively every day) in the early stage.
I find that it's pretty easy to demonstrate that you "have it" from portfolio, resume, cover letter and the application process.
Personally it's a huge pet peeve of mine in an interview process whenever I have to write code and there isn't some discussion about that code - to the point that I feel it a waste of my time and a strong signal not to work there.