There's just more to it than code
Ok, so lets start with a disclaimer. I am a big fan of the alternative approaches to teaching programming. I believe that the advent and rise of the "boot camps" and "coding schools" has been an overall boon to the availability of talented people in our business. We might finally be breaking free of the attitude that only universities can provide the people and skills necessary for the high tech industry.
That said, I am concerned over a rising trend. This trend is implying that the goal is to be "a coder". As the alternative schools are becoming popular, that is the image that the public is developing. This implies that learning to be a programmer is something akin to learning a spoken language. Once you learn the syntax, you can at a minimum muddle through and then the rest will be learned on the job. The popular press is full of interesting articles with titles like "Local Enterprises Helps You be a Coder in 6 Weeks". I have already said I am very in favor of these enterprises. I also don't blame them for the proliferation of the "coder" idea, as every one of these I have explored has been dedicated to more than that. So what's the problem?
My first area of concern is the idea that learning to code is enough. The assumption, and this is even more true of the universities, is that the majority of what you need to know you will learn on the job. Great programmers need to develop advanced skills in problem solving, modern methods like TDD, and the professional and ethical footing that goes beyond any one specific skill. This puts an enormous burden on companies that are trying to create great products, or keep their systems on line and running. Many companies determine (wrongly) that they are better off just hiring "senior" people with 2 or 3 years of experience. The idea that 2 or 3 years of experience is considered senior in our business will be another good blog topic later.
Now many of these companies are finding it extremely difficult and expensive to hire these "senior" people. The junior folks require a certain amount of on the job training. A lot of people wonder why that would be considered a bad thing. We get young, fresh talent and mold them in our image. The problem is, even that young fresh talent is pretty expensive. There is a lot of logic in applying the difference between what you might pay for a more experienced programmer and fresh talent toward taking them to the next step. We just need to acknowledge that there is a next step. Which is where we need to explore Apprenticeship.
The overwhelming experience is that programmers fresh out of school need more to become true professionals, or Craftsmen. We can acknowledge this by creating apprenticeship programs for our people who join the organization. This program would run alongside the real work of the company, so we don't have to wait for "training" to end to start realizing a return on our investment. And the apprentice will be able to see her or his contribution right away, which is highly fulfilling. They learn by doing, and by working with mentors who have "been there and done that".
Apprentices will learn and grow at different paces. Each company needs to identify what they are looking for from an apprentice and recognize and celebrate when an individual meets these objectives. This level of engagement will not only create great programmers, but it will also enhance programmers' work experience and also their company loyalty. If a programmer is having fun, contributing to the team, and learning, they won't want to leave. At the end of the day, we have a fully functioning, highly professional and agile team that will be able to handle anything the market throws at them.
So yes, the code camps and boot camps, and even the universities, get our programmers a great start. But it takes more than that. It takes a dedicated approach to creating true professionals. We can do this through an apprenticeship program, either right after bootcamps, or even at the beginning of a programmer's education, depending on the level of investment you want to make. Either way everyone, especially the people who end up depending on our software, wins.