Senior Developers are expected to be more skilled in the technical aspects of software development. Just by having more years of experience they should be able to solve more problems, have more techniques, be faster, etc.
But, this alone is not enough to make them “senior” in my view. They will be more valuable than a junior developer doing tasks, but you can’t scale a team with a group of expert task doers.
The biggest differentiator between a junior developer and a more senior one is in the scope of their thinking and planning.
To keep it simple, imagine four levels of engineer (Jr, Dev, Sr, Lead). Here are some of the differences aside from programming skill. This distinction has nothing to do with people management—none of these levels have management responsibilities.
- Jr: Right out of school. Cannot do any task without some help. Can plan a couple of days of work.
- Dev: Can do most tasks independently. Can plan projects that take weeks to do.
- Sr: Takes product specs and writes functional/implementation specs and plans. Can plan projects that take months to do. Can coordinate the work of a team.
- Lead: Can plan projects that may take years. Thinks about overall architecture. Establishes processes. Can coordinate the work of multiple teams.
There is more to it than this, but the essence is increasing scope of time, planning, and coordination.
Another way to think of it is in what their goals are:
- Jr: Complete the ticket: e.g. Fix the bug, deploy the build
- Dev: Complete the project: e.g. Implement the export to CSV feature as specified
- Sr: Achieve the mission of the project/team: e.g. Increase paid conversion, reduce the crash rate
- Lead: Achieve the mission of the company: e.g. Increase profit margin by 10%, enter an adjacent market
To be fair, everyone should be working on the mission of the company. The difference is how they think about the work they are doing and how they evaluate success.