Image

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,怎么会扣绩效?”塞逗宝低声说道:“网络波动,波,波……”他的眼色,很像恳求组长,不要再提。此时已经聚集了几个人,便和组长都笑了。我温了咖啡,端出去,放在键盘边上。他从破衣袋里摸出四张截图,放在我手里,见他满手是灰,原来他便用这手改代码来的。不一会,他看完日志,便又在旁人的说笑声中,坐着用这手慢慢走去了。

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

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

The standard for Chinese characters still needs another improvement; now, both simplified and traditional characters have many problems

汉字标准还需要一次改进,现在无论是简体还是繁体都有很多问题

Mie is a core issue for all types of organizations, past and present, throughout the world, and to this day, none have succeeded.

 

The root cause lies in a failure to profoundly recognize: the recursive parasitism of Mie.

 

Determination and brute force appear weak and clumsy before the Matryoshka-doll nature of Mie.

 

Even if the Mie in one node is eliminated, the Mie above, below, to the left, and to the right still exist. Furthermore, before long, a new version of Mie will rebel in the same spot, and this new Mie will iterate to become even more sinister, covert, and stubborn.

 

Even if one were to scrape the bone to remove the poison and wash the entire system at great risk and cost, the seeds of Mie would still exist widely, and they would be ready to sprout again at any moment.

 

Once revived, they will retaliate with a vengeance, breeding even more Mie, all of which will be drug-resistant 'Gu' kings.

 

#生道

制灭,是古今中外各类组织的核心课题,到目前为止无一成功。

 

根本原因在于没有深刻认识到:灭的递归寄生性。

 

决心和蛮力在灭之套娃面前显得虚弱且笨拙。

 

即使消灭了一个节点的灭,其上下左右的灭依然存在。而且,不久在原地就会叛变出新版的灭,新灭会迭代的更加阴毒、隐秘、顽固。

 

即便是刮骨断腕,承担巨大风险和代价将整个系统全部清洗一遍,灭的种子依然会广泛存在,且随时准备着再次萌发。

 

一旦复活,就会报复式反弹,繁殖更多的灭,还都是抗药蛊王。

 

#生道

reply:

Sheng is recursive (layered), like nesting dolls.

 

Mie is layered and parasitic, with a corresponding form of Mie for every level.

 

#生道

生是层层相套的(递归的),像花心套娃一样。

 

灭是层层寄生的,每个级别都有其配套的灭。

 

#生道

Sheng is recursive (layered), like nesting dolls.

 

Mie is layered and parasitic, with a corresponding form of Mie for every level.

 

#生道

生是层层相套的(递归的),像花心套娃一样。

 

灭是层层寄生的,每个级别都有其配套的灭。

 

#生道

Everyone is born a pure Shengist. During the process of growing up, some will rebel, some will get lost, some will return, and some will remain.

 

#生道

每个人降生时都是纯粹的行生者,在长大的过程中,一部分会叛变,一部分会迷失,一部分会回归,一部分会保持。

 

#生道

Sheng is very carefree; as long as you provide it with a stable environment, it will naturally bloom and bear fruit as it should, without needing any management.

 

Mie, on the other hand, is different. It requires your constant supervision, management, correction, punishment, and elimination.

 

Ninety percent of your energy will be spent on suppressing Mie. You must manage it, because letting it take its course is no different from suicide:

 

The supplements you consume will nourish the spreading tumor, the money you hand over will raise someone else's children, and your advanced aircraft carriers and missiles will slaughter your own compatriots.

 

To nurture Sheng, one must first suppress Mie.

 

#生道

生是很省心的,只要给它一个稳定的环境,它自然该开花开花,该结果结果,不用管。

 

而灭不同,它需要你持续的监督、管理、纠正、惩处、灭杀。

 

你九成的精力都会花费在制灭上。你不得不管,因为放任自流无异于自杀:

 

你吃下的补品会滋养扩散的瘤子,你上交的票子会养大别人的孩子,你先进的航母导弹会屠杀自己的同胞。

 

欲养其生,先制其灭。

 

#生道

reply:

Sheng and Mie are opposites, and one's attitude toward each must also be opposite.

 

One must embrace Sheng with the warmth of the sun and treat Mie with the cold lash of a whip. To do otherwise is to act against the order of things, which will inevitably lead to a backlash.

 

Nurture Sheng with Sheng, and herd Mie with Mie.

 

#生道

生灭相反,对待二者的态度也要相反。

 

待生当以暖阳拥抱,待灭当以冷眼皮鞭。不可以反过来,逆天而为,必遭反噬。

 

以生养生,以灭牧灭。

 

#生道

Mie is the betrayal of Sheng; it can only be controlled, not extinguished.

 

#生道

灭是生的叛变,只能控制,无法杀绝。

 

#生道

Interestingly, human civilization, as the largest known collective of humanity, surprisingly lacks a functional immune system from ancient times to this day.

 

Until this very moment, Earth Online has remained in a state of running naked.

 

#生道

有意思的是,人类文明作为已知的,人类最大的共同体,从古至今竟然没有合格的免疫系统。

 

直到此时此刻,地球 Online 一直处于裸奔状态。

 

#生道

reply:

Maintaining boundaries is the primary task.

 

Countries have armies, political parties have disciplinary committees, enterprises have audits, and human bodies have immune systems.

Without the coercive intervention of force, nations will be infiltrated and usurped, governments will engage in embezzlement, enterprises will run into deficits, and human bodies will be plagued by diseases.

 

No matter how well you do, in the end, it all serves as a dowry for Mie.

 

#生道

维护边界是首要的事情。

 

国家有军队,政党有纪委,企业有审计,人体有免疫。

没有灭力的暴力干预,国家会被渗透夺舍,政府会监守自盗,企业会入不敷出,人体会百病缠身。

 

做得再好,最后也是给灭做嫁衣。

 

#生道

reply:

Whether one's capacity for Sheng is effective or not is primarily reflected in how one handles Mie.

 

In other words, it is a question of what not to accept; the effectiveness of this is how well it is handled.

 

#生道

生的能力行不行,首先体现在用灭上。

 

也就是不要什么的问题,这一点处理的好不好。

 

#生道

Maintaining boundaries is the primary task.

 

Countries have armies, political parties have disciplinary committees, enterprises have audits, and human bodies have immune systems.

Without the coercive intervention of force, nations will be infiltrated and usurped, governments will engage in embezzlement, enterprises will run into deficits, and human bodies will be plagued by diseases.

 

No matter how well you do, in the end, it all serves as a dowry for Mie.

 

#生道

维护边界是首要的事情。

 

国家有军队,政党有纪委,企业有审计,人体有免疫。

没有灭力的暴力干预,国家会被渗透夺舍,政府会监守自盗,企业会入不敷出,人体会百病缠身。

 

做得再好,最后也是给灭做嫁衣。

 

#生道

reply:

Whether one's capacity for Sheng is effective or not is primarily reflected in how one handles Mie.

 

In other words, it is a question of what not to accept; the effectiveness of this is how well it is handled.

 

#生道

生的能力行不行,首先体现在用灭上。

 

也就是不要什么的问题,这一点处理的好不好。

 

#生道