有一種境界叫感覺(三)
吳旻
泰岩網路工作室
程式員既聾,又啞,且瞎!
為什麼聾呢?因為程式員很少能聽到來自需求源頭的聲音,或者說,聽不到有效資訊。
啞則是因為程式員發出的聲音大多石沉大海,引不起有關人員的注意,說了也是白說,更何況技術人員一般都不善於表達了。
瞎則是因為程式員所處的位置太低,看不到大方向,一隻“井底之蛙”,跟瞎也沒什麼區別。
那程式員是怎麼完成工作的呢?
如果你拍拍一個既聾,又啞,且瞎的人的肩膀,然後再向前輕輕推一下他,我相信他一定會明白你是想讓他向前走。
好多程式員乾的就是這種被人拍拍肩膀,又輕輕向前推了一下的工作。如果你試著蒙上眼睛走上200米,你就明白我說的是什麼意思了。
好了,當程式員覺得自己達到目的地了,覺得完成工作了的時候,客戶會驚訝地說:這根本不是我想要的東西!
當技術不再是問題的時候,架構設計就會顯得至關重要。我為此甚至提出了“面向變化編程”的概念,但“面向變化編程”的前提是程式員必須充分瞭解需求,也只有瞭解了需求,才能在設計中充分考慮到可能的變化。
現在的困難是,如果程式員既聾,又啞,且瞎時,他怎麼可能設計出正確的架構?!
也就是說,如果程式員對需求一點感覺沒有,他怎麼可能把事情做對?
我隱約感覺到了那麼多項目慘死的原因了,包括我經曆的和我聽說的。從前我大都會往技術能力方面上去想,因為傳奇故事中,英雄的能力實在太突出了,沒有英雄辦不到的事情;但實際的情況不是這樣的,至少傳奇中的英雄不可能是既聾,又啞,且瞎的人。
其實在是否壓縮流資料這個問題上,我幾乎快要犯“政治性”錯誤了,因為我不明白為什麼一直運行得好好的程式,要做這麼複雜的改進(當時我還沒找到簡單有效演算法),而且對使用者體驗一點協助都沒有。
我甚至問了兩個推動這件事情的人,以便尋找原因,但得到的回覆都是:你最好做壓縮。很顯然這不是一條有效資訊,它只能暗示這件事情有隱情,但根本無助於我理解需求!無奈之中我發出了大討論的郵件:《關於資料是否應該壓縮後傳輸的討論》。
從返回的郵件中我很快明白了需求的真正原因。公司要節省運營費用只是很小的部分原因,畢竟我們用這種頻寬已經不是一天半天了,也沒聽說公司不能接受;實際的原因是公司打算將目前的機房數量加倍。也就是說,如果現在一年的網路流量費用是50萬,以後就要變成100萬了。這麼大的費用,換了誰都會心疼的。
所以,如果我知道上面的原因,那我郵件討論的題目就不是“否應該壓縮”了,而是“如何才能有效壓縮”了。
如果我不知道需求的真正原因,我會覺得有人故意難為程式員,要程式員做複雜的改動,收益卻非常有限;而需求方卻會覺得技術人員太自私了,根本不知道為公司的利益著想。現在我知道原因了,我不僅會覺得這麼多錢可能是我們團隊人員一年的工資,而且還會在相關的程式設計上考慮多點機房之間的可能存在的同步問題。
瞧瞧,當我能表達自己的疑惑,能聽到來自需求方的有效聲音,能看到未來發展方向時,我是多麼願意配合這件事呀!
我是不是可以這樣說,當我們技術人員錯得離譜的時候,是不是我們失去了視聽感覺?你能想象一個既沒有味覺又沒有嗅覺的廚師能做出好菜來嗎?