"Top talent likes top talent." That I can agree with. I know people can't be fired from big companies, but I wish they could be indefinitely suspended with pay. ("We'll pay you to STOP CHECKING IN CODE.") Then the three people with a clue wouldn't have to waste their time reverting the mistakes of the people trying hard for a good performance review.
You hit the nail right on the head. I used to say this all the time when I was working for Oracle. There were plenty of people who weren't even contributing nothing - they were forcing the competent people to take time away from real work to fix the bugs these people caused. Negative value, indeed.
I always tell people: if you knew you wouldn't get a ticket in a car for running a red light safely, you would do it. As soon as the police start ticketing for running red lights and stop signs on a bike, I'll stop.
I ride in Philadelphia and I try to be somewhat considerate to drivers. I slow down for every stoplight and stop sign, but if nobody's coming, I'm going to go through it, because I'm not going to get in trouble.
I recently had that same epiphany. For fun, I decided to re-implement a simple chat server I wrote a while back in Erlang. I found that everything clicked - the type system worked with me instead of against me, and I was able to create prototypes as quickly as I could think of them. But, it took two years of thinking about Haskell before I could synthesize code in it. (code here: https://github.com/dmansen/haskell-chat)
I consider myself very passionate about programming. I do a lot of research and learn about programming in my spare time, but have hardly any personal programming projects to show. After work, instead of grinding away coding like I do every day, I'm learning how to draw, and paint, and play music. Does this mean I'm not qualified for this .NET position?