It generally can't occur without some level of passion for the material. But you also tend to miss the boring details.
It generally can't occur without some level of passion for the material. But you also tend to miss the boring details.
When I started tinkering with Ruby on Rails I never thought one day, in a different context, I would need to write a hardware-specific, custom binary (de)serialization protocol. Then it happened.
I still don't know Haskell, but it was a valuable learning experience anyway.
Started in the 80's with a C64, then progressed through computers and time until began my studies in the university ... for chemistry. Turns out my head doesn't work that way. Began working or a logistics software company on the side.
In 2001, I wrote at work a literal bin-packing algorithm without any formal background or real CS education. I only later learned that it's generally considered a pretty hard problem.
Some time after that, applied to officially change my major subject to CS. The department head was quoted from the meeting, "about time". One of the first mandatory courses I had to take after that one was on data structures and algorithms, which to me was a properly fun one. It was also enlightening: I realised that at work I had independently come up with Djikstra's greedy algorithm for the bin-packing problem.
Ever since then I've followed a simple rule of thumb in hiring - aptitude beats raw talent. Anyone who wants to learn because they are genuinely interested in the field and its problems is in high probability going to be a better hire than someone with talent and education but without the internal drive.
Am I biased? Yes. But am I unfairly so? I don't believe that. And I agree with other posters that self-taught are likely to get more out of theoretical education because they can map the lessons into things they have already done, or things they have done in the wrong way.
I taught myself coding, but struggled through some of my CS computer science classes because I hadn't learned some (important) boring details. My peers who hadn't coded before, but were otherwise bright, excelled in these classes and have had impressive career trajectories after school.
Based on my personal experience, I don't believe prior experience with programming before college is that predictive of engineering talent.
This also has to do with networking. I was a CS major and a friend of mine, who couldn't code and wasn't interested in coding, was also a CS major.
He joined a fraternity and after graduation, could have had a high-paying coding job with basically no interview, because of his network.
I learned too late that going to college is 10% learning and 90% getting into the right social/friend groups to help you with your career.
This is what self-taught coders (with no degree) usually miss completely and have to spend years working up the ladder of shitty companies.
I've seen self-taught software engineers build great looking UIs and during the code review point out things like "data structure X" would work better. I get a response about "Premature Optimization," when in fact the right data structure would be less code and I have to show them.
I've also met self-taught engineers who read detailed research papers on topics on and sometimes made things perhaps more complicated than they ever needed to be.
passion & formal education definitely play interesting roles in what people produce.