“Variety is the spice of life”
Did you see a software team with members that are
- always stressed and full of fear to fail or completely indifferent to end results?
- totally agree with each other and satisfied with their product, but very far from harsh reality?
- competing and fighting for the true solution, but cannot achieve common goals?
- always inventing something interesting, but cannot focus on work and deliver software?
- overly disciplined, planning everything, but deliver mediocre boring results without any spark of imagination?
- having excellent communication, rapport and environment, but spend most of the time talking than working?
- sitting in separate cubicles without talking, barely understanding what others are doing?
Can these teams be successful? What is the root cause of their problems? How these problems could be prevented?
One of the most interesting things about humans is their personality. We are different in behavior, reactions and feelings in the similar situations. These wonderful personality traits make our life refreshing and sometimes totally unpredictable. Do they matter in software development, apparently logical and rational activity? I believe that people are the most important factor in the software development and they determine success. A programmer’s personality affects behavior and therefore it must have significant impact on the work itself.
Empirical research shows five broad dimensions of personality:
- Openness – appreciation for art, emotion, adventure, unusual ideas, imagination, curiosity, and variety of experience.
- Conscientiousness – a tendency to show self-discipline, act dutifully, and aim for achievement; planned rather than spontaneous behavior.
- Extroversion – energy, positive emotions, and the tendency to seek stimulation and the company of others.
- Agreeableness – a tendency to be compassionate and cooperative rather than suspicious and antagonistic towards others.
- Neuroticism – a tendency to experience unpleasant emotions easily, such as anger, anxiety, depression, or vulnerability; sometimes called emotional instability.
What are the best personal traits for the programmer? Before answering this question, I want to mention research of rudimentary personality traits in wild animals. Small birds, great tits, have personality ranging from highly exploratory to more cautious one. Scientists found that the both personality types are optimal, but under different conditions. When resources were scarce it paid the birds to dispense further. However, when resources are abundant more cautious birds were more likely to survive. Morale is that our evolution preserved different personalities for the good reason. They help us to survive and advance under various unpredictable conditions. They made overall population resilient to changing environment, threats and challenges.
Software teams need diversity not only in skills, experience and knowledge. They need the optimal balance of personalities to effectively build software, especially in our rapidly changing technological, business and social worlds.