The problem with describing bad code as “clever” is that it doesn’t describe the code at all.

Code is words. Words can’t be smart. They can’t think on their own yet. At best they tell a clear story.

And words are only at their best when they are woven by good writers. When I say, that’s a “good” story, I’m not wondering how words wove themselves into such a great story. I’m simply complimenting the writer of the story for a job well done.

When I say a story is “bad,” I’m saying that the writer failed.

When we look at work and criticize it with words that are negative human attributes, like clever, bad, lifeless, or lazy, we are criticizing people.

It’s a free country. Except for me, and the other people who, like me, have been at this work for pay thing for 10 years. We’re supposed to know better. We’re supposed to know that problems at work are always systemic. We’re supposed to know to criticize the system. Maybe criticize management, in moments of self indulgence. But only for the purpose of fixing the system. (Writing this brings pangs of regret. I have screwed and continue to screw this up daily.)

We’re prodding our teams to write unit tests and do pair programming and have retrospective meetings in an effort to fix dysfunctional systems.

We’re supposed to be the champions of continuous improvement. That means identifying code problems as code problems. Then we translate code problems into system problems. Then we fix the system.

We’re supposed to know that nothing will damage this effort more criticizing the intentions of the people working, often without power, within that imperfect and maybe dysfunctional system.

We don’t criticize people. We’re supposed to know better. I’m supposed to know better. I so wish I did.

One Comment on “More on Clever is Good”

I don’t really understand why this whole debacle on clever code and the word “clever” is even a debacle.

I agree with you that you can’t describe bad code as “clever”, and I don’t understand why anyone would ever think that in the first place to be honest. The dictionary says clever means ingenious, and sadly, that ingenious means clever. But that doesn’t matter, we all pretty much know what clever means behind the word. It says nothing about complexity of the code, though it generally seems to mean simpler.

I also don’t fully understand your point and don’t agree with you when you say “Code is words. Words can’t be smart.” Yes logically that is true in a 1+1=2 sort of way. It’s not about the words being smart though, it’s about the response to the words. The audience. The intended effect. The action-reaction pair. It’s about whether or not the words are effective. Words aren’t smart, people (can) use words smartly.

Later in your article, it seems like you are arguing how criticizing a person is bad. I couldn’t agree with you more on any other topic in the world. People have a tendency to view other humans, by means of their work (or actions, thoughts, anything), as concrete and unchangeable. People change. People can learn from their mistakes. Negative criticism is bad. Always. Absolutely. It promotes fear and nothing else. It’s definitely near impossible to not want to criticize a person who does terrible work due to laziness, ignorance, or just retardation. But despite how “mean” those labels are, the people assigned those labels can change them through changing themselves. Some people are probably near impossible to change and might need massive amounts of work, but they still can. It’s pride, arrogance, selfishness, and so many other things that resist change. Those core traits would need to be changed first to allow for change in other areas, especially when the source of criticism is another human. Perhaps people like that need a robot to tell them straight up.