Builders and architects: two types of programmers
You're probably familiar with the feeling: a programmer in your vicinity or online just doesn't seem to get your point of view. Even though there's no doubt they are clearly wrong. These kinds of encounters make you feel misunderstood, frustrated, yes, even angry.
I, too, deal with these feelings on a regular basis. I read a tweet and think to myself: they are so wrong. I get angry because of the misinformation that's spread, the anti-patterns that are promoted, the lack of understanding.
I've had some insights in these kinds of situations though, and I want to share these with you today. I won't be able to tell you who's wrong or right — if there even is such a thing — and it will also take an effort on your part to succeed.
The payoff? A better understanding of why your colleague or that one guy on Reddit thinks such different thoughts than you, as well as a better grip on those circumstances. It allows you to rise above conflicts, become a problem solver instead of a troublemaker.
In this post I'll share a mental framework for programmers to manage these kinds of conflicts. To do that, we'll need to start with a simplified example.
Let's imagine two types of programmers: builders and architects.
If you ever had to work in teams — in school, as your job or in hobby projects — you're probably familiar with these two types of people.
The first ones, the builders, are the programmers who get things done. They work efficiently. Besides their daytime job, they come up with these amazing side projects and to the outside world it looks like writing code comes naturally to them.
On the other hand there are architects. They are concerned about sturdy and structurally sound code. They spend hours, sometimes days, debating the right way to solve a problem.
These two types of programmers seem like opposites. They themselves look at the other group and often think exactly that. They have a different way of handling the same problems. The other group's solutions are so different, they can't possibly be right, or so it seems.
Builders often find architects too rigid and conservative. They follow the rules for the sake of following them, without any practical benefit. Architects in turn, think of builders as careless, too focused on results, instead of thinking about long-term maintainability.
This tension often leads to confrontations between the groups, at the office or online. Interestingly enough, these kinds of discussions focus on trying to change the other person's point of view. I've been guilty of this myself more than I can count.
What's fascinating about these situations though, is that people from both sides almost never realise there's strength in their differences.
Instead of focusing on what they disagree on, let's try another approach: let's, for a minute, try to support the other party. Mind you: not just agree with them for the sake of ending a discussion, but actually trying to help them solve their problem, with your skill set.
Here's how that looks: while architects enjoy abstract thinking, they often have difficulties putting their thoughts into practice: they run into problems they didn't anticipate, or the actual implementation is too complex and they lose their drive. On the other hand, builders enjoy working towards a clear goal, they find energy in a project taking shape. So let's sit them down, together, and combine their strengths.
The illustration is easy enough — right? Though professional programmers still fall in the trap of endless discussions way too often. In fact, many human beings assume that the world around them thinks like they do. When the reality proves that's not the case, conflicts arise.
When you become aware of this personality trait, both in yourself and in others, you can use that knowledge to both your advantage. The reality is that most people won't have the same vision as you do, it's better to embrace that reality instead of fighting it.
One framework which differentiates between all kinds of personality types is called the Myers-Briggs Type Indicator — MBTI for short. It differentiates between 16 types of personalities. Obviously every person is unique, but those 16 types give an indication of how you and your colleagues think, how you'll react to situations, how you'll handle problems.
MBTI will map your personality into four different aspects:
- Introvert or Extrovert
- Observant or Intuitive
- Thinking or Feeling
- Judging or Prospecting
Like I said, every person is unique, so you're not either introvert or extrovert, you're not only thinking or feeling. It's a scale that balances one way or the other. Based on those aspects though, you can get a better understanding of why other people have such a different approach to the same problem as you do.
For example, builders would lean more towards the intuitive and prospective side, while architects are observant and judging. Builders are imaginative and flexible, architects are organized and practical. One isn't better than the other, rather they should support each other.
Having this knowledge about yourself and your co-workers allows for better team dynamics. At my previous job we mapped our MBTI profiles with around 25 colleagues. We sat down one afternoon to talk about the results. Not only did the majority of people recognise themselves in their profile, it also exposed struggles and hidden frustrations that were never shared before, because no one knew how to deal with them. Now we did.
One thing I want to emphasize at the end of this post, is that my goal was not to promote MBTI. Rather it's to make you think about how people's personalities differ from each other, and how this can result both in conflicts as well as opportunities. MBTI is just an example of how one could visualise these differences.
Understanding there are different kinds of people who think differently than you do, seems like such a simple realisation. Yet the internet and suboptimal or even broken teams show that a principle so easy to understand, is difficult to bring into practice.
If you want to, you can truly change the way you handle inter-personal conflicts. Even though you probably are right, try to think about ways to support your adversary, yes even leveraging them to a higher level. You'll be surprised that you're the one who benefits the most.
If you do want to know your own MBTI profile, you can test it for free online. Again this profile won't tell you who you really are, but it has to power to address the differences in personalities between you and other programmers. There's a great website called 16personalities.com providing a 20-minutes test. I'm interested to see the results! Let me know your profile and check up on others in this poll.
Want to share your own thoughts on the topic? You can send me an email or we can discuss it on HN.
Thanks for reading, until next time!