Junior: Can do it with guidance and/or clear and non-transitional specs
Developer: Takes the ball and runs with it. Can walk a customer through requirements gathering and make recommendations. Will help guide junior developers.
Senior Developer: Can architect a system well. Can communicate equally well between executives, salespeople, management, and end users. Can and will mentor lower level developers. Can explain concepts on the fly to lower level developers and walk them through the development process in terms they understand. Takes initiative at learning new technologies.
Not that they have to do it as part of their day-to-day, but that they can communicate well enough to do so if needed. It's a given that the development skills are there in my mind, but to go beyond "junior", I believe someone has to have a strong enough understanding of things that they can both communicate well and be able to recommend solutions rather than just implement them.
Just my personal opinion. Based on environment, this may or may not be a good gauge.
Junior: Can do it with guidance and/or clear and non-transitional specs
Developer: Takes the ball and runs with it. Can walk a customer through requirements gathering and make recommendations. Will help guide junior developers.
Senior Developer: Can architect a system well. Can communicate equally well between executives, salespeople, management, and end users. Can and will mentor lower level developers. Can explain concepts on the fly to lower level developers and walk them through the development process in terms they understand. Takes initiative at learning new technologies.