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 why 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. Academia term for XXI century people includes also online places like Udacity or Coursera.
Going back to demand. The world needs more and more software developers. Programming schools is one of the responses to the demand.
Purpose of programming schools
Programming school 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 their get hired and earn some money themselves.
Programming schools claim to teach successfully every single student. They have a 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 100% success ratio. In addition, students joining programming schools are biased because they have huge salaries on the horizon. Those who wanted to program are already graduated from academia.
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 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?
- Cultivates programming x1
- Cultivates programming x2
- Cultivates programming x3
- 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 is the difference 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.
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 start converting everybody to developers just because there is demand.