No Meaning - No Work!
Topic: Martha's Diary
February 6, 2024
I remember a story that happened when I was nine years old. I trained in gymnastics and did not do well. The coach invited my dad to talk about my productivity.
Dad came in with the intention to raise the question, ‘How can we inspire Martha to do better at gymnastics?’
But all of a sudden, the coach turned the conversation another way.
Why doesn’t Martha work as she should?
Look at all the other girls. They all work hard. I don’t push them, I don’t fly above them - and they keep practicing their movements.
Now look at Martha. She just stands there. She is lazy.
She has two hands and two legs just like the others do. All the others work hard, Martha doesn’t. That’s weird.
Dad tried to turn the conversation around a couple of times but no luck. At the end of the talk, the coach said, ‘I don’t work below a certain level, you know. Make Martha work or the show will be over for her next year’.
That was frustrating.
For dad. Not for me actually.
Now I realize that the coach was right. When you are a true professional, you do not go below a certain level.
I left the team in a few months. I did not make a good athlete.
But I did make a good software engineer. And I do not go below a certain level in my work. Not even for money.
If you want to be a true professional, you need to develop good habits. For me, the best habit is understanding the meaning of what I should accomplish.
I think I first heard about this habit at the University. One of my professors talked about his past experience. His specialization was math and artificial intelligence. Each time he needed to program his calculations, he had to take them to the head of the IT department.
The head of the IT department was a sharp middle aged lady. The professor described her as a person who would come to the meeting with a pencil and a pen. She would listen carefully, ask questions, and make notes.
She would not write a single line of code until she understood every little piece of the assignment.
Only after she understood the calculations and the goal completely, she would go to the computer room to do the programmer’s work.
I have been repeating the same behavior over many years unintentionally. It just came to me as a natural habit.
At the beginning of my career, I was helping companies to automate accounting. I would always start from understanding their requirements and the purpose.
The purpose was important. I needed to know it to do the job.
That habit appeared to be both good and bad years later when I moved to custom development.
The good part of it is that sometimes custom project owners have real-life needs. Just like ordinary people, you know. In this case I can help better than yes-people they have around.
The bad part of it is that not all custom project owners are like that.
Some of them just go, ‘Take this pile of bricks and carry them over to that wall’. Why? What for?
‘Write project documentation’. What documentation? Who will read it? What will they want to accomplish through that documentation?
Come on! Just any normal documentation. All projects have documentation. Can’t you write one?
‘Integrate this third-party in the system’. Who needs it? What role will it play? Is there another way to reach the same goal?
Who cares? This is a good third-party, many of our competitors use it. We want it to be in our project.
Is that a business requirement?
Requirements that come from technical people on the customer’s side are no better. If the project owner has managers with a technical background, that’s bad.
CTOs are the worst. CTOs produce the most pointless requirements in the world. They usually want to use the technology they think is good. Doesn’t matter why.
Let’s use GraphQL. Why? Well, it is a good technology that will save us time.
Really? You’ll die trying to cover it with automated tests.
We want MongoDB, my friend told me it is very handy.
Come on! Not for your system. You have reports. Mongo will not handle them. Do you know how difficult it is to get rid of MongoDB and replace it with a relational database that executes more complex queries faster a year later?
It reminds me of my course essays at the University in which I always had a special chapter called ‘Technology selection rationale’. It would contain a list of reasons for choosing the best technology, but everyone knew it had to be Python. Because it was the name of the course.
Meaningless requirements. How to live with them?
On the one hand, it is good when a person is ready to pay money for some work that does not make much sense - good for those who get the money.
On the other hand, the outcome will not make the customer happy. It will not make the developer happy either.
People can only be happy when their work has a meaning.
I want my work to make a difference. I want it to be important and make the world better. Isn’t it the actual reason why we have chosen this profession?
Maybe I just like to imagine myself as a knight in white armor that enters a fight with a giant without a hope to defeat him.
Or maybe I am a bloody-minded and unfriendly IT worker who wants too much.
Back to work!
But I still hope that there is a customer somewhere who needs an engineer with a purpose-oriented mindset.
He could do a lot with my help.