Lots of companies don't actually want "rockstars". I know someone from college with incredible quantiative and programming skills. He started taking rigorous college level math classes and writing his own compression schemes in high school. He got his undergrad degree in about 2 years by getting permission to enroll in 4+ graduate computer science courses each semester instead of doing the normal curriculum.
When he got hired to do boring tech work at the company I worked at, he just freaked everyone out. The questions he asked were too pointed and he would just do things correctly instead of doing what his boss said. Since he was extremely gifted and had offers to work at other (better) firms, threat of job loss didn't mean anything. All his managers basically hated him.
I know people like that, and I think I've been that person before at my first job. I would argue that someone with great quantitative and programming skills who "freaks out" their coworkers is not a rockstar. To be a rockstar developer, you have to have good enough communication skills to work within your team.
A rockstar developer wouldn't ask questions of their coworkers that would embarrass them; a rockstar developer would phrase questions and concerns in a way that the other people on their team could understand. A rockstar developer wouldn't do something contrary to what their boss said, they would explain why would do something a different way before doing it (or explain why it's better). Now, if coworkers or management are too incompetent for even that, sure, even the best developer would have a bad time.
Part of being a rockstar developer is, in short, knowing how to work with developers who may not be as good as you. I've been there before and while it can be tempting to use that opportunity as a way to establish hierarchy (sadly important if your company stack ranks) by asking technically challenging gotcha questions and showing off how smart you are, it creates a toxic work environment and disrupts other people's work. It's much better to help people grow and not to overwhelm them with technobabble
"Now, if coworkers or management are too incompetent for even that, sure, even the best developer would have a bad time."
I haven't worked with his team, but based on my experience with the company, it's possible that there was some of this, and people being so demoralized that they let the incompetent guy with the most standing make stupid decisions and then just do what he says. But they may not have been as bad.
I admit some envy of people who find their passion early and make the most of every year of their life leading up to a career, but if he's so smart and driven, why is he working at some "boring tech" company as a cog under some layer management? Why doesn't he consult solo and reap the fruit of his precociousness?
> I admit some envy of people who find their passion early and make the most of every year of their life leading up to a career
Don't. At least some of us are having a bad time working because of it.
I found programming in my early teenage years, and - excuse me if I sound arrogant - by now, I've already seen or worked with anything even remotely interesting programming-wise that a regular coding dayjob could throw at me. Gluing together CRUDs from random libraries gets boring very quickly. Solving problems in large systems becomes day-to-day drudgery, because you know that there isn't much smarts there either - all those problems are, unavoidably, self-inflicted. As the codebase grows, you spend bigger and bigger fraction of time allocated to a task on routing - figuring out how to transport some information or command from one piece of the system to another, without turning everything into spaghetti or setting it on fire.
The usual things I see cow-orkers excited about is "oh, I'll get to use generics in Java for this, I've never used generics before!", or "this will teach me Framework X, it's surely a powerful tool that will be very useful for me in the future". They didn't get through this phase in high school, so they're full of excitement about work, however bullshit the project is. If you "found your passion early", you don't get that - all that remains is the bullshit project.
The point being, most of the work I've seen in this industry is pretty meaningless, and it's harder to do if you don't have the comfort of being constantly excited by even most trivial insights in programming. People who started late are better off, because the enjoyment they get through learning also helps them show up and do the work they're being paid for. They don't need to spend time on side projects after work just to retain their love for the craft.
I started programming when I was 8, on the family Apple ][. By my late twenties, I was ready to give it up. Working on legacy code bases for bad bosses has a way of sucking the joy out of software engineering (kind of like after four years in the Army I never wanted to go camping again).
But about the time my kids were old enough to no longer need constant, unrelenting supervision (all my kids were born by the time I was 25) I began taking up side projects again, which has largely renewed my love of programming.
So now I put up with the drudgery of the day job so I can go home and work on something I enjoy (I mean really, the day job could be anything at this point - programming just pays better than anything else I could do, and occasionally an interesting problem at work pops up). Which is also why I tend to become extremely resentful if forced to work very much overtime :)
I never saw it that way before -- but as someone who found programming in their early teenage years too, this sounds very familiar. I still feel a sense of excitement when I learn something new, but it wears off very quickly because most new technologies are just another way of doing the things you did before. E.g. I got to learn Type Script recently, but after a couple of days of getting used to the syntax it felt just like all the other frontend frameworks out there... It's true that most regular coding dayjobs mainly consist of gluing together libraries and solving (often) self inflicted problems, and it's so frustrating!
Well, it was just an internship he got through a relative. He ended up there after getting dinged from Google due to some issue with his class standing or something. He got a much better job after, and then suffered some very tragic personal circumstances, so I'm not quite sure what he is up to now. But I have great hope for his future.
When he got hired to do boring tech work at the company I worked at, he just freaked everyone out. The questions he asked were too pointed and he would just do things correctly instead of doing what his boss said. Since he was extremely gifted and had offers to work at other (better) firms, threat of job loss didn't mean anything. All his managers basically hated him.