The software industry is relatively young and there are no standardized job titles with well defined skill/experience levels. Based on my own experience over the last 25 years, working with many programmers, is to ignore the official title and bucket people according to the following observations.
Junior Developer
- Needs to be managed everyday or at least most days.
- Has a narrow view of their job, its all about the code.
- Spends most of their time thinking about how to write code at the level of individual functions.
- Regularly gets stuck and needs technical input.
Regular Developer
- Needs to be managed once per week.
- Writing actual code has become automatic.
- Thinks about designing whole modules of code.
- Considers trade-offs/code patterns/best practice.
- Occasionally gets stuck and needs input.
Senior Developer
- Only needs managing occasionally.
- Thinks about the business problem being solved.
- Managing expectations and requirements is hardest part of job.
- Helps solve problems of Junior/Regular developers.