I feel like I've learned more in the last 18 months than I did in the decade that preceded them. It has totally rekindled my childhood passion for programming (Vic20/C64 basic, Amiga assembly).
I'm a bit ashamed by how far I had fallen behind, but at the same time it shows it might not be too late for someone who got too comfortable until reality hit him in the face.
Quality content is really, really important. So is finding a great mentor. And also other sources of inspiration like DotNetRocks, and reading He every day.
- It takes time to make high-quality resources. Teaching is a real job.
- Asking for money can decrease churn (see: Sunk Cost Fallacy)
- Programs that include synchronous mentoring cost money, but might be more effective
I have a feeling this dichotomy (between self-learning vs classrooms) will be especially true for coding far more often than most subjects. Also anecdotally I found a part-time university course in english/writing to be the opposite of my experience vs learning coding.
That would really be the difference in whether or not I recommended someone down a particular path. But I also believe this is what makes someone a good developer - even outside of the learning experience. Basically your interest and motivation in the subject outside of formal settings. Which drives talented devs towards OSS projects and learning new languages.
Although not everyone has to be above average at their jobs to be functional. There are plenty of BigCo programming jobs where you could be generally disinterested in off hours and still be of value to the organization (see: I've met a number of Java/C++ devs who would fit this category who work in big teams and are happy/functional). Those people would probably be better suited for coding schools. And would probably be a large percentage of those leaving the military for retraining, so I support the OPs mission.
It may be easy to learn new languages online due to having learned the foundations, but unless you can say you learned all the foundations online, this type of comment isnt helpful. As many others have mentioned learning is a science and it takes a lot of work to structure learning in a digestible manner.
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.
But this was in the 80s, when computers came with decent documentation and a guide on programming. It also helped that I was in high school and thus, had the time to devote to self study without having to worry about supporting myself.
So I think it's possible, but it requires a degree of discipline and self-motivation to learn. Not everyone has that.
But to say that "if a person has any sort of formal education in their background ... they are then entirely unqualified to offer such an opinion" comes across as arrogant.
Bootcamps, at least Dev Bootcamp, focus heavily on the mental/emotional aspect of this stuff as much as the technical material itself, and do a lot to build the confidence that really is required for many people.
And yeah, I do think most companies are primarily incentivized by profits, but that doesn't mean they can't provide a genuine service at the same time.
Full disclaimer, I used to work for Udacity and was "trying to make a buck".
Unfortunately, that is the only real skill. Everything else you can learn by using exactly that.
For guidance, there's a literal industry of practicing programmers who pay it forward all the time with source code plus guidance on IRC/skype/email/HN/blogs/etc.etc. Desire to actually learn is the key thing, and while paying someone can help keep your education progress on track even in the face of disinterest (college courses you hate but must pass), it's no substitute for internal motivation. (Edit: a sibling comment does note the sometimes paying can actually spark internal motivation. Paying for things can be worth it, but it isn't necessary.)
"Anyone can be physically fit. Everything you need to know about diet and exercise is freely available."
In education as in fitness it often helps to have a guiding hand.