Can network issues even be considered bugs?!

Saidoubao is the only person in the company who stands to code and wears a plaid shirt. As soon as he arrived at his desk, the tester shouted: "Saidoubao, you've created another bug!" He didn't answer, just spat out a few lines of logs on the screen and said: "Check the reproduction steps first, then capture a packet." Then he showed three screenshots. The tester shouted even louder on purpose: "You must have broken someone's API again!" Saidoubao opened his eyes wide and said: "How can you slander me out of thin air..." "What slander? I saw the production environment return a 500 error with my own eyes the day before yesterday, and you were still running unit tests locally." Saidoubao blushed, the veins on his forehead bulging, and argued: "Network issues can't be counted as bugs... Network issues! ... Can different environments be counted as bugs?" Following that were incomprehensible words, like "DNS cache," "CDN origin pull," "inconsistent dependency versions," and the like, which made everyone laugh, and the area inside and outside the desks was filled with a joyful atmosphere.

According to rumors, Saidoubao had fixed a few bugs, but never truly eradicated them, and he couldn't write reproduction steps either; so he became poorer and poorer, until he was about to be put on on-call duty. Fortunately, he wrote good comments, so he would look at logs for others to earn a living. The pity was that he had another bad habit: the inability to reproduce the issue. He wouldn't last more than a few days before he and his keyboard and mouse would disappear together. After this happened a few times, there was no one left who would ask him to look at logs. Saidoubao had no choice, so he couldn't avoid occasionally restarting services. But in our team, his character was better than everyone else's; he just never admitted to having any bugs. Although occasionally he failed to reproduce them, he would temporarily put them in the requirements pool, but within a month, he would definitely mark them as "Resolved" and erase Saidoubao's name from the requirements pool.

After Saidoubao had drunk half a cup of coffee, his flushed face gradually returned to normal, and the people around him asked again: "Saidoubao, can you really fix bugs?" Saidoubao looked at the person asking, showing a look of disdain for arguing. They then continued: "How come you can't even get a single P0 task?" Saidoubao immediately showed a dejected and uneasy look, his face covered in gray, and mumbled some things; this time it was all about "intermittent," "concurrency," "timing," "network jitter" and the like, things none of them understood. At this time, everyone laughed, and the area inside and outside the desks was filled with a joyful atmosphere.

During these times, I could laugh along with them, and the team lead would never blame me. And every time the team lead saw Saidoubao, he would often ask him this, making people laugh. Saidoubao knew he couldn't chat with them, so he had to talk to the newcomers. Once he said to me: "Have you written code?" I nodded slightly. He said: "Written code... then I'll test you. The intermittent bug, how do you reproduce it?" I thought to myself, does someone who can't even land a P0 task deserve to test me? So I turned my face away and stopped paying attention. Saidoubao waited for a long time and said very earnestly: "Can't reproduce it? ... I'll teach you, remember! These methods should be remembered. When you do architecture in the future, you'll need them to deflect blame." I thought to myself that I was still far from the architecture level, and our team lead never took intermittent bugs seriously; I was amused and impatient at the same time, and answered him lazily: "Who needs you to teach me, isn't it just asking 'did you clear your cache' first?" Saidoubao looked very happy, tapping his keyboard with his long fingernails and nodding: "Yes, yes! ... There are four ways to clear the cache, do you know them?" I became even more impatient and walked away with a pout. Saidoubao had just dipped his fingernail in coffee, intending to write on the whiteboard, but seeing I wasn't enthusiastic, he sighed again, looking very regretful.

There were a few times when the newcomers from the next team heard the laughter and came over to join the fun, surrounding Saidoubao. He would show them the logs, one line at a time. The newcomers, after reading the logs, still wouldn't leave, their eyes fixed on the screen. Saidoubao panicked, spread his five fingers to cover the screen, leaned over and said: "Not many left, I don't have many left." He straightened up, looked at the logs again, and shook his head to himself: "Not many, not many! How many are there? Not many." And so, the group of newcomers walked away in laughter.

Saidoubao made people so joyful, yet without him, others just went on the same way.

One day, about two or three days before the release, the team lead was slowly settling the accounts and suddenly said: "Saidoubao hasn't been here for a long time. He still owes nineteen reproduction steps!" I also felt that he had indeed been gone for a long time. A frontend developer said: "How could he come? ... He broke his leg." The team lead said: "Oh!" "He's still just as stubborn. This time, he was being foolish and actually said about a production issue, 'It works fine on my end.' Can things in production ever be fine?" "What happened later?" "What happened? First he wrote an incident report, then came the post-mortem. We spent most of the night on the post-mortem, and after that, his performance rating was docked." "And then?" "Then his performance was docked." "What happens when your performance is docked?" "What? ... Who knows? Maybe he transferred to another team." The team lead didn't ask any more and continued to slowly calculate his accounts.

After the release, the autumn wind grew colder every day, nearing the start of winter. I sat leaning against the heater all day, and I needed to wear a cotton-padded jacket. In the afternoon of one day, there were no customers, and I was sitting with my eyes closed. Suddenly I heard a voice: "Can't reproduce it." This voice was extremely low, yet very familiar. When I looked, there was no one there. I stood up and looked out, and there was Saidoubao sitting by the desk facing the screen. His face was black and thin, already in a sorry state; he wore a tattered plaid shirt, sat cross-legged with his legs folded, sitting on a straw mat pad that was tied to his shoulders with a straw rope; seeing me, he said again: "Capture a packet." The team lead also stuck his head out and said: "Saidoubao? You still owe nineteen reproduction steps!" Saidoubao looked up in despair and replied: "This... I'll pay it back next time. This one is a network issue, the logs need to be good." The team lead, just as usual, smiled at him and said: "Saidoubao, you've created another bug!" But this time he didn't argue much, only saying one sentence: "Don't make fun of me!" "Make fun of you? If there weren't any bugs, why would your performance be docked?" Saidoubao said in a low voice: "Network fluctuation, fluc, fluc..." His eyes looked as if he was begging the team lead not to mention it again. By now, several people had gathered, and they and the team lead laughed. I warmed up some coffee, brought it out, and placed it by his keyboard. He pulled four screenshots out of his tattered pocket and placed them in my hand. Seeing his hands were full of dust, I realized he used those hands to change code. Before long, after he finished looking at the logs, he sat there and slowly walked away amidst the laughter of others.

From then on, I didn't see Saidoubao for a long time. By the end of the year, the team lead took down the whiteboard and said: "Saidoubao still owes nineteen reproduction steps!" By the release of the second year, he said again: "Saidoubao still owes nineteen reproduction steps!" But by Mid-Autumn Festival he didn't say it, and by the end of the year he wasn't seen again.

I still haven't seen him to this day—it's likely that Saidoubao has indeed transferred to another team.

网络的事能算bug么?!

塞逗宝是公司里站着改代码而穿格子衫的唯一的人。他一到工位,测试便叫道:“塞逗宝,你又出bug了!”他不回答,只对屏幕排出几行日志,说:“先看复现步骤,再抓个包。”便排出三张截图。测试又故意高声嚷道:“你一定又把人家的接口写崩了!”塞逗宝睁大眼睛说:“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见线上报500,你还在本地跑单元测试。”塞逗宝便涨红了脸,额上的青筋条条绽出,争辩道:“网络的事不能算bug……网络的事!……环境不同的事,能算bug么?”接连便是难懂的话,什么“DNS缓存”,什么“CDN回源”,什么“依赖版本不一致”之类,引得众人都哄笑起来,工位内外充满了快活的空气。

听人家背地里谈论,塞逗宝原来也修过几个bug,但终于没有根除,又不会写复现步骤;于是愈过愈穷,弄到将要被拉去值班了。幸而写得一手好注释,便替人看看日志,换一碗饭吃。可惜他又有一样坏脾气,便是复现不出来。坐不到几天,便连人和键盘鼠标,一齐失踪。如是几次,叫他看日志的人也没有了。塞逗宝没有法,便免不了偶然做些重启服务的事。但他在我们组里,品行却比别人都好,就是从不承认bug;虽然间或没有复现,暂时记在需求池里,但不出一月,定然点个“已解决”,从需求池上拭去了塞逗宝的名字。

塞逗宝喝过半杯咖啡,涨红的脸色渐渐复了原,旁人便又问道:“塞逗宝,你当真会修bug么?”塞逗宝看着问他的人,显出不屑置辩的神气。他们便接着说道:“你怎的连半个P0也捞不到呢?”塞逗宝立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是“偶现”“并发”“时序”“网络抖动”之类,一些不懂了。在这时候,众人也都哄笑起来:工位内外充满了快活的空气。

在这些时候,我可以附和着笑,组长是决不责备的。而且组长见了塞逗宝,也每每这样问他,引人发笑。塞逗宝自己知道不能和他们谈天,便只好向新人说话。有一回对我说道:“你写过代码么?”我略略点一点头。他说:“写过代码,……我便考你一考。偶现的bug,怎样复现的?”我想,连P0都捞不到的人,也配考我么?便回过脸去,不再理会。塞逗宝等了许久,很恳切的说道:“不能复现罢?……我教给你,记着!这些方法应该记着。将来做架构的时候,甩锅要用。”我暗想我和架构的等级还很远呢,而且我们组长也从不将偶现bug当回事;又好笑,又不耐烦,懒懒的答他道:“谁要你教,不是先问‘你清缓存了吗’么?”塞逗宝显出极高兴的样子,将两个指头的长指甲敲着键盘,点头说:“对呀对呀!……缓存有四样清法,你知道么?”我愈不耐烦了,努着嘴走远。塞逗宝刚用指甲蘸了咖啡,想在白板上写字,见我毫不热心,便又叹一口气,显出极惋惜的样子。

有几回,隔壁组新人听得笑声,也赶热闹,围住了塞逗宝。他便给他们看日志,一人一行。新人看完日志,仍然不散,眼睛都望着屏幕。塞逗宝着了慌,伸开五指将屏幕罩住,弯腰下去说道:“不多了,我已经不多了。”直起身又看一看日志,自己摇头说:“不多不多!多乎哉?不多也。”于是这一群新人都在笑声里走散了。

塞逗宝是这样的使人快活,可是没有他,别人也便这么过。

有一天,大约是发版前的两三天,组长正在慢慢结账,忽然说:“塞逗宝长久没有来了。还欠十九个复现步骤呢!”我才也觉得他的确长久没有来了。一个写前端的人说道:“他怎么会来?……他打折了腿了。”组长说:“哦!”“他总仍旧是嘴硬。这一回,是自己发昏,竟说线上问题‘我这边好着呢’。线上的事,能好着么?”“后来怎么样?”“怎么样?先写事故报告,后来是复盘,复盘了大半夜,再后来是扣绩效。”“后来呢?”“后来扣绩效了。”“扣绩效了怎样呢?”“怎样?……谁晓得?许是转岗了。”组长也不再问,仍然慢慢的算他的账。

发版之后,秋风是一天凉比一天,看看将近初冬;我整天的靠着暖气,也须穿上棉袄了。一天的下半天,没有一个顾客,我正合了眼坐着。忽然间听得一个声音:“复现不出来。”这声音虽然极低,却很耳熟。看时又全没有人。站起来向外一望,那塞逗宝便在工位旁对了屏幕坐着。他脸上黑而且瘦,已经不成样子;穿一件破格子衫,盘着两腿,下面垫一个蒲包,用草绳在肩上挂住;见了我,又说道:“抓个包。”组长也伸出头去,一面说:“塞逗宝么?你还欠十九个复现步骤呢!”塞逗宝很颓唐的仰面答道:“这……下回还清罢。这一回是网络的事,日志要好。”组长仍然同平常一样,笑着对他说:“塞逗宝,你又出bug了!”但他这回却不十分分辩,单说了一句:“不要取笑!”“取笑?要是不出bug,怎么会扣绩效?”塞逗宝低声说道:“网络波动,波,波……”他的眼色,很像恳求组长,不要再提。此时已经聚集了几个人,便和组长都笑了。我温了咖啡,端出去,放在键盘边上。他从破衣袋里摸出四张截图,放在我手里,见他满手是灰,原来他便用这手改代码来的。不一会,他看完日志,便又在旁人的说笑声中,坐着用这手慢慢走去了。

自此以后,又长久没有看见塞逗宝。到了年关,组长取下粉板说:“塞逗宝还欠十九个复现步骤呢!”到第二年的发版,又说:“塞逗宝还欠十九个复现步骤呢!”到中秋可是没有说,再到年关也没有看见他。

我到现在终于没有见——大约塞逗宝的确转岗了。

No results found