• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Rob Spoor
  • Tim Cooke
  • Junilu Lacar
Sheriffs:
  • Henry Wong
  • Liutauras Vilda
  • Jeanne Boyarsky
Saloon Keepers:
  • Jesse Silverman
  • Tim Holloway
  • Stephan van Hulst
  • Tim Moores
  • Carey Brown
Bartenders:
  • Al Hobbs
  • Mikalai Zaikin
  • Piet Souris

Coding "bootcamps"?

 
Ranch Hand
Posts: 789
Python C++ Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
There's a recent trend that claims to be able to take a non-programmer and put him in a "bootcamp", typically 3 months long, and make him an employable programmer. What do you think of this? Is it just more of people underestimating programming? And is there really such a shortage of programmers? Just search for "coding bootcamp" and it will all turn up. The stories are in legitimate publications, like Huffington Post.
 
author & internet detective
Posts: 40747
827
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Coding "bootcamps" are interesting. I think it is a type of training. When joining some large financial companies, they have their own internal training before folks start on the job. It focuses on specific skills that are needed. And depending on the curriculum, it could work. It's certainly possible to develop the knowledge required to program in one language from scratch to 3 months. I'd be curious to see if they teach concepts - understanding performance, security and why things work are important. I think it will be interesting to see what happens as these companies gain more of a track record. It is possible to become a coder by self-teaching, but harder. The bootcamps are certainly an advantage over that. Also, it isn't always from scratch. For example, this bootcamp requires 150 hours of pre-work. That way the bootcamp can focus on learning more advances skills, working with teams and solving actual problems.

One key thing I think about when I hear about these is what is a "coder." While I certainly code, I don't consider it my job. It's a skill I use to do my job. My job is solving business problems, improving processes, ensuring our applications meet non-functional requirements, etc.

When interviewing someone, I'm looking for evidence they will be able to code. For a college grad, this is internships, volunteer work, etc. From a bootcamp, they probably have something to show from the program itself. Having this portfolio is very helpful. But I don't just want someone who can code what they are told. I need understanding. I suspect some bootcamps develop that and others don't.
 
Rancher
Posts: 2759
32
Eclipse IDE Spring Tomcat Server
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
One of the problems with college education is that, even though it's great in teaching you concepts, it's not great in teaching you the latest and greatest technologies. The idea behind coding bootcamps is that they are intended to bring technologists upto speed on latest technology. They are intended to be add-ons to a "real" university education. Of course, there is nothing stopping people from non-CS backgrounds from taking those courses and claiming that they know programming. Also, there are several bootcamps that are targeted towards people from non-CS backgrounds

I think there are pros and cons to this. Bootcamps might teach you how to bang out code. They can't teach you how to do it the right way. They can;t teach you how to design. They can't teach you how to write maintainable code. More importantly, they can't teach you how to learn. The biggest advantage that a CS related university degree gives you is that it teaches you enough fundamentals that you can start self-teaching after college. In IT, you are a life long learner. Bootcamps don;t make you life long learners

On the other hand, there is a high demand for programmers with the latest skills. From an economic point of view, demand outstrips supply, which is why programmers are able to demand that is higher than average. Although this is good for individual programmers, it's not good for the industry or the economy. Innovation gets stifled because there just aren't enough people around. What we need is people who can bang out code, which is what bootcamps provide. We do need university trained engineers too, but we should be focusing these engineers on the harder problems. They should be focused on building frameworks that makes it easy for bootcamp trained programmers do their jobs. We need engineers to be focused on understanding requirements and building solutions, not banging code. In short, we need more programming "technicians".

We have plenty of engineers who do technicians work. Seriously, do you need a 6 year degree to write a CRUD web app? If all you do your entire life is make CRUD web apps in one language, then your 4-6 year degree is a waste. A kid could do that after attending a 3 month bootcamp in web development! S/he may not know how everything works, but is able to put things together, in much the same manner as your plumber may not really know what went into the design of your plumbing, but can put a sink together.

I think bootcamps are good. They generate coding monkeys. Coding monkeys are good. They allow engineers to focus on the bigger picture.
 
Jeanne Boyarsky
author & internet detective
Posts: 40747
827
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Jayesh A Lalwani wrote:One of the problems with college education is that, even though it's great in teaching you concepts, it's not great in teaching you the latest and greatest technologies. The idea behind coding bootcamps is that they are intended to bring technologists upto speed on latest technology. They are intended to be add-ons to a "real" university education. Of course, there is nothing stopping people from non-CS backgrounds from taking those courses and claiming that they know programming. Also, there are several bootcamps that are targeted towards people from non-CS backgrounds


That's interesting. I only knew about the ones targetting non-programmers.
 
Ranch Hand
Posts: 343
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Jayesh A Lalwani wrote:I think there are pros and cons to this. Bootcamps might teach you how to bang out code. They can't teach you how to do it the right way. They can;t teach you how to design. They can't teach you how to write maintainable code. More importantly, they can't teach you how to learn. The biggest advantage that a CS related university degree gives you is that it teaches you enough fundamentals that you can start self-teaching after college.



I don't believe a CS degree fills these gaps, either. They're very theoretical and focus very little on what it takes to write "good" code, and more on how computer hardware and software systems operate.

What we need is people who can bang out code, which is what bootcamps provide.



I disagree. We need people who can write good code, and there's a tremendous shortage of those types of people. It takes more than just framework authors. For 20 years we've been talking about mechanisms that allow non-coders to write good code, and we're no closer to solving that problem. People aren't very good at breaking problems down into discrete logical steps and optimizing them - that's true with processes in general, not just software.

We have plenty of engineers who do technicians work. Seriously, do you need a 6 year degree to write a CRUD web app? If all you do your entire life is make CRUD web apps in one language, then your 4-6 year degree is a waste. A kid could do that after attending a 3 month bootcamp in web development!



Sure, if your CRUD app has 20 users. I saw a lot of developers who wrote functional code that completely failed once it had any appreciable levels of load or concurrency.

S/he may not know how everything works, but is able to put things together, in much the same manner as your plumber may not really know what went into the design of your plumbing, but can put a sink together.



Are you suggesting that there is no practical difference in skill between an experienced and novice plumber?

I think bootcamps are good. They generate coding monkeys. Coding monkeys are good. They allow engineers to focus on the bigger picture.



Coding monkeys are awful. If the task doesn't require thought, it should be automated.

Cheers!

Luke
 
Jayesh A Lalwani
Rancher
Posts: 2759
32
Eclipse IDE Spring Tomcat Server
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Luke Kolin wrote:

I disagree. We need people who can write good code, and there's a tremendous shortage of those types of people. It takes more than just framework authors. For 20 years we've been talking about mechanisms that allow non-coders to write good code, and we're no closer to solving that problem. People aren't very good at breaking problems down into discrete logical steps and optimizing them - that's true with processes in general, not just software.



Just to be sure. I'm not talking about non-coders writing code. I'm talking about non-engineering coders writing code. I see being able to design good software as a skill that is orthogonal to converting design into code. You don;t need a 4-6 years degree from an engineering school to write good code. You need that degree to do design and solve problems. We need engineers to do the design. We need coders to do the code. Right now, we take engineers and all they do is code, which is a big waste of their engineering degree




Sure, if your CRUD app has 20 users. I saw a lot of developers who wrote functional code that completely failed once it had any appreciable levels of load or concurrency.



Again, just to be clear, I don't mean letting a bunch of people who have done coding bootcamps lose on a project, nor did I ever say that. I'm talking about engineers focusing on solving the hard problems and doing the design while coders do the grunt work

Right now, I can have a developer bang out a REST service using Spring pretty easily. I can have another Java script developer consume that REST service produce a good looking UI. I, as an engineer, can focus on the design aspects, the DB design, designing the interfaces between the UI and the REST service, sizing out the architecture for scalability and efficiency, etc, without writing a line of code. I can do all the "figuring out". I use engineers to bang out this code. Why do I use engineers? Because that's what is available. These guys can do a lot more. It's a waste of their education. I could use coders who are trained in bootcamps to do the same job.



Are you suggesting that there is no practical difference in skill between an experienced and novice plumber?



No, who talked about experience here? That's a complete red herring. I'm saying there is a differrence between a construction engineer and a plumber. Right now, in the IT industry we train people to be construction engineers and then ask them to do plumbing jobs. Then the engineers cannot do plumbing jobs because they haven't had too much experience swinging a wrench in school, we send them to wrench-swinging "bootcamps". Then people who have never gone to construction engineering school show up and learn how to swing wrenches as well as the engineers, we sneer at them because that's the only way we can justify the education loan.
 
Saloon Keeper
Posts: 24314
167
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
If someone is mindlessly writing the same code over and over again, there's something wrong. Mindlessly is what computers are for. If it's really that unoriginal, you should get someone to lay out a template and forget the coders, just hand it off to clerks. But mindless never seems to scale, or otherwise these gee-whiz self-programming products that have come along like clockwork ever since I first entered the profession (and likely long before) would have done what they claimed they were going to do: made programmers obsolete.

Granted, there are parts of a project that require greater and lesser skill and knowledge. But that's what junior programmers are supposed to be good for.

As it is, we seem to be bent on inventing the equivalent of a ladder where the first meter or so of rungs are sawn off. Even if it worked, there'd be no career path to accept junior programmers and allow them to grow into senior developers.



I often say that the deadliest words in IT are "All You Have To Do Is..." and frankly, the idea of using a bootcamp to take unskilled civilians and make unskilled code monkeys out of them strikes me as just another way of expressing that.
 
Luke Kolin
Ranch Hand
Posts: 343
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Jayesh A Lalwani wrote:I see being able to design good software as a skill that is orthogonal to converting design into code. You don;t need a 4-6 years degree from an engineering school to write good code. You need that degree to do design and solve problems. We need engineers to do the design.



I disagree on design, but I do agree with you that you a degree doesn't necessarily create great coders. Having an understanding of the theory behind computers can make one a better coder and designer, but not necessarily. And it's also not the only way to gain such knowledge. I also disagree that one requires an engineering degree to do design. I've seen some fabulous software architects who had no formal education in the field.

We need coders to do the code. Right now, we take engineers and all they do is code, which is a big waste of their engineering degree



Why do you make an arbitrary distinction between "design" and "coding"? To me, there's a continuum and anyone too far on either end is likely to yield poor results.

As Tim and I point out, if the work is so mindless and requires so little thought, there shouldn't be a human doing it at all. From my own experience, a freshly minted engineer is next to useless and shouldn't be left alone - they require experience doing a lot of low and high level work to truly understand the effects of their designs. My best experience (although I hated it at the time) was dealing as a "coder" with an Architect overly focused on theory and really bad development practices, because it served as a warning not to be "that guy" and to always see the practical impacts of my designs.

I'm talking about engineers focusing on solving the hard problems and doing the design while coders do the grunt work Right now, I can have a developer bang out a REST service using Spring pretty easily. I can have another Java script developer consume that REST service produce a good looking UI.



You miss the point. Sure, you have code that emits and consumes data. Does it scale? Has it been implemented in a way that makes sense, is secure and doesn't cause unnecessary traffic under load? Jayesh, I've interviewed dozens and dozens of "coders" who can faithfully implement whatever services I specify and then are completely befuddled once they get a dozen concurrent users and the whole thing falls over. The amount of effort an architect requires to avoid all that isn't worth the time and energy - you need implementation teams that can do design as well as following specifications.

I, as an engineer, can focus on the design aspects, the DB design, designing the interfaces between the UI and the REST service, sizing out the architecture for scalability and efficiency, etc, without writing a line of code. I can do all the "figuring out". I use engineers to bang out this code. Why do I use engineers? Because that's what is available. These guys can do a lot more. It's a waste of their education. I could use coders who are trained in bootcamps to do the same job.



I'm curious - what's the scale of the systems you design?

Right now, in the IT industry we train people to be construction engineers and then ask them to do plumbing jobs. Then the engineers cannot do plumbing jobs because they haven't had too much experience swinging a wrench in school, we send them to wrench-swinging "bootcamps". Then people who have never gone to construction engineering school show up and learn how to swing wrenches as well as the engineers, we sneer at them because that's the only way we can justify the education loan.



Here I agree. The most successful organizations avoid credentialism - they've learned that education is orthogonal to talent and tend to ignore it. The best talent tends to avoid places that focus on credentialism too much.

Cheers!

Luke
 
reply
    Bookmark Topic Watch Topic
  • New Topic