樂觀的程序員們

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

  本文發表于《程序員》2015 07 B

  有一次看到來自 Instagram 用戶 findheart 的話:

程序員是一個懂得享受生活的群體。每幾個月或者幾周,他們就會慶祝一個叫Deadline Eve的節日。在這一天晚上準備大量的食品飲料,通宵達旦地工作,并互相致以下個 milestone 絕逼不再拖延的美好祝愿。

  我從這個笑中含淚的小段子看到了程序員的一個特點:樂觀。

  是的,你沒看錯,樂觀,就是樂觀。

  程序員是我見過的最樂觀的一群人,這也是我作為一個程序員回顧自己的開發生涯時發現的一個秘密。

  要知道,程序員的生活充滿未知:未知的項目,未知的語言,未知的框架,未知的工具,未知的進度,未知的天坑,未知的 Bug,未知的交付日期,未知的績效評估,未知的 KPI

  So,在這種茫然四顧一切皆不可知的環境中生活,你要是不樂觀,你絕對扛不住,你根本不可能見到明天的太陽。因為,未知會產生恐懼,這是人之天性,恐懼堆積多了人就會崩潰。而偉大的程序員,堅韌的程序員,不可思議的程序員,擁有超強耐受力的程序員,倍受蹂躪仍躑躅前行的程序員,不但奇跡般地在這個非人的環境里存活了下來,還每天樂樂呵呵屁顛屁顛的,這不是樂觀是什么?還能有哪個群體如此樂觀嗎?

  看,項目估算就這么簡單

項目過程

  當程序員在白色的電腦屏幕上寫下printf (Hello World!)時,他確信,只要按下 CTRL+R 或者點擊運行按鈕,黑黑的命令行窗口就會對他們說Hello World!。

  是的,就是這個樣子。當你寫下Hello World這句駭人聽聞的咒語,電腦絕不會用Goodbye World這句更震撼人心的話來回應你。

  我們程序員面對的世界是0、1 世界,簡單而直接。我們在軟件開發的世界里徜徉得越久,就越容易受到這種邏輯思維潛移默化的影響。我們崇尚簡單,討厭復雜,無論是在數字世界,還是現實生活。

  程序員喜歡看到確定的、可預知的結果,而我們的世界里卻有這么多的不確定性,我們的辦法就是只往好處看,只青睞那些我們把握得住的東西。

  :Begin //請注意,此處的 Begin 為用于 goto 跳轉的標簽

  當我們被迫評估項目進度時,我們會先采取大事化小小事化了的策略,然后把那些人見人愛的小家伙一一拎出來,樂不滋滋地給他們分時間,這個 4 小時,那個 3.5OK,很快我們就覺得胸有成竹,一切盡在掌握,吧啦吧啦我的魔仙棒,傲嬌地轉上一圈再伸臂一點,整個項目大概需要 4 個人月,預留一些時間比如 1 個人月應對隨時可能出現的天外來客,我們有 8 個人,啊哈,半個月哦不,2 周半搞定!

  大家伙分頭行動,哼哧吭哧咣嘰咣嘰開搞了。

  第一周的時候,我們報告說:工作正在有序進行,一切都在掌握之中。

  第二周的時候,我們報告說:出了點兒小意外,但加兩個晚上班兒就可以追回進度,我們可以搞定。

  第三周的時候,我們報告說:又出了點兒小意外,你知道,軟件開發就是這樣,驚喜不斷。不過我們周六和周日已經擺平了意外,我們很快就可以搞定了。

  第四周的時候,我們報告說:嗯,情況比我們想象的復雜,在集成時遇到了不明狀況,整個團隊搞了一個通宵才搞定,結果第二天沒辦法干活,所以,進度比預期的要晚一些,不過,請相信我們,很快就可以搞定了。

  第五周的時候,我們報告說:這周肯定可以搞定了,相信我們的能力。

  第六周的時候,整個團隊都一臉黑線在加班

  第七周的時候,我們報告說:系統集成完成啦,第一個 Beta 版本可以內測了。這雖然比我們預期的時間晚了一點點,不過,我們的內測版本堪稱完美,幾乎不可能出現 Bug。

  

  第十周的時候,整個團隊都在加班加點改 Bug,人人一臉黑線外加兩個青腫的眼袋,每當焦慮萬分的老板詢問上線時間時,項目經理都會說快了快了,就這兩天就搞定了。

  等到第十四周要結束的時候,版本終于發布了。

  皆大歡喜啊。

  老板已經被這群猴子逼瘋了,心里恨得要冒火,還得咬著牙說:兄弟們辛苦了,你們的努力大家有目共睹。

  我們報告說:我們發布的版本質量很高,容易上手,用著也方便,用戶一定會滿意。相比之下,少許的延期是值得的。

  goto Begin

  好吧,項目估算簡單嗎?

  你看過《人月神話》了嗎?

  一切管理理論都是扯淡,哪一種也不適用我們的團隊,因為我們這些程序員是獨一無二的,都有著與眾不同的個性,我們必須找到自己的項目管理方法。并且,我們現在的團隊已經在我們獨特的管理模式下運轉良好,完全不必要引入學習成本那么高的控制手段,況且那樣對大家也是一種刺激,覺得公司不信任大家,這會大大的降低士氣。毫無疑問,我們現在的團隊士氣高昂,必須要保持

  這可能是某個項目經理說的話,我不記得了。他最終的結論是:雖然這次項目 Delay 了,但是下次,絕逼不會了!我們一定有辦法控制進度。

  看到了吧,這就是我們的樂觀。它生動地告訴我們什么是真正的樂觀:即便無數次實踐已經證明我們的估算和調控手段不靠譜,我們還是會信誓旦旦地在下一個項目來臨時許下絕逼不會延期的諾言。

  這很簡單,兩天搞定

  程序員群體的樂觀是由一個一個個體的樂觀匯聚而成的。

  有多少次我們被問到這個問題需要多久解決時,我們都說出類似兩天搞定的話

  有多少次我們看著同事深陷泥沼無法自拔完工無望時,我們說出要是我早就搞定啦之類的話

  有多少次我們要學習未知的技術并把未知的技術應用到未知的業務上最終交付給客戶一個可用的系統時,我們都會天真的從我們既往的經驗池里抓幾枚硬幣來撒撒,然后說出大概需要半個月這樣的結果只有程序員,彪悍的程序員,無所畏懼的程序員,敢于樂觀地面對未知的一切拍拍腦袋給出一個確定的工期。

  

  這都是因為我們程序員傾向于把事情想得簡單,在我們這些崇尚簡單的程序員眼里,即便你秉持著不憚以最低的效率來評估的原則,也會給出一個最終看來還是樂觀的估計。

  這讓人絕望嗎?

  No!恰恰相反,這正是我們程序員之所以為程序員的一個關鍵特征,惟其如此不能活也!

  沒什么難的,不過如此嘛

  萬事開頭難。很多事情只要我們突破了最初的障礙,后面就會順風順水勢如破竹。對程序員來講,這種規律很容易被強化,因為,我們有太多機會學習新技術新框架新業務,而大多數的語言和框架,寫一個萬能的Hello World就入門了!

  這種學習新技術的感覺,和開車類似。我學會開車后,一直沒有上路跑過,提車后猶豫了幾天,總覺得城市里路況復雜,很多車不管紅綠燈總在強搶黃三秒,行人又亂闖,電動摩托總是突然呼嘯而過,左轉右轉與直行同時被允許,想多了總覺得自己不能應付這種狀況,就在考慮要不要請個陪練陪著我上路跑幾天。后來因為著急上牌,沒辦法就直接上路了,早上五點多起來,從家開到了車管所,辦完手續后又戰戰兢兢地開回了家。這是第一次單獨一個人上路,沒磕沒碰沒撞沒出事兒,居然!好吧,成功的經驗會讓你找到自信,于是后來我就敢上路了:怕啥,就那樣嘛。

  程序員的情況與此類似。比如你讓一個 C++ 程序員去開發一個 AndroidApp,他可能只需要兩個星期就能學會 Java 和 Android 開發,做出一個 DEMO。然后呢,跨過門檻,一切障礙都不存在了,前面都是坦途,沒什么能阻礙這個程序員解放全人類的偉大理想了。

  這種體驗的不斷重復使我們由衷地相信好的開始是成功的一半,所以,當我們哪怕僅僅做出一個小小的 DEMO 程序,也會興高采烈的發布我們的結論:啊,我們已經突破了關鍵技術,從已有的 DEMO 來看,技術上的問題不再是問題了。

  當然事實并非如此。前路險灘無數,泥沼遍布,暗坑隨處都是,當你邁出第一步,欣喜地以為天下獨握我手一切盡在掌握的時候,那些你難以預料的艱難險阻也已悄然出發,快速向你圍拢過來。

  我開車還沒超過 100 公里,就遭遇了第一次交通事故,和保險公司打了回交道。作為程序員,你說難題已被攻破技術上已經沒有風險,其實僅僅是你過于樂觀了,真正的旅途還未開始,讓你撓頭的事兒還未到來。就是這樣。

  當然,程序員是樂觀的,他們說,無論前路如何,只要逢山開道遇水搭橋見佛殺佛見鬼殺鬼即可通關,天塌了有個兒高的頂著呢,項目黃了有項目經理扛著呢,公司關門了大不了換個地方再戰江湖,爺有手藝,到哪兒混不來一碗飯吃

  好吧,我們就是如此樂觀。如果你要和程序員打交道,一定要謹記此點,他們的職業習慣使得他們傾向于把事情簡單化,只看好的一面,未知的風險他們會一笑而過。所以,你要有預期,他們常常前半程輕輕松松高歌猛進,后半程心情沉重步履維艱。


Cnblogs CSDN 2015-08-23 08:57:45

[新一篇] 為什么程序員在辦公室工作會趨向死亡?

[舊一篇] 3年3000小時,建一個自己的“空中樓閣”
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表