Dimensions, Aspects, Types.
People are Different
Discussions among software developers can be quite exhausting, can't they? Ever wondered why you always argue with that particular colleague? This could be the case because your colleague is a stubborn idiot. But that's not very likely. It's much more likely that you and your colleague look at software design from a different perspective.
Of course people are different in many ways. There are psychological differences and cultural ones, differences in experiece level, style of work, and educational background. People have different habits, different approaches and different character quirks. But there is also a difference in how we value certain aspects of design. Everyone of us has the tendency to emphasize certain aspects of software design. That's not a bad thing. It's a good thing. But it results in different opinions on which solution is best.
Discussions are very valuable when different aspects complement each other but they are harmful when an endless discussion about two equally good solutions results in reduced productivity and a bad mood in the team.
Find out what's your design type and how you differ from your colleagues by using our questionnaires.
There are four dimensions of software design:
- simple-vs-powerful: Some prefer simple solutions and some powerful and generic ones.
- abstract-vs.concrete: Some prefer having a bird's eye view on software and others rather look at every single line of code.
- pragmatic-vs-idealistic. Some prefer producing value early on and others prefer building maintainable software.
- robust-vs.technologic: Some prefer proven solutions and others like to experiment with new stuff.
Every dimension has its extremes but of course there are gray areas in between. Typically a solution cannot be 100% simple and 100% generic at the same time. But solutions can be characterized somewhere on this scale. Likewise the attitude of a software developer towards software design can be characterized on the same scale. Some developers rather prefer simple solutions some powerful solutions some don't have a strong preference on this scale.
The preferences on these four dimensions largely influence which arguments we use in design discussions. Even more so, if there is a strong preference in one dimension and lesser tendencies in others, this strong preference often dominates a discussion.
Sorcerers, Ninjas, and Others
There are four dimensions each having two opposite sides. This results in 16 design types. Each type has an abbreviation and a name. For example, a developer being Powerful, Concrete, Pragmatic, Robust is called "The Sorcerer" (PCPR) and someone being Simple, Concrete, Pragmatric, Technologic is "The Ninja" (SCPT).
Of course this can be a bit simplistic -- especially as many people don't have a strong tendency in all dimensions. Nevertheless it's a nice model which helps you understand yourself and your colleagues better.
None of these types is better than the other. They are just different. They have their strengths and weaknesses and their very own view on how to design software. People with similar types argue less and discussions among them result in agreements faster. But this also means that certain aspects of design are rather overlooked when there is too much similarity.
Different Types Working Together
Some types complement each other but there are also type combinations that have difficulties working together. Especially two idealistic people who are different in some other dimension often don't play well together. For example an "Author" (SAIT) and a "Space Probe Engineer" (SAIR). Provided that they both have strong tendencies in their dimensions, they will encounter some difficulties. The differnce in robust-vs-technologic results in frequent disagreements and them both being idealistic intensifies their dispute and make it hard for them to find a compromize.
This characterization scheme aims to provide a way to think about the differences you have. So you can better leverage these differerences where they complement each other and understand your colleagues better when these differences make discussions exhausting.
Read more about the 16 types.