Today I wanted to touch the subject of programming schools.
The demand for more software developers is enormous and still increases. Software is eating the world. From economics we know that the higher the demand the bigger the price for demanded goods. There are few places in the world providing knowledge for free. We call them academia. The term academia for XXI century people also includes online places like Udacity or Coursera.
Going back to demand. The world needs more and more software developers. Programming schools are one of the responses to the demand.

Purpose of programming schools
Programming schools want to be seen as typical schools. That is a very good way to fit into the picture. The intention is great. I really love it. Cultivate programming - there is no better thing I could imagine.
The students decide to take classes in such places because there is demand, so they could potentially earn more money. That’s why this is a very lucrative business. Now some of those schools allow the students to pay after they get hired and earn some money themselves.
Programming schools claim to teach successfully every single student. They have an innovative system for the classes and homework. They have top-class teachers. They teach the newest technologies (even those just invented). One thing I don’t understand here is how is that possible. Trying to apply those claims to any other areas, e.g. sports, music, maths just does not fit. There is a 100% success ratio. In addition, students joining programming schools are biased because they have huge salaries on the horizon. Those who wanted to program have already graduated from academia.
The twist
The majority of the students in programming schools want to learn something just to have a better living. That is fine.
Problems are elsewhere. The biggest one I see is in intrinsic motivation. How could I motivate myself if the only reason I do a particular thing is to earn money? I think this can be a really tough barrier in the long run. Lack of motivation is dangerous for any developers, especially those without passion. We all know the feeling of working the last month before switching to another job :) Somebody else will have to maintain it.
What programming schools are good/bad at?
Good
- Cultivates programming x1
- Cultivates programming x2
- Cultivates programming x3
Bad
- Teaching touches only selected area(s) of programming
- Skips software development paradigms, e.g. algorithms, data structures, design patterns, SOLID
- Lack of candidates pre-selection
- Factory working style (business oriented)
How all this may end?
In the world where everybody will be a software developer, just because he would know what the difference is between function and algorithm, it would be hard to find those truly great software engineers. Everybody will have 15 years of experience at age 25 :) Things like software craftsmanship will be forgotten. And we will have to teach newcomers about Agile and writing meaningful documentation to what they produce as developers.
Summary
There are home-grown software engineers, who never learnt in academia. In the same way, programming schools will release some good developers. The problem is that we should not start converting everybody to developers just because there is demand.