有一次看到來自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.5……OK,很快我們就覺得胸有成竹,一切盡在掌握,吧啦吧啦我的魔仙棒,傲嬌地轉上一圈再伸臂一點,整個項目大概需要4個人月,預留一些時間比如1個人月應對隨時可能出現的天外來客,我們有8個人,啊哈,半個月哦不,2周半搞定!
大家伙分頭行動,哼哧吭哧咣嘰咣嘰開搞了。
第一周的時候,我們報告說:“工作正在有序進行,一切都在掌握之中。”
第二周的時候,我們報告說:“出了點兒小意外,但加兩個晚上班兒就可以追回進度,我們可以搞定。”
第三周的時候,我們報告說:“又出了點兒小意外,你知道,軟件開發就是這樣,驚喜不斷。不過我們周六和周日已經擺平了意外,我們很快就可以搞定了。”
第四周的時候,我們報告說:“嗯,情況比我們想象的復雜,在集成時遇到了不明狀況,整個團隊搞了一個通宵才搞定,結果第二天沒辦法干活,所以,進度比預期的要晚一些,不過,請相信我們,很快就可以搞定了。
第五周的時候,我們報告說:“這周肯定可以搞定了,相信我們的能力。”
第六周的時候,整個團隊都一臉黑線在加班……
第七周的時候,我們報告說:“系統集成完成啦,第一個Beta版本可以內測了。這雖然比我們預期的時間晚了一點點,不過,我們的內測版本堪稱完美,幾乎不可能出現Bug。”
……
第十周的時候,整個團隊都在加班加點改Bug,人人一臉黑線外加兩個青腫的眼袋,每當焦慮萬分的老板詢問上線時間時,項目經理都會說“快了快了,就這兩天就搞定了。”
等到第十四周要結束的時候,版本終于發布了。
皆大歡喜啊。
老板已經被這群猴子逼瘋了,心里恨得要冒火,還得咬著牙說:“兄弟們辛苦了,你們的努力大家有目共睹。”
我們報告說:我們發布的版本質量很高,容易上手,用著也方便,用戶一定會滿意。相比之下,少許的延期是值得的。
***goto Begin***
好吧,項目估算簡單嗎?
你看過《人月神話》了嗎?
“一切管理理論都是扯淡,哪一種也不適用我們的團隊,因為我們這些程序員是獨一無二的,都有著與眾不同的個性,我們必須找到自己的項目管理方法。并且,我們現在的團隊已經在我們獨特的管理模式下運轉良好,完全不必要引入學習成本那么高的控制手段,況且那樣對大家也是一種刺激,覺得公司不信任大家,這會大大的降低士氣。毫無疑問,我們現在的團隊士氣高昂,必須要保持……”
這可能是某個項目經理說的話,我不記得了。他最終的結論是:“雖然這次項目Delay了,但是下次,絕逼不會了!我們一定有辦法控制進度。”
看到了吧,這就是我們的樂觀。它生動地告訴我們什么是真正的樂觀:即便無數次實踐已經證明我們的估算和調控手段不靠譜,我們還是會信誓旦旦地在下一個項目來臨時許下“絕逼不會延期”的諾言。
## 這很簡單,兩天搞定
程序員群體的樂觀是由一個一個個體的樂觀匯聚而成的。
有多少次我們被問到這個問題需要多久解決時,我們都說出類似“兩天搞定”的話……
有多少次我們看著同事深陷泥沼無法自拔完工無望時,我們說出“要是我早就搞定啦”之類的話……
有多少次我們要學習未知的技術并把未知的技術應用到未知的業務上最終交付給客戶一個可用的系統時,我們都會天真的從我們既往的經驗池里抓幾枚硬幣來撒撒,然后說出“大概需要半個月”這樣的結果……只有程序員,彪悍的程序員,無所畏懼的程序員,敢于樂觀地面對未知的一切拍拍腦袋給出一個確定的工期。
……
這都是因為我們程序員傾向于把事情想得簡單,在我們這些崇尚簡單的程序員眼里,即便你秉持著不憚以最低的效率來評估的原則,也會給出一個最終看來還是樂觀的估計。
這讓人絕望嗎?
No!恰恰相反,這正是我們程序員之所以為程序員的一個關鍵特征,惟其如此不能活也!
## 沒什么難的,不過如此嘛
萬事開頭難。很多事情只要我們突破了最初的障礙,后面就會順風順水勢如破竹。對程序員來講,這種規律很容易被強化,因為,我們有太多機會學習新技術新框架新業務,而大多數的語言和框架,寫一個萬能的“Hello World”就入門了!
這種學習新技術的感覺,和開車類似。我學會開車后,一直沒有上路跑過,提車后猶豫了幾天,總覺得城市里路況復雜,很多車不管紅綠燈總在強搶黃三秒,行人又亂闖,電動摩托總是突然呼嘯而過,左轉右轉與直行同時被允許,想多了總覺得自己不能應付這種狀況,就在考慮要不要請個陪練陪著我上路跑幾天。后來因為著急上牌,沒辦法就直接上路了,早上五點多起來,從家開到了車管所,辦完手續后又戰戰兢兢地開回了家。這是第一次單獨一個人上路,沒磕沒碰沒撞沒出事兒,居然!好吧,成功的經驗會讓你找到自信,于是后來我就敢上路了:怕啥,就那樣嘛。
程序員的情況與此類似。比如你讓一個C++程序員去開發一個AndroidApp,他可能只需要兩個星期就能學會Java和Android開發,做出一個DEMO。然后呢,跨過門檻,一切障礙都不存在了,前面都是坦途,沒什么能阻礙這個程序員解放全人類的偉大理想了。
這種體驗的不斷重復使我們由衷地相信好的開始是成功的一半,所以,當我們哪怕僅僅做出一個小小的DEMO程序,也會興高采烈的發布我們的結論:啊,我們已經突破了關鍵技術,從已有的DEMO來看,技術上的問題不再是問題了。
當然事實并非如此。前路險灘無數,泥沼遍布,暗坑隨處都是,當你邁出第一步,欣喜地以為天下獨握我手一切盡在掌握的時候,那些你難以預料的艱難險阻也已悄然出發,快速向你圍攏過來。
我開車還沒超過100公里,就遭遇了第一次交通事故,和保險公司打了回交道。作為程序員,你說難題已被攻破技術上已經沒有風險,其實僅僅是你過于樂觀了,真正的旅途還未開始,讓你撓頭的事兒還未到來。就是這樣。
當然,程序員是樂觀的,他們說,無論前路如何,只要逢山開道遇水搭橋見佛殺佛見鬼殺鬼即可通關,天塌了有個兒高的頂著呢,項目黃了有項目經理扛著呢,公司關門了大不了換個地方再戰江湖,爺有手藝,到哪兒混不來一碗飯吃……
好吧,我們就是如此樂觀。如果你要和程序員打交道,一定要謹記此點,他們的職業習慣使得他們傾向于把事情簡單化,只看好的一面,未知的風險他們會一笑而過。所以,你要有預期,他們常常前半程輕輕松松高歌猛進,后半程心情沉重步履維艱。
- 前言
- 受刺激啦,開篇啦
- 群星閃耀的黃金時代
- 3D打印能打印出程序猿嗎
- 程序員零門檻?
- 看看你離優秀有多遠
- 程序員的生活就這樣嗎
- 別說“我已經很努力了”
- 無BUG不生活
- 一張圖道盡程序員的出路
- 薪資,你是我不能言說的傷
- 找工作的辟邪劍譜
- 誰是為加班而生的
- 程序員到底是什么角色
- 讓程序員蛋疼的那些事兒
- 噢,我不想成為問題!
- 軟件開發的十八般樂趣
- 你的幸運女神呢
- 怎樣成為技術達人
- 程序員該不該考慮初創公司
- 那些害死程序員的細節
- 一個老程序員的2014年終總結
- 千奇百怪的程序員
- 咦,你也在混日子啊
- 任性,春節前辭職
- 請區別對待女程序員
- 傷心小箭,你中了幾枝
- 怎么告別“混日子”
- 神奇的四步編程法
- 快來約這些女生,保你脫單
- 程序員跳槽神級攻略
- 程序員的神秘等式,你造幾個?
- 這10個問題去哪兒啦
- 程序員保值的4個秘密
- 她發現了一個Bug……
- 別被技術綁架
- 程序員如何變身IT講師
- 程序員的能力拓展模型
- 軟件項目9步神曲
- 史上最全的程序員求職渠道總結
- 樂觀的程序員
- 三個因素決定你的薪水高低
- 給新程序員的10條建議
- 項目進度估算難題
- 程序員被人喜歡的13點原因
- 怎樣新學一門技術
- 月薪3萬的程序員都避開了哪些坑
- 如何快速定位自己熱愛的工作
- 這8種武器點亮程序員的個人品牌
- 程序員,這12個問題讓經理比你痛苦多了
- 親愛的程序猿們怎么找工作
- 漫談選人與培訓
- 自我發現,找到適合自己的職位
- SMART原則助你設定有效目標
- 培訓機構畢業的程序員被歧視的背后邏輯