So you've been doing your job for a few years now. You worked hard, you're making a lot of money, and the future is bright. It must be because you're awesome, right? And those people who didn't get as far as you must not have been as awesome. To this, I say Hah! Maybe you put in the effort, but how much control did you have over your job circumstances?
Take me for instance. I've been working for my employer nearly 12 years now. I'm in management with a bunch of direct reports, and have gotten plenty of raises and bonuses over the year. I think I do a pretty good job. However, I can tell you with absolute certainty that I really lucked out on my start date.
Because I started in May of 2002, I was put on a team with
rishu73, who was basically the most patient mentor ever. I don't learn particularly well from books or videos, so I asked a ton of questions every single day.
rishu73 also had very strong opinions on software development that he transmitted to me. A less patient mentor might have told me to get stuffed, or complained that I was keeping him from getting work done. A less diligent mentor might have instilled different, less effective opinions into my brain. Either one of those might have turned me, despite my hard work, into a less effective developer who couldn't progress nearly as far professionally. For that matter, I ended up on a team that was doing interesting work in a lot of areas, which gave me a good grasp of a large part of our product suite. I could easily have gotten placed on a team that specialized on one product and become pigeonholed in an area that would have been hard to get out of.
I've also been very fortunate that my own managers over the years. I've not once had a manager who micromanaged me, or who ignored my feedback, or who didn't generally have my back. I owe my promotions in part to managers who went and fought for me at higher levels. The achievements I had that they used to conduct those fights would not have been accomplished with micro-managers who didn't let me experiment and attempt things outside my official duties.
So yeah, I worked hard. But suppose I'd started a year earlier, which I almost did. I might well have been on a different team with a different manager. Maybe I wouldn't have had a patient mentor, or worse an incompetent one. Maybe my manager would have discouraged me from trying new stuff. Maybe I would have gotten fed up and quit, or been fired for being me. In fact, there was a developer who started a year before me who only stayed four years or so. He worked hard but by most accounts wasn't as good as me, but how much of that was because he got the wrong manager?
I'm proud of what I've gotten done. I'm smart enough, and I work hard. But for me and for most people, it's not enough to be
smart and get things done. You have to be in the right environment. If you're good enough you can function in a bad environment, but if in really terrible environment even the best people will fail.
I have been very, very lucky in my career so far. Here's hoping the luck continues, and that I help create that luck for other people.