The fact that you can learn programming for free doesn’t mean that people are determined to put the time and effort in order to become good at what they do and end up earning a big salary.
As a matter of fact, I’ve been involved with several universities, academies, and schools as a seasoned trainer – some being private and charging a solid amount of money, others – completely free. A careful analysis of the dedication and commitment by students may reveal some psychological phenomena – such as generating better results when paying the salary of programmers as you don’t take that for granted.
Since we’ve been hiring several people lately, I heard from a dozen people who have started studying programming 5, 7, or 8 years ago and still can’t cover our junior test assignments. They went to a few courses, probably passed some exams, but finally put everything on hold.
The demand for software engineers (and IT specialists in general) is spectacular. According to the European Commission:
“Europe could face a shortage of up to 900,000 skilled ICT workers by 2020”.
Note the careful mention of “skilled” following the number.
There are well over 50,000 educational institutions worldwide teaching programming – universities, specialized high schools, training academies, and the like. That shortage of IT workers can easily be covered after a single year of professional training given all candidates joining an IT specialty every year.
The caveat is the effectiveness of a training program and the motivation of the trainees. The productivity and efficiency of applicants increase exponentially in several steps – an inexperienced graduate may work a full month on a rookie assignment which takes two weeks for a junior, a week by a mid-level expert, and a day by a senior.
This productivity factor leads to faster delivery of projects, solving emergencies immediately, and taking care of every other aspect related to security, stability, speed for a project.
The vast majority of successful businesses are now online, and they need a professionally established online presence, automation tools, data analysis platforms, internal applications, and so forth. Given the importance of these and the overall demand (as compared to the lack of talented workforce), employers compete for a smaller pool of experts, hence the higher salary of programmers.