晚上腦子裡也想著bug,睡不好怎麼辦?

哈哈哈感謝大家的回答,沒想到這個問題得到這麼多關注。我覺得我是屬於那種非常較真,然後特別容易憂慮的人,正在慢慢的改變自己!再次感謝。道與術的方面都學到很多。


bug有兩種,可重現的,和不可重現的。

可重現的不用擔心,總是可以解決,不是今天,就是明天,大可以放心睡覺。


不可重現的bug有兩種,常出現的,和不常出現的。

常出現的不用擔心,模擬環境,提高負載,孤立單元,分析日誌,找到規律,就成了可重現的了。


不常出現的bug有兩種,嚴重的,和不嚴重的。

不嚴重的不用擔心,可以看做feature。作為技術人員,不只要提高技術,還要鍛煉表達能力,學著換個角度看問題。


嚴重的bug有兩種,可監控的,和不可監控的。

可監控的不用擔心,寫監控代碼,探測到bug發生,或者重試,或者報警,控制風險,把bug包起來,系統照跑。


對於那些又隨機,又嚴重,還不可控的bug,不用擔心,你可以交給中年程序員,只要忽悠他們上手,剩下的就不用管了。這個技能練的好,以後還能當經理。


關燈,睡覺!


我有一次睡覺前就在想一個神經網路的代碼,然後果然,夢見我把代碼寫好了。第二天把記憶中的代碼敲出來,一次通過。

後來,那段代碼就成了這篇paper渲染端的一部分。

Global Illumination with Radiance Regression Functions


昨晚我還想著我在 WebRTC 里復用視頻編碼後的圖像那部分代碼為什麼導致 Chrome 無法顯示視頻。早上起來刷牙時我又開始琢磨到單位後該怎麼修改測試,然後還記得昨天的日誌文件在 Notepad++ 中打開著沒關,能夠接著昨天瀏覽的位置繼續找……

我做了十幾年開發,晚上吃飯、睡覺、做夢想 Bug、解Bug這種經曆數不勝數。可喜的是,現在這種情況已經少多了,基本處於可接納的程度。

我有幾點小經驗,分享一下:

  1. 保存Bug相關的狀態,比如日誌、代碼、截圖等等,不要關電腦,就放那裡,便於第二天恢復現場。
  2. 每天下班前,把所有工作梳理一遍,把未解的 Bug 列出來,自己做了什麼測試、結果如何,明天準備怎麼做,都記錄下來,放到筆記里,形成待辦清單。
  3. 做一件事情,比如清洗茶杯,收拾工位,以它們作為一天工作的結束,給自己一個儀式:下班啦!

話說去年查一個很難重現的bug,出現bug的狀況死活想不明白,重新review了幾遍代碼都看不出啥問題了。


帶著問題回到家,想放鬆一下,就跟老婆一起看電視,腦子裡突然「Aha」一下明白了問題出在哪裡。第二天回到公司,馬上用紙筆跟同事解釋問題原因,當時的興奮現在還記得。


這是很棒的體驗,雖然那段時間忙成狗,成天想著項目的事情,但是腦子在後台進程不斷在幫我思考問題。

簡而言之,沉浸在一件事情中的感覺很棒。


作為曾經為了調bug 一周幾乎無法閉眼還被監工師兄罵的狗血淋頭的女博士,一定要分享下自己的心酸經歷。。。

曾經在剛來實驗室時候負責某參考軟體維護,可能因為太熟悉這個軟體開發的背景,讓我們寫一套完整的能work的參考軟體是完全沒問題的,但是代碼的可讀性,整潔性,魯棒性,以及可擴展性真的讓人崩潰,尤其一旦出現大bug(xxx不匹配,crash,或者性能變差等),需要花大量的時間來代碼級分析,單步調試,嘗試bug復現,打各種log。。。經常自己的bug解決了,就發現之前別人實現的代碼又有了新bug。。總之,一出bug就各種焦慮。。。實驗室的人大都避而不及,不願接手這個燙手山芋。。。

軟體發布前期出bug了,每天晚上12點多設置完新的斷點才回去。晚上翻來覆去睡不著覺,回想各個技術模塊哪裡會出現問題,一閉眼腦袋裡全是一行行的亂七八糟的C代碼,天花亂墜,怎麼都揮之不去,不敢看手機,怕一看徹底睡不著,第二天九點還要開小組例會,,就這樣持續了快一周,,,

「住不住bug的我,總是眼睜睜看它溜走~~~~」

快周五了,biu~ bug的位置定位到了某一塊某一個流程輸入和輸出不匹配,,,哇!找到bug啦啦啦啦啦,周六可以找男票愉快的玩耍啦啦啦(激動的趕緊告訴監工師兄,,),

然額,,叫上幾個人一起大屏幕再最後確認下,突然發現這是一個累積效應,也就是說定位的地方之前已經問題出現了(此處省略500行技術細節),,,心中一萬隻草泥馬奔騰而過。。。一個碩士師妹輔助我維護參考軟體的,周五晚上這麼個美好時光,她要回寢(chu)室(qu)睡(yue)覺(hui)去了。。。

一直沒吃晚飯,男票下班後來實驗室等我吃東西。我跟監工師兄說,今天不調了吧,我也要休息下,周末再調。。。大概這個意思,已經記不得原話了,這時候他突然發火了,說了很多狠話,balabala。。。。包括:不想干早點說!。。辦公室外頓時鴉雀無聲,外面有十幾號人以及男票。蓬頭垢面,心力交瘁,差點淚灑當場,還好控制能力略強,忍了~~~

現在男票只要看我一不開心,就取笑我:又被師兄罵啦????

這大概是我活到現在因為調bug受傷最嚴重的一次,,,,

很快bug調出來了,監工師兄特別開心,給我發了66塊紅包~

後來一口氣發現並fix了好幾個驚天大bug,,,,


現在的我,已經是無堅不摧,不再是當年那個監工師兄的小馬仔。

也很少被bug折磨,,,

更重要的是我遠離了那個參考軟體。。。。

然後告訴同樣被軟體bug虐的死去活來的繼任師弟們: 慢慢調,經歷過這個過程,再遇到啥bug都分分鐘fix掉,繼續攢大招!


做開發久了都有這樣的經驗。以前有個bug困擾我一周,一籌莫展。於是晚上做夢也是這個,並且夢裡給出一個解決方案,第二天趕緊用那個思路,把問題徹底解決了。類似的事好像不止一次。人在夢裡的思考可能非常清晰,是智商的高光時刻。至於睡不好,可能得靠轉移注意力了,比如睡前看個大片或者跟老婆或女友做點愛做的事。


趕緊準備小本本塞枕頭下,近日拂曉,半夢半醒之時,突破在即。

不開玩笑。是特別認真的建議。


bug都沒有了,你不就失業了,那時才該擔心


沒毛病啊,我上次就是一直在床上想著bug的事,然後就真的找出了個bug,爬起來調了。
見這裡:https://www.zhihu.com/question/33198014/answer/152928206


去年年底時候也是這個狀態。。迷糊中腦海中浮現出一行白天寫錯的代碼。。打開電腦修完逛了下論壇認識了現在的女朋友。。


安慰自己,睡著了可以在夢裡調試!

媽的我真的有時候夢到在調代碼,還偶爾TM真的能調出來!


那就把沒看完的劇再看一集。


我也曾經經歷過這個階段。現在很少發生了。

有兩個變化:

1,離開了流程不受控,權責不明的團隊。
團隊的工作還是很認真的,奈何流程不受控,這是無解的問題。這頭fix了那頭給你來一腳。

2,更準確地估算自己當天可以完成的工作量,遇到問題要及時和領導溝通,並給出嘗試解決的辦法,讓領導心裡有數。

現在基本上當天的事當天完成,就算遇到很難解決的bug,那也是下一天的事。

對時間的估算能力,很重要。


起來調bug。
我有一段時間前面工作電腦後面床,想到有bug怎麼能忍,必須起來改好才能睡得著呀。
後來不在公司睡了,修bug總會忘記時間,有時候會到11點才回,修好了再回家。如果是回家之後才想起來的bug,那就記在紙上或者有道雲筆記。第二天去了公司繼續改。

此外還有種情況,剛離開公司想起來個地方沒完善可能是bug,不難的話或者時間尚早,那就回去懟完。譬如我今晚上走之前想到個bug,門都出了感覺不對又回去,改到剛才才結束。現在打車回家。

注意修bug前最好吃過飯,現在我一般6點多吃飯。別忘了吃飯胃疼。


經常在夢裡解決bug和實現功能 …


題主你這個情況很危險啊,繼續下去會得病的。你問我怎麼辦?我根本不知道你遇到的是什麼bug,我也很絕望啊。這個病因不除,沒法治療啊。


女程序猿,研究汪強答一記。

我年輕的時候(本科)也有這個毛病,不過那時候上課是主業,寫的比較大型(?)的代碼僅限於課程設計,基本上有bug熬夜熬到一兩點基本都能解決,很少有bug會過夜的,所以不太會因為bug睡不著(反而因為解決了bug異常興奮睡不著_(:з」∠)_)。這種偶爾的熬夜其實對平時的生活影響不大。

前段時間在日本工作,很正經地朝九晚六,路上來回還要兩小時,這個和在學校就不一樣,因為代碼是每天都要寫的,每天要實現新的feature,每天都會有新的bug,因為工作地離家裡遠,也不可能每天熬夜很晚,基本都是六點半準時下班。但是碰到bug沒調好真的就是心裡很煩躁,然後只能慢慢調整,把工作和生活割裂開來,這個很難,也很虛,但是工作時間長了,慢慢就能自我調整好,因為神經不可能長時間緊繃著,天天下班還想著bug真的日子沒法過了。

另外說下我自己的一些小小的策略。基本上來講每天需要完成的功能是已知的,從難到易排好,先做難的,基本難的做完了,剩下的小問題當然小case了。其次就是注意下班時間,假設六點半下班,那麼六點開始就不要再鑽牛角尖搞一些很容易出問題的feature了。我有時候就是六點二十開始搞事情,然後七點都下不了班。如果真的不幸下班前發現bug了,先不要著急平靜一下心態,粗略地測一下,基本上來說如果對自己寫的東西熟悉,大致問題出在哪一塊心裡應該是有數的,造成bug的原因基本上也能有一兩種猜測,這時候就不要急著調bug了,調不出來又更煩躁,就摸會兒魚下班吧。自我催眠這bug肯定是剛才自己預估的那個毛病,給明天調bug心裡留個念想。我基本上對於這種心裡有數的bug就算沒調好也不著急,最怕那種莫名其妙完全沒有一點想法究竟是什麼造成的bug(比如線程非安全導致的時隱時現的bug,簡直可啪)。

當然以上說的這些,例如根據難度給今天的工作任務排序,粗測bug預估大概的原因之類也不是一朝一夕能練熟,經常碰到覺得明明很簡單的feature就是出現莫名的bug,那時候整個人就是一種馬上要爆炸的狀態→_→不過時間長了,基本預判出錯的幾率就越來越少了,慢慢也習慣把工作和生活劃分清楚,下班的時候就不想工作了……感覺題主妹子應該是剛讀研不久吧,慢慢就習慣了,bug才是生活的常態……哪天沒碰到bug我反倒覺得不正常了……

最後想說一點,很多程序猿喜歡晚上寫代碼_(:з」∠)_我個人的經驗還是不要了,睡前兩小時建議不要寫代碼……基本上我如果睡前兩小時還寫代碼只有兩種結局,第一代碼寫得太順利興奮得睡不著,要麼是代碼寫得不順利鬱悶得睡不著……


其實做夢也是一個解決bug的很好的途徑…


在搞一個 OJ 評測系統,校賽要用
躺著想一些功能的實現,想著想著就睡著了,夢到在調試的時候出現了一個 BUG

醒來後去查了那個部分的實現

.
.
.
.
.
.
.

並沒有 BUG
不是很懂為什麼會想到睡不著


十點後要停止思考程序上的問題,也不要寫代碼,否則就會像我一樣,現在還睡不著


推薦閱讀:

作為程序員,你有哪些正在做的個人項目?
機器學習數據挖掘類工程師平時主要的工作內容是怎樣的?
上古時期的程序員都有哪些當今普通程序員無法想像的神級操作?
面試時 HR 問你怎麼看待阿里月餅事件,作為程序員要怎麼回答?
程序員有流派嗎?

TAG:生活 | 程序員 | 編程 | Bug |