top | item 8515311

What to Expect from a Developer “Bootcamp” Program

46 points| karlhughes | 11 years ago |karllhughes.com

22 comments

order
[+] brudgers|11 years ago|reply
While you can certainly argue that not every code monkey needs to know how a microprocessor works, there’s a middle-ground somewhere that every software engineer should know.

The idea that a decent software developer can be created in six months of education and experience is based on the same notion of professionalism that underpins the idea that a decent software engineer can be created in six years of education and experience. The term "engineer" means something in professional disciplines, put "senior software" in front of it and you may as well bet on getting a twenty something not a greybeard.

It's as if deciding to enclose a screen porch and paint the bedroom made someone an architect. The author takes it as a given that these graduates are engineers. That's how low the industry standard is. It's nuts.

[+] neekb|11 years ago|reply
Wrong title. "Nobody can make you a decent ANYTHING in less than six months." At least job related. You need to make a bunch of mistakes and have a bunch of "AH HA!" moments when those theories you learned in school or a book actually make sense.
[+] joshdance|11 years ago|reply
Counterpoint: I joined my last company with very little programming experience. With a great mentor and lots of work I was 'decent' in 6 months. I worked closely with the other developers and handled one of the big features of our app by myself.
[+] delluminatus|11 years ago|reply
It sounds like you've found an awesome learning environment, and I bet in a year (or whenever, depending on when this happened in your life) you will look back and see just how limited your knowledge was at that time.

Learning software development is a rabbit-hole that never ends. Anyone can look back, see their own dumb mistakes, and recognize that even they, with X years of experience, still didn't fully "get it". I think it's that kind of feeling which leads people to criticize these development schools.

Of course this isn't unique to software development; it's a feature of every vocation. But many other vocations do a much better job acknowledging and addressing the difficulty of attaining expertise, and have a great respect for experience that seems to be lacking in the startup world.

[+] crpatino|11 years ago|reply
> I joined my last company with very little programming experience...

I think you underestimate the bast amount of tacit knowledge it takes to write a simple (yet working and correct) 1-5 KLOC program. That itself requires as prerequisite another bast amount of tacit knowledge on how to operate a computer.

It sounds more like you have made the jump from "advanced beginner" to "junior practitioner". That would have been impossible if you did not have a minimum knowledge and skill base to start from.

[+] galaxygr|11 years ago|reply
Proper training and support goes a long way.
[+] ceejayoz|11 years ago|reply
How does the fact that you were decent after six months refute the argument that you can't get decent in less than six months?
[+] papasmrf|11 years ago|reply
For myself, it will be three years in March 2015 when I first began to code. I am in my 30s and a lawyer by trade, with a life science background. My own assessment is that I have picked it up quickly, with good knowledge of PHP and Python, Javascript, and HTML/CSS.

But I am only just now starting to really understand the big deal about MVC, OOP, autoloading classes, testing, package management, versioning, etc. I think these concepts are what separates a coder from a skilled well rounded developer. As I have gone through the learning process, it took certain experiences with coding web applications (most of which I never released) where I could better understand why MVC or OOP was a better way to do things. My comprehension of those higher level topics came along much more slowly then did the syntax; and I don't think a 12 week code school can truly allow a student to grasp those topics (there just isn't enough depth of knowledge after 12 weeks).

[+] mqsiuser|11 years ago|reply
You study 6 years CS, then start your first job, how do they treat you? - like a beginner,... which has to learn,... "like everything".

"It's product-know-how that counts", but also "a good theoretical foundation" (for thinking logical, and believe me, it is better for everyone if you have that). So 6 years of studying + years of experience (for each product), the more the better.

Unf. you are mentally fittest between 20 and 30. Youngsters may make up with that, but I don't worry about my future.

It's not that 6 months is too little, it's that nothing is ever enough (and more is always better).

I guess some young startup guys may disagree and yes, there are Marc Zuckerbergs, which escape the law.

I don't want to hold you back from trying to escape this law.

[+] peapicker|11 years ago|reply
"Unf. you are mentally fittest between 20 and 30. " -- not in my case. My best work and all my patents have been in my 40s (so far, still there).
[+] robomartin|11 years ago|reply
It depends on the skill set a student brings into these programs.

If they have a degree on Underwater Basket Weaving, well, unless they just happen to mentally click with programming, no, they are unlikely to do well.

If, on the other hand, they have a solid ten year career in software development and just need to get up to speed on, say, iPhone development, yeah, they are probably going to come out of the course absolutely rocking it.

To put it in what some might consider to be somewhat violent terms: It's the old garbage-in, garbage-out principle.

[+] Binky_Bob|11 years ago|reply
Granny-to-Guru in 12 weeks is clearly unrealistic.

What about a mid-career move from infrastructure/operations with significant experience with Perl / Shell / etc. programming? Or a COBOL / C++ / Java developer that's been stuck in corporate-land for the past 20 years? Or a business analyst that's been pushing excel sheets and access databases around for years, maybe with some BI tools sprinkled in for fun. There are a ton of relatively experienced "computer people" facing uncertain times as cloud environments close down corporate data centers, and outsourcing eliminates developer jobs.

The current dev environment is bewildering to say the least -- you don't just learn Javascript -- to be effective you need to learn a ton of other things -- HTML, CSS, Jquery, test-driven-development, grunt, git, various frameworks, jasmine, node and/or ruby on rails (or equivalent), pair programming, etc. Each of those leads down its own rabbit-hole of complexity and extra tools to know.

It seems like these bootcamps, done well and with the right sort of student, would give a massive 'level-up' into the current dev world. For mid-career types where there is a need to minimize time away from a paycheck, a 12-16 week program is a good fit.

There are few realistic alternatives:

Go back to school for a CS degree, working on it nights, maybe with tuition re-imbursement from work. -- This is insane -- schools don't teach the above, they teach algorithms and specialize in toy projects, not the real world. Doing it part time while at your day job just adds years to the process putting you even further behind.

Start or contribute to open source projects. This is easier said than done as it pre-supposes a knowledge of and familiarity with using the above stack of tools or their equivalents. For the dedicated self-starter with a lot of determination and energy to stay up at night doing this it could work. People with kids and other commitments would find it very tough.

I don't think the bootcamps are going to turn a fine-art major with no prior computer experience into a $100,000+ web developer in 12 weeks. I _do_ think that it could turn a $90,000+ corporate programmer or infrastructure person into a $90,000+ web developer, now with a foothold in the world of the "cool kids" and an escape hatch from the stifling corporate world.

[+] hkarthik|11 years ago|reply
> It seems like these bootcamps, done well and with the right sort of student, would give a massive 'level-up' into the current dev world. For mid-career types where there is a need to minimize time away from a paycheck, a 12-16 week program is a good fit.

I actually think that's an important niche that is being under-served right now. We often get career Java devs or .NET devs at our Ruby user group here in Dallas and they want to "break into" Ruby. Most employers won't give them a shot and they are then stuck in the "need experience to get experience" treadmill.

I was in the same boat and got lucky in that someone took a chance on me. But it wasn't a very easy path at all. Having a bootcamp focused on experienced dev with job placement at the end would have been worth its weight in gold.

[+] obviouslygreen|11 years ago|reply
insert snarky comment about the time it takes to learn to set up a hosting environment that can survive an HN self-post here
[+] Bahamut|11 years ago|reply
It took me about 1 1/2 years to become good in my sector of development - even with an ideal environment, there are a lot of thought processes that just take time to mature. I find that time away from programming can be just as important as time spent programming in order to digest concepts and workflow.
[+] markbnj|11 years ago|reply
Can't get through to the server, but I agree with the title.
[+] squeaky-clean|11 years ago|reply
While I agree that coding boot-camps and all these fast-track programs can't produce a skilled, well-rounded developer in their own right, I don't think they're necessarily bad as long as expectations are managed (and the blog author seems to agree with this, I just want to discuss it a little more).

I think the hardest part of programming learning to "think like a computer," which isn't just learning how to use something, but really adapting the way you think, and takes a while to develop. Something you can't do through a boot-camp (luckily you can learn learn this in many ways other than programming, and many people encounter it throughout their lives). Until you can get past that hump, a lot of programming is spent just learning why the computer is "choosing" to do what it does, and is really wasted in the context of learning to build applications. Once that happens though, things get rather quick, and it's more about handling a lot of breadth, rather than depth. (This is ignoring more advanced CS concepts, which are a whole different beast than just making products).

I have been mentoring a friend who wants to learn to build mobile and web apps. Same situation the author proposes, an English major who realized he doesn't really like his options. It has been less than a month, but he's surprisingly good already, better than any of the undergraduate CS students I've tutored (however, the CS undergrads who write great code don't need tutoring, heh). We haven't touched web/mobile yet, but we've begun building programs together. A flappy-bird clone using PyGame for example, that we later plan to rewrite as an app. I think working so quickly towards making full-fledged finished products keeps it very fun, and you get to see how ideas work when combined with other ideas, something universities don't often do outside of end of the semester projects.

I've been focusing more on teaching him to teach himself, rather than outright learning languages or frameworks. In 6 months he won't be a rockstar, but I fully believe he'll be able to make his own projects from scratch, and be able to jump into any teams projects with a reasonable amount of time to familiarize himself.

I think what really helps is that he already has a great grasp on concepts in programming that are so foreign to newbies. I don't know how, maybe all the experience we have playing pen-and-paper RPGs. It only took me an hour or so to teach him about classes for example, and he was able to understand the difference between a class, an instance, static and non-static methods, or structuring conditional statements. When I tutored, I spent 90% of my time just trying to drill in these concepts. And if he had needed a ton of time to fully grasp the difference between references and objects, inheritance, or even a for loop, he just could not have progressed so quickly, and even if he did, I feel he would not fully understand what is going on in the code, and would take it away with an understanding more like taming magic, rather than a tool and a science.

(long comment, haha. Spent quite a bit of time in the back of a meeting slowly writing this out, so it may feel fragmented/rambly).

[+] papasmrf|11 years ago|reply
I just had to respond because I am a somewhat new developer and after a while I could also tell you what a class was, an instance, static methods, public methods, private methods, etc. But i'd be darned if I could look at somebody else's class for doing something and be able to tell you why there was a static method over here, a private method over there, and a public method somewhere else. I guess my point is that somebody could abstractly tell you what those different definitions are, but that is much different than actually being able to write a class correctly. (at least in my experience.)