Junior – is one who understands the basics of programming. They normally have a related degree or they are self taught. Their code is continually reviewed. Guidance is given in regards to algorithms, maintainability and structure.
Mid-Level – is one who understands day to day programming. They work independently to create robust solutions. However they have yet to experience creating or maintaining large or complex systems. In general Mid-Level developers are great with component level development.
Senior – is one who has spent the last 10,000 hours (not literally) programming. There is a strong understanding of coding design patterns, They use asynchronous programming, queuing, logging, caching, security and persistence when appropriate.
Luminary – is one who has mastered their skill and has set about improving their respective discipline (this doesn’t have to be coding). These people may include Gabriel Weinberg, Jeff Bezos and Steve Wozniak.