Author: Zhu Yun
Editor: Ma Yue
Today I want to talk to you about bugs and accountability.
I remember one time, a delegation from China came to visit our company. In the process of communication, someone asked: “In your work, will engineers be held responsible for bugs or problems caused by mistakes, will their wages be deducted, or will they be fired?”
I was honest enough to say, “No.”
The man continued, “So there is no penalty for an accident. There will be no problem?” At that time, I answered around the quality, conscientiousness and responsibility of the staff. The more I thought about it, the more interesting it became.
I’m in charge of payments and transactions at Airbnb, which means most mistakes are worth real money. Whether it’s taking less money from users and making the company lose money, or taking more money from users and causing legal or contractual disputes, it’s not a trivial matter.
As the saying goes, “often walk in the river, where do not have wet shoes”, all kinds of code problems caused by trouble is common. So, when bugs cause problems, what can be done to maximize team initiative, accountability, and execution?
Let’s start with two extreme scenarios: what if every mistake was punished? What if there is no accountability or follow-up for all mistakes?
If every mistake is punished, it is not hard to imagine that the following situation must be unavoidable.
-
Everyone is afraid of getting into trouble, so high risk things no one does, or always a few reliable “old driver” to do. People who do not have the opportunity to deal with such complex situations will never get the exercise or the experience.
-
When someone screws up, they try to hide the bad effects of their mistake as much as possible because they are afraid of the consequences and pass the buck.
-
If someone else makes a mistake, it’s not your fault.
-
Pointing out someone else’s mistakes can lead to someone being held accountable, so people hesitate to point out problems when they see them.
On the other hand, if no matter what mistakes happen, there is no need to bear the consequences or reflect on, there is no responsibility, it may be the following situation.
-
The same mistakes can happen again and again.
-
Small mistakes are not checked in time, or are not taken seriously enough, leading to big mistakes.
-
People who do things carefully find it unfair. To be on the safe side, I wrote many unit tests for every code change, repeatedly testing and preventing problems on every project; But someone else’s haste, which leads to a lot of mistakes, is perceived as more efficient because it appears to be moving faster.
So, what should we do about mistakes at work, especially those caused by bugs?
First, accountability, but not punishment. “Know what it is, and know why.” Figure out what bugs cause what errors in what situations. Those involved should do their best to clean up the mess and think about how to avoid making the same mistake next time.
Second, focus on the thing, not the person. In this process, the focus is on how to improve processes and systems to avoid the same mistakes, rather than blaming employees for what they should do. If that was done, why wasn’t the mistake detected and stopped in time?
Third, repeatedly ask “why?” to get to the root of the problem. Why do errors occur? Some bugs may be just the tip of the iceberg.
Take a hypothetical example, because xiao Wang’s code changes affect Xiao Li’s code, so that xiao Li’s previous implementation of the wrong function. In this case, we first ask:
-
Why was it not immediately discovered that the li code was not functional?
-
Answer: Because Xiao Li’s test case at that time did not cover this situation.
-
Why is Xiao Li’s test case incomplete?
-
A: Because the test here mocks the return value of a service, but the mock value is not the real return value of the server, so the test cannot detect it.
-
Why mock?
-
A: Because our testing system framework is not perfect enough.
-
By asking questions and thinking about them over and over again, you can identify problems that are fundamentally worth improving, and the results and benefits are far better than punishing the wrongdoers.
Fourth, employee relationship building is also critical. Instead of a sense of insecurity, we need to foster an atmosphere of mutual trust, mutual help and common purpose. It could be that you’re not confident enough and you’re afraid of making mistakes. It could be a lack of care for others, or doubts about the quality of their code. Only when everyone believes that the fundamental purpose of finding problems is to solve them and avoid their recurrence, can a virtuous circle of constant reflection, continuous learning and continuous progress be established.
Finally, I leave you a question to think about. This is also an accident I have heard many times in real life. If you are a technical lead in a company and an engineer on your team deletes user data online by mistake, then you find that automatic backup of data stopped last month due to some glitch. What do you do now?
This article is excerpted from Zhu Yun’s paid column “Zhu Yun’s Technical Management Class” on geektime App. Please scan the qr code at the end of this article and leave a comment with me on geek time.
Zhu Yun column annual directory
Angela’s column focuses on four areas: technology management, technology practice, Silicon Valley culture, and personal growth. The column table of contents is as follows:
Column Subscription Guide
Apple Users:
-
Please download the “Geek Time” App from the Apple Store and sign up.
-
Find the column entry on the Discovery page and click on the column to complete the purchase.
Android users:
-
Please pay attention to the geek time service ID: Jikeshijian;
-
Find the column entry in the menu, and finish the payment and reading on wechat.