In my daily experience I have come to notice programmers that have very different ideas on programming.

In practice I’d usually recognize two hostile groups among programmers.

One group would always be refactoring the code, to make it more legible. Trying to reach that 100% unit test coverage. Get the architecture just right. When asked to add a new feature they would take their time. When pushed on timing they’d get pretty frustrated. As long as the code is clean and they have the time for it, they’ll be fine. They’ll work long hours just to get that code perfect.

The other group however would be the complete opposite. They’d jump on any new feature or technology they get their hands on. They don’t care too much about the edge cases. Move fast, break things. Fearlessly moving on to the next thing while the previous feature is still half baked (at least in the viewpoint of the first group). They’ll work long hours to get the happy path out there for that new prototype. It will work in record time, but only if you follow the happy path. Then they get bored with it and move on the next hip and trendy thing.

I found that these groups have a certain disrespect for one another. One group is continuously breaking stuff and the other group can spend hours on agreeing on the name of a class. Can someone be any slower? But truth is, they need one another. But where is this coming from? Why is there such a difference between programmers? And is it really binary?

I got my Aha-Erlebnis when I was reading ‘12 rules for life‘ by Jordan Peterson (a Canadian clinical psychologist). In the second chapter/rule the concept of order and chaos is introduced. And one specific paragraph caught my eye:

The Taoist believe that the world is always an interplay between chaos and order. And, that if you live your life properly, you stand with one foot in order and one foot in chaos–because if you’re only in order, nothing that’s interesting ever happens to you.

Where in this case “order” would be writing unit tests, refactoring code. Have safe, but sometimes ideological discussions about class names without the risk of breaking stuff.

Choas, on the other hand, is jumping into the unknown. Create new exciting prototypes, which happen to be hanging by a thread. Ignore the rules. There’s no time for rules.

My realization is that some like chaos more than others. I believe that each individual has its own spectrum of chaos and order they prefer. This idea helps me understand why a team works or why it doesn’t. A order/chaos mismatch between employee and company is, I believe, why a lot of people hate their jobs and leave. Either it is too boring (usually big companies), or it is just not stable enough (usually startups) .

If you have someone who is into chaos, put them in charge of building new prototypes. Don’t let this person too close to your production code. Have the ‘order’ minded person take this one up.

And most importantly, have people understand their needs on ‘order versus chaos’. Because as noted by the Taoist, everyone needs some bit of chaos and order. The spectrum is just different from person to person.

Hopefully this may help you or your team.