I'm imagining a 2x2 matrix where one side has work-hard/not work-hard and the other has advance/don't-advance in career.
I think it's safe to say that one box has very few people in it: not work-hard and advance. I'm sure there are people who don't work-hard and get promoted, but these people must have something that gets them promoted such as great communication skills and the ability to sell themselves, so at least in that sense, they are unique and productive.
I would think most software engineers would fall into the work-hard/don't-advance block because they focus on the wrong things. In my view, you either want to be in the not-work-hard/don't-advance block or the work-hard/advance block, since the don't work-hard/advance block is not available for most people.
My question is, is the way to get to those 2 blocks effectively the same in terms of the skill sets needed, and moving between them purely a matter of quantity or effort? That is, in order to get by at a job where I would be content to just do the necessary work and then go home, I need to learn to be productive in a short amount of time, and then if I decide that I actually do want to advance, I only need to ramp up on the time or effort I put into applying those fundamental skills?
Hopefully this question makes sense.
Thanks!