Self-taught in the 90's, employed as a SWE in early 2000's at a top-tier employer. I was not successful and ultimately pivoted to Product Management and have had a successful career since.

I mastered functional and then object-orientated self-taught programming as a teenager in high school, and ended up employed at 18 with a graduate level job at a well-respected technical employer.

I was able to do the job in front of me, which is why they employed me without a degree, but working with incredibly experienced engineers who had previously worked at Apple and IBM I soon realized that was a vast difference to how they approached problem solving, system design and design patterns. We were building the content management system of a large news organization so it was a significant system.

I think my lack of design patterns learning was probably the most profound indicator of difficulty. I had muddled through learning programming from books and looking at mostly crappy open source code whereas my peers had learned academic CS at MIT or Cal. That was clearly a significant delta between my ability and their ability, and I realized that ultimately, I would never be able to compete with them or their wider academic peers in the industry without that level of training.

For various reasons if I had gone to university I would I have attended the equivalent of a community college and therefore the quality of my CS wouldn't have been particularly good anyway. I just never had the opportunity to attend a prestigious university.

15 years later, working at Uber around 2014, I worked with some of the best engineers I've ever met and saw some really significant work done. I already knew that I had made the right decision when I pivoted in the mid 2000s, but my experience with Uber really confirmed it.

I know this Ask HN asked about successes but actually I think my career was successful because I had a good enough understanding from being self-taught while making sure I changed track to one that I could be successful in.

I'm not sure anyone would hire an 18-year-old software engineer without a degree in the current era and I was lucky because the internet was just in its early formational years in 2000, when I entered the job market. I don't think that's possible now.

My advice for self-taught programmers would be to consider how you approach the gap in design patterns and learning by osmosis from those knowing best practice that your peers who have academic CS training.

I think you also have to consider how you will compete with those who not just have a CS degree but attended a top tier university. Maybe you don't want to work for a Google or Apple, and that's fine, but I think it's important to know what your goals are and whether a lack of formal education will enable you to get there.

For me, I worry that self-taught programmers become about the same as those who went through one of these boot camps- able to work on internal tools or lighter workloads but really reach a ceiling of their ability in the mid-career unless they pivot to something else like eng management, product management, etc

As a former hiring manager at one of these companies, despite being self-taught myself, I'm not sure I would hire someone with the same lack of academic background I had, unfortunately.