Being sincere is something that I learned as a child to be a good thing, just like telling the truth, and sharing with others. Somehow, as I grew up the world stops being a world of black and white and became a world of grays. I have observed that many of us continue to be sincere, and many of us do not and it seems that it is an optional attribute, one that we may use at home but not at work. In many ways I found myself characterizing others as flat characters, inflating their faults or virtues as the context called for. At work, if someone did not agree with me an internal switch would flip and I would start to see their faults and find ways that I was right and they were wrong. I never really felt there was anything wrong with that; it became an adversarial relationship (sometimes for only that specific context) that was for the greater good because the person with the best argument would win over and that was good for the company. Survival of the fittest.
Ok, so what does this have to do with business? What does this have to do with software development? Well, there is this little point: that software is created by teams. Truly productive teams work well together and learn quickly from their mistakes. Our sincerity or lack thereof directly affects our teamwork. We all have a sense for when people are being insincere. Two people may exhibit the exact same behavior – say and do the exact same things – and have completely different results. Why? Because we have an internal BS meter. If you are insincere with me once or twice you may get away with it, but you won’t for long and I’ll quickly filter out what you are saying.
How does this affect software development? Well, sincerity directly affects our trust and trust is the basis for any productive team. To learn we have to admit and talk about our failures frequently. We will not discuss our mistakes without trust. Without learning, no matter how much we iterate, we’ll keep making the same mistakes. Sincerity if necessary for trust, which is necessary for learning, which is the largest component of software development.