There can be advantages to a formal program, especially for some people, but claiming that formal education is somehow a prerequisite is a gross exageration.
There can be advantages to a formal program, especially for some people, but claiming that formal education is somehow a prerequisite is a gross exageration.
There's quite a difference between programming, in the sense of knowing how to put (say) Python code together, and being a professional developer.
The latter should include a whole extra set of analytical, algorithmic, social, and professional skills.
In practice it may not - but it does often enough for the distinction to be real.
I even had professors in computer science that hated using computers and could barely conceal their contempt of them.
Then again, any discipline that has "science" in its name probably isn't.
What I think they now commonly mean:
* CS is a branch of math
* the art of building software is engineering
That is why the only valid starting point is : the problem at hand and to solve.
From there, you can work your way back to what lack of knowledge prevents you from solving the problem.
If knowledge does not show up somewhere, assisting you while solving a problem, it is most likely useless knowledge and undoubtedly just a waste of time.
The benefit of self-teaching is that you do not have to try and learn everything in four straight years and then set forth into the world with what you were able to take in during that time. In practice, the gaps become quite apparent when the gaps become problematic and one can quickly fill in the gaps on the fly thanks to no dependence on the schedule of others to fill those gaps.