Basecamp's Handbook can be a good guide. Here is description of their engineering ladder.
It focuses on the responsibility level and how much impact they can have on others.
For example:
Programmer:
- Works mostly on clearly defined and scoped individual features or problems.
Senior Programmer:
- Fully capable of taking substantial features from concept to shipping as the sole programmer (alongside a designer).
- Can provide material feedback on the work of junior programmers and programmers.
Lead Programmer:
- Fully capable of owning and running entire subsystems of work.
- Helps set and maintain professional standards for the entire organization.
It also mentions years of experience, but IMHO that can be misleading.