Developers are not socially awkward introverts; here is how to understand us
Recently a well-accomplished Product Owner told me that he thought programmers were weird people. He thought of them as anti-social, extremely introverted and, dare I say it, akin to autistic. The main reasons he thought so were that his developers were wearing headphones all day, got annoyed when they were interrupted, didn’t talk much at the water cooler, and didn’t really enjoy the office parties.
He showed a gross misunderstanding of the personal characteristics that compliment great developers. Not to mention a severe lack of understanding of autism, but I’m not going into that in this article.
I’m sure he could be a better leader if he understood the people around him better.
I’ve heard variants of his remarks before, so it’s time to correct the stereotype. Hopefully that will allow managers to better understand the people they’re working with.
Let’s examine what the job of programmers is actually like so that we can understand what personality type compliments that the most. Here are the characteristics that we’ll dive into in this article:
- Attention to detail and nuance
- Focus and concentration
- Creative drive
Attention to detail and nuance
Most people correlate programming to building a house, but that is not correct. Programming is much more like writing books or articles. It’s about converting a mental model into a written model; thoughts into writing. When doing so you have to take many things into account. Things like coherency, consistency, flow, meaning and how the reader will interpret it.
Programmers are writers for two readers: computers and other programmers. Code must be executed by computers and must be understood by other programmers.
Computers are very strict. You must make everything explicit to a computer. Humans can ‘read between the lines’ and understand meaning implicitly. Computers cannot; they do not execute what you don’t tell them and they execute what you do tell them to the letter.
The strictness of computers attracts people who are meticulous, thorough and exact. People who pay attention to minute details. I’m sure you recognize this. Programmers often give you very thorough explanations of a problem. They will also correct you with very nitty-gritty nuance when you are not detailed in your explanation. They need to be like that in order to be good programmers. Exactness comes with the territory.
It reminds me of an old programmer joke:
A programmers wife asks him to do some groceries. She gives him a list with the following: 1 box of eggs If they have milk, bring 5. The programmer comes home with 5 boxes of eggs. Confused, the wife asks “why did you bring 5 boxes of eggs?” The programmer answers: “They had milk.”
Focus and concentration
It takes a great amount of concentration to convert mental models into writing, and that’s doubly so for code. Being interrupted causes you to have to rebuild the mental model and then do the conversion again. This is time consuming. I’m sure you have experienced this before when someone interrupted you during a presentation. It probably took you a few seconds to pick up where you left off. In writing and coding it takes longer; anywhere between 1 and 30 minutes depending on the complexity of the thing you’re working on.
The requirement for deep concentration attracts people who can focus. People who have the ability to focus can’t just shut that off, just like people who lack the innate ability to focus can’t just turn it on. Both are ways of being; a modus operandi.
Most programmers are familiar with the concept of ‘flow.’ Flow is a state-of-mind where a person is so in-sync with a task that the creative process occurs effortlessly. It’s a state of intense concentration where a person is completely absorbed in a task. This is where a programmer solves the most difficult problems, not at the water cooler. Being interrupted while in the flow-state is beyond annoying. You’ll have to be absorbed in a task for another 15-30 minutes to get back there, if it happens again at all.
That is why programmers are usually working with earphones on, especially in open-space offices. They need to minimize distractions to get into the flow state. It’s also why open-space offices are a really dumb idea when you value effectiveness of your programmers. Interruption is the kryptonite of good software developers. Plan your meetings and organize their work spaces accordingly.
Creative drive
Programming is a creative process; meaning that something is created out of ‘nothing.’ Programming starts with an empty file and ends with a solution to a real-life problem. Great programmers live for the moment that their code has real impact on the world. The first time it happens is often an incredible and proud moment for developers.
I can still clearly remember all the times my software did something real. The first time was when my software opened a valve in a greenhouse somewhere in Italy that caused the sprinklers to water the plants under it automatically. Another clear example was the first time my software caused a container to be moved by an automated Yard Crane in the harbor of Antwerp. I still smile ear-to-ear when I think about those moments.
The impact our software makes might be anything from making it possible to shop online to breakthroughs in cancer research to solutions for solving climate change and everything in between. This attracts people who want to make an impact with their work. People who want to see their work get used in the real world; who want to see their creations flourish; who want to make the world a better place.
The kind of people who are like that want to do their best work every single day. They want to do what they are good at all the time. Without interruptions, without status updates, without meetings that do not contribute to them doing their best work.
Conclusion
So, programming is complimented most by people who are precise, focused to their core, and who are highly motivated by seeing their work make an impact. They have a deep desire to do their best work, in order to make the greatest impact.
I hope this gives you the understanding you need to lead them more effectively. Hopefully you’re also starting to see why some existing business practices are really counterproductive for creative work. The best environment for a programmer on-task is a silent and small room where they can listen to their favorite productivity music without having to see or hear anyone. For me that’s at home in my office. For you and for them it might be somewhere else entirely.
Does that mean programmers don’t want social activities? Of course not. The task of programming requires focus, but the job of software development requires interaction with all sorts of people like other programmers, customers, sales, marketing and support. It’s just that those moments should be scheduled around the task of programming so that it doesn’t become an interruption. The bulk of the work is programming and that means typing away at the keyboard without distractions.
If you have any questions or remarks please let me know. I’d love to dive more deeply into this subject either in another post or one-on-one.