1. When I am helping the team or especially an individual succeed at a task and move forward. It is when you see that lightbulb go off in someone when they are learning something new, or have been struggling and you can help them find the path to solving it. What is rewarding here is it is impossible to always know the answer, but the person working the problem usually is the most likely person to solve it and so just through talking it out, working together a little, asking questions and challenging them they find answers most of the time which is rewarding to me. Mentoring to me is probably one of the most fun aspects, and rewarding. This can also be the most frustrating situation when you are dealing with someone that is a negative individual and struggles to see that issues are just opportunities to learn or improve.
2. Finding a win-win solution to a task or issue. Whether that is an engineering challenge that has been raised, or it is a people or client issue where you find a solid win-win. Those are great, cause they don't happen everyday, so they are rewarding when they do.
3. Seeing the product actually making a difference, knowing choices we made, things we did impact people. In the place I am now, that is patients being helped given we are in healthcare, but in the past it has been saving a client a particularly large sum of money through our products or services, or making the client money based on the same. I think a lot of engineers (especially newer engineers) miss this aspect because they get so hung up on the technical details or implementation they don't understand the product itself (yes they can tell you what it does but they don't truly understand it). One of the key things I always strive for is making engineering aligned with the client, because when you can feel the pain the client feels, feel the benefits they feel, you will make better choices and be a better product engineer. Isolating engineering from the client/product is always a mistake IMO.
The theme here is I do love the team building and people side. My viewpoint on leadership is that a leader is the support person for their team, they are in front defending their team, leading the team, take responsibility for the mistakes but passing on the credit to the team and at all times support the team regardless of what that entails. If I need to get people food cause they are tackling a problem, then that's my job, if I need to get them the right tools to get their job done properly or make it easier, that's my job to find a way to get them what they need.
Don't get me wrong, I am a die hard and love solving technical problems and generally prefer to work on product, but as a CTO or similar you have to pull back and do what the organization needs at the stage it is in. You should always drive engineering excellence, but you shouldn't be driving day to day decisions/execution unless the company is very small and you are still having to play architect, coder etc. Once you have team leads and teams, you should be pulling back and setting direction and standards but not dictating implementations etc. That is IMO where most people struggle and fail to grow, which leads to them being replaced by a more experienced CTO.
As with everything, there are exceptions with some CTO roles, but IMO this is the way they should all be.
I'm going through this on a smaller scale and have been evolving through my responsibilities for around three years.
I started as the only engineer with total control over a next generation system for a client, then for the last year and a half I have been making the painful transition from solving problems myself to trusting others to solve them.
I've grown a small team from nothing to three highly reliable members by doing much of what you suggest and following similar themes.
My responsibilities have been partitioned among them, group methods and practices have developed between us all, and finally, there is a capable group of people to carry on and evolve my hard work, which is now becoming their hard work. One of the best parts is that they actually produce higher quality work than I do, because I create buffers from business pressure and give them longer runways, so there is more time for attention to detail.
I'm in the process of handing over my duty as team lead to one of them and I'm pushing my way into helping our CTO with product design (and essentially anything else that comes up), where I hope to leverage my understanding of our various teams and business context.
I am evolving my role for the third or forth time by now, and I am doing it out of necessity, because, every hour of my time typically goes toward controlling dozens of hours of other people's time and so without an engaging task like writing code, my days feel endless, because there isn't that much I can do at any given moment. Jumping into my teams code and working on requests directly is actually one of the more self destructive things I can get into lately.
Therefore, I find product design highly engaging, it makes the hours fly (almost as good as writing code) and am sending the message that I'm here to help at a higher level than I ever have previously - apart from growing half of the environment for three years.
I don't even want a career by the way, I'm a remote 1099 freelancer if you can believe it. We have a really interesting team composed entirely of freelancers, but we seem to stick together.
Congrats on finding a way that works for you. To me 1099 vs employee is a payroll not capabilities or contribution distinction. I am 100% remote from my team right now as well, if you can work with people it is not really any different than sitting in an office for most of what we do. With all the collaboration tools anymore, designs can be shared online, Zoom meetings make things easy and Slack etc give you that real-time quick connect when you need it. IMO hardest thing to manage remote teams over is delivery expectations and timelines given people spread across timezones can cause delays just because of their hours of work if you don't plan well.
*edit - word
Thanks for the kind works :)