What differentiates junior and senior programmers, beside years of experience? originally appeared on Quora: the place to gain and share knowledge, empowering people to learn from others and better understand the world.
Niels Bohr once said, "An expert is a man who has made all the mistakes which can be made, in a narrow field."
Career growth in software engineering (and many other areas) is determined by the depth of knowledge and the breadth of expertise. A project can scale both horizontally, and vertically - which requires a different set of skills and experience in practical applications following both patterns.
In practice, a senior developer can solve almost any type of problem with less supervision. They can assess the risks, ask the right follow-up questions, determine the right workflow, analyze the possible bottlenecks and deliver a stable solution (usually well-documented and tested).
A junior developer can solve a limited set of problems with a smaller subset of alternative solutions.
For example, an organization may need a simple blogging engine (just for the sake of an argument).
The junior developer is probably familiar with one programming language, framework, or a platform. They will pick it right away and implement a semi-stable solution that solves most of the problems in certain use cases.
A senior developer will take a more prolific approach. They will analyze the business goals and the technical challenges (expected amount of traffic, user roles and capabilities, different use cases and flow diagrams provided by the PM team).
They will pick a certain framework that suits the business and budget constraints. Moreover, the senior engineer will propose several different ways of implementing that with their pros and cons. The management team can revise the options and pick the one that closely corresponds to the needs of the customer.
This may include a standard MySQL schema, a NoSQL database for storing certain activities, a SPA application interacting with the engine through a REST API or whatever the engineer thinks is the best possible option.
This is a limited example, of course - but it shows the different approach given the wider and deeper understanding and experience of the senior developer. Moreover, the senior engineer has normally experimented with all approaches and knows what actually goes wrong in most cases.
The theoretical problems in a book are different from what happens in action. And if the senior developer has already spent several years within the organization, they can already assess the skill set of the other team members, their strengths and weaknesses, the standard workflow that the management takes and what would result in the best solution within the constrained requirements.
This question originally appeared on Quora - the place to gain and share knowledge, empowering people to learn from others and better understand the world. You can follow Quora on Twitter, Facebook, and Google+. More questions:
- Programming Languages: How do programming languages work together and are some not compatible with others?
- Software Engineers: As a new software engineer, why should I stay at a company for longer than one to two years?
- Career Advice: Is our boring future going to be moving from software development to tools configuration in big companies with big projects?