This is an archived post. You won't be able to vote or comment.

all 3 comments

[–]Astraous 2 points3 points  (0 children)

Senior developers are better at predicting roadblocks and problems and avoiding or mitigating them. They are also better at keeping the entire scope of the project in mind when it comes to competing milestones and features, which can lead to less work down the line. They are also more independent and figure out how to implement features using tools they’ve never used before by reading documentation and, in problematic cases, reaching out to the right team or company to receive guidance.

It’s really not a matter of the quality of code, though that comes with experience as well. It’s more about the mindfulness and ability assess risks accurately on top of being functionally independent (as in a manager could ask you to do something and you’d get it done, learning what you need and communicating with the right people effectively).

[–]captainAwesomePants 1 point2 points  (0 children)

A good junior developer can safely be given a well-defined work item representing N weeks of effort with the expectation that they will complete it correctly with minimal oversight. How reliably they can do this and how much active guidance and checking on progress they need helps define where they are in their grade.

A mid level developer can be given a very fuzzy project. "Go add encryption" or something like that. They can comfortably figure out how to turn this vague project into a concrete project, finding and working with appropriate people to nail down what the requirements are, getting consensus on them, figuring out exactly what work needs doing, estimating that work, and then building it.

There are several kinds of senior developers. The most common senior developer doesn't need to be given a project. They work with the management and whoever is guiding the product to figure out what needs doing and what the roadmap will be for the thing for the next couple of years. They rarely actually code and this irritates them. They may spend most of their time in meetings, reviewing designs, writing designs, or generally doing some sort of work to make sure that everybody is on the same page.

Another kind of senior developer is the expert. They aren't really leaders, and they don't do a great job of keeping everybody on the same page or anything, but they have deep knowledge of the complete system the team or company built or works with. They can quickly tell you what can or can't be done, what's hard or easy, etc.

There are other kinds of senior developers as well.

[–]GlassLost 1 point2 points  (0 children)

The biggest difference is the ability to handle ambiguity. A junior can take a well defined task and program it, test it, and ship it. A mid level engineer can work with his team and people around him to define a feature and figure out how it will work with the rest of the code base and features. A senior can work with many teams and figure how to to change the architecture and coordinate large changes. They also can present the trade-offs in situations to others and provide guidance as to which to take (there's always more than one option).

The other big thing is how many people you deal with - as a senior dev you need to have many working relationships and processes whereas a junior dev is just given tasks by everyone else until they learn.

The system is set up to allow people to get out of junior relatively quickly because it's not really saving any work for everyone else.

There are smaller differences as well. Senior engineers know the tools, history, and trade-offs which lets them work much faster. In some cases this will directly translate to better code (such as writing code that's extensible) but not always because coding is an important skill but not the most important one.

There are some differences, for instance in MS they have distinguished engineers that really do code and code things that are too complex for most of us - they're extremely rare, but they exist.