In every group of individuals, we can recognize a pattern. Observing and grouping people can give us more understanding of how teams are formed, how they work etc…
I’m in the IT industry for 10 years now. Some patterns started to appear here and there. I will share my thoughts.
7 personality types (version 1.0)
I was able to recognize 7 personality types of software engineer
- SOLID junkie(replaced by Celebrity)
- Beta tester
- Special forces
- Producer
- Code nazi
- Servant
- Pragmatic
- Celebrity
Each of them has different characteristics. Some characteristics are shared between multiple types causing types to overlap.
SOLID junkie This type is very similar to Code nazi so it was merged to it
This type will apply SOLID everywhere. He will seek for patterns. CQRS, DDD, Design Patterns.. everything. All code in codebase must conform to at least one pattern. Such type misses balance between perfection and work done.
Beta tester
New NuGet package released? New fancy NoSQL database? New javascript framework? It’s already in PRODUCTION environment. “Beta Tester” type handles that with perfection. In seconds the whole solution is updated with pre-releases :) Good type for prototype programming. Bad for maintenance :)
Special forces
”Quick and dirty” solution expert. This type has a mission. Objectives are above everything else. Even “cancel mission” command send from headquarter may not work. He is excellent in solving burning problems. Bug on customer’s production environment - he is always ready to fix :) Team member issues are also solved with relevant force. But the mission success factor is 99%. Be careful with this type.
Producer
His main goal is to write. He checks git stats on who has the biggest contribution to the project. More = better. He does not refactor. He rather throws away and writes from scratch. He can produce tons of code quickly. Often do not understand what he wrote last week. Recommended type for software houses.
Code nazi
Perfectionist. “Spaces vs. tabs” could be his master thesis. He will argue till you give up. Every file in solution must follow strict rules. Nobody wants him to do to the code review. Good type for programming critical parts in the application.
Servant
He loves the support. Does not produce too much functionality, but without him, team velocity drops by 35%. He writes essays in code-review and gives fabulous feedback. He likes to teach and guide adepts in the software industry. Recommended for working with novice developers.
Pragmatic
Adds functionality by removing code. Boss ask him for permission when updating production environment. Team members sometimes do not understand the uber-abstraction level on which pragmatic resides. Others say “he knows…“. Best fit for defending team against external world :)
Celebrity
Proud of what he produces, even if it’s crap. Want to be involved in every decision in the project. Describing himself as an oracle. Money and prestige drive him most. Is very good in selling what he produces.
Personality types map
The diagram below shows an overview of how are the types related together. It’s most probably not 100% correct, but it’s a base for further research.
Software engineer type development
Everything changes. Your developer type will evolve. Something obvious and natural last year can become silly tomorrow. You will always have your main type - that will never change because it’s embedded in your personality. In addition, you will adopt some characteristics from other types, because in the current context they are the best fit. “Special forces” can be also “pragmatic”, but will always sleep with open eyes ;)