Seniority Levels - oleksiyp/oleksiyp.github.io GitHub Wiki
The Under-Engineer exhibits shallow thinking by solving problems using solutions that are low in extensibility, readability, and performance. Often these solutions don’t cover all the possible use cases and require refactoring by other engineers as they work on features that leverage under-engineered code. Generally, junior engineers are characterized as under-engineers due to lack of experience.
The Over-Engineer is someone that has recently learned and understood how to use a new technique or technology. They attempt to solve all possible and impossible scenarios by providing an excessive amount of extensibility fraught with multiple levels of misdirection and abstraction. They’re usually technologically religious and will take any opportunity to tell you why a specific method or product will solve all of the team’s problems. Mid-level engineers who recently discovered software design patterns tend to fall into this category.
The Engineer is an abstract thinker that can look beyond the syntax and tools by focusing on the solution. This type of engineer is desensitized to allure of the Next Best Thing because they’ve seen the ebb and flow of technology. This type of engineer understands that their primary responsibility is to understand the problem, its constraints, and come up with a solution. These types of engineers are considered senior engineers and are difficult to find and retain