One of the big challenges any developer faces is knowing how to successfully progress up the ladder. What do we do to make ourselves stand out, and how do we get the skills we need to move to the next level. For me, this is a problem. Thus far in my career, I've relied on what I consider the most important attribute: hard work. I believe the best way to get noticed and promoted is to finish projects on time (insomuch as we can control these things J) and as defect free as possible. Then, rather than relax, go chase more work. Help others out. I don't think it's long hours, and I don't look for long hours in my developers, people need balanced lives to be happy and effective. When I allocate work, I do so based on an 8 hour day, or at least what I think can be accomplished in an 8 hours day, even if I've been told on more than one occasion by people senior to me that I work faster than most.
If you need to work 2 extra hours a day to keep up, you need to either work smarter or get more skilled. Perhaps both.
The career path for a develop goes pretty much like
Developer -> Developer Lead -> Architect -> (Development Manager) -> CIO.
I've put Development Manager in parenthesis because in my experience as Development Lead, Development Lead performs resources scheduling activites and high level oversight roles too. At least, in my small company, I'm the Development Lead and the Development Manager and Solution Architect in one. Hell, I'm also a Developer. So there's a glaring Caveat, the career path depends on the company you work work.
Another thing I've noticed is Developers will seek promotion to get paid more. Many bosses consider promotion to be management, so will promote good programmer to Managers, where they may make really bad managers. There's something called the Peter Principle, go check it out http://en.wikipedia.org/wiki/The_Peter_Principle .