For me it's pretty straightforward:<p>Dev 0 - For companies that hire college graduates. A developer fresh out of college who has a lot of theoretical knowledge but not practical knowledge. They might still be learning the tools of a professional software developer (source control, testing suites, the debugger, building and deploying environments, etc), technologies (Linq for .Net, Angular for a web dev, etc), techniques (dependency injection, how to write clean code, the value of good logging, etc.), and/or how to operate in a professional environment (stand-ups, interacting with coworkers, dealing with having a manager, etc.)<p>Junior Dev - I expect you to have learned the things listed above. You should be proficient in the language or framework. You should understand the software development process and reliably write "good" code. Meaning correct, efficient, simple, readable, and maintainable. Junior developers are still learning design, architecture, domain knowledge, and when to break "the rules".<p>Senior Dev - The best way I can explain what I look for is, "I can give them any assignment and trust they'll get it done, well, with little to no help from me." Set it and forget it. Domain knowledge is underrated as a skill but it's a super important one. A senior developer should know the 'gotchya's of the particular type of software you make. (If you make billing software they should have a cursory knowledge of accounting as well as compliance issues). The code they write should account for not only the particular module they're working in but the system as a whole. It will follow best design patterns, fit inside of our architecture, but won't be so dogmatic that it sacrifices performance or maintainability. You should be able to stay in the senior role for the rest of your career if you want.<p>----<p>As concisely as I can put it: new hires will as you how to do something. You'll need to ask junior devs, "have you considered..." Senior devs you don't need to think about at all.<p>----<p>Careers diverge after the senior dev level depending on your preferences. If you want to stay pure technical and just write code all day some companies offer an independent contributor or technical expert role. If you really like the design and framework aspect of software you can move into an architecture position. If you want to explore management you can move onto technical lead which is a pseudo-management position.