So, you've been a developer for yonks, and you've just realised that you'll carry on being a developer for ever unless you get promoted (or fired). The obvious career path seems to be project management, then department management, then manager management (a few times), and finally director. But good developers don't necessarily make good managers. I know this, because I've worked for a couple. Most developers don't seem to want to be managers anyway, so what else is there?
- Lead Developer. Take charge of a major component, and assist junior developers along the way. Make some big design decisions, and discuss with seniors how they will function.
- Software Architect. Design the big picture, how the major pieces interact, and steer other people while they're building it.
- Technical Strategist. (Probably not called that, but I don't know what they're called.) Become the expert for generic things across all the development teams in the organisation: coding standards, release management, re-use strategy, daily builds, researching new tools, technologies and techniques. Implement these across the teams.
- Entrepreneur. Finish that handy utility, web application or telepathic UI that you've been tinkering with for months, pretty it up, and start selling it.
- Educator. Work for Learning Tree, QA, or whoever, telling other developers how to do it, or lecture at schools, colleges and universities.
- Contractor. If you've been working on the same sort of thing for a while, switching to short-term contracts for various companies may introduce some different challenges.
- Consultant. Tell customers what approach they should take with their software projects, maybe designing or coding it for them.
- Evangelist. Work for a large software product company, and extol the virtues of their latest products.
- Author. Write books, articles and blogs about programming.
- Change career. Work for a small or expanding company where programming skills wouldn't take up the majority of your time, but would give you an edge. Many smaller companies wouldn't employ a programmer, but an estate-agent, shop-keeper or magazine editor that could rustle up things to interface to third-party systems and write server-side wizardry for the website would be valuable.
- Salesman. How often do salesmen promise customers completely unrealistic features? Have a real advantage over other salesmen by actually understanding what you're selling (and talking about!).
- Software Tester. Catch the bugs that other developers introduce, and (as delicately as possible - developers are fragile) tell the developers to fix them.