I can chime in here, as in my org I'm like the guy you're mentioning.
Here's what I do:
- Whiteboard my learning objectives for the year
- Consult my manager on upcoming projects so I can align my learning with those technologies. So I can get a "two-fer" on both expanding my skills and providing value to the company.
- Read, a LOT.
- Learn as much as I can about theoretical computer science.
- Understand the platform I'm supporting / building by understanding the industry. (read articles about whatever industry my platform supports)
- Practice. Take time to build complex code that I don't always see at work.
- Work a lot.
- Be disciplined in my extremes. This is an important idea. So when I'm developing I focus heavily on productivity. I understand there's a drop off after 8 hours. However, in my experience, if you use things like the Pomodoro Technique and get a full nights sleep, you can actually create and do quite a bit of work. So I work all the time, but I put my Maintenance tasks on rotation, I "chunk" my work and learning and I make a LOT of lists. I can do about 12 hours of solid work. There's a drop off after about 8 hours, but even if efficiency drops to 75% or even 50% after 8 hours, that's still more volume.
- Make habits out of goals. If you want to be a learner without much pain, then learn about Diffuse Learning and Focused Learning (A Mind for Numbers talks about this) and then pair that with habit formation (The Power of Habit). Create or find a Trigger, engage in the Behavior and then Get A Reward.
- In my instance, if I see my manager overworked, I volunteer to take on some of his work or help. He often says he's good, but there have been a fair amount of instances where he uses my help and is grateful for it.
- Understand where your advantages lie.
- Also understand you have limitations
- Help other people in your org
- Be reliable (this is immensely important)
So in my instance, I'm able to out compete fellow devs because the vast majority of them are family people. They come, do their work, go home and spend time with their families.
Here's a core idea:
Competitive advantages are conditions that allow a company or country to produce a good or service of equal value at a lower price or in a more desirable fashion. These conditions allow the productive entity to generate more sales or superior margins compared to its market rivals. Competitive advantages are attributed to a variety of factors including cost structure, branding, the quality of product offerings, the distribution network, intellectual property and customer service.
I realized my competitive advantage is I have no family, no kids, not married. I have a LOT of time. So, that's how I make my mark. I just do more. Without those obstacles, I can invest a lot in myself, my career and my knowledge.
I would suggest you find YOUR competitive advantage. Find something that competitors can't do as well or are weak at, that you are strong at or that comes more naturally with less effort and build and expand on that. Develop it.
The worst way to move up is making others seem small. The best way to move up is to make yourself bigger.
I would suggest you work harder and smarter and find the motivation to do so. I will suggest three books:
Read them, internalize them and then understand what works for you and then do that, over and over. Get used to the idea that being a good / successful developer requires constant growth.
Update: Note in my response, I take a LOT of initiative. Initiative is extremely important.