美國一位資深的Flash/前端工程師John Nance發表了一篇名為“Never trust a programmer”,其中討論了許多開發人員面臨的最大挑戰之一:如何與客戶或者公司內的銷售部門協商項目估算。全文如下(譯文經過CSDN編輯校訂):
編程對很多人來說有點神秘。這就造成了在公司內部,人們對編程的事情產生了很多懷疑和疑惑。 通常,當你不瞭解一個東西是怎樣做成的時,你只能說:可能是這樣吧。 如果你從沒見過工地,你也許會認為幾個星期就能建出一棟大樓。 事實上,在這樣的時間內是可以完成這棟建築的,只是能不能用就不知道了。 如果你看過房子如何建造,跟蹤它的建造過程,你能從物理實物看到地基如何澆灌,鋼架結構如何搭成,等等。 但給電腦編寫程式,或建設一個網站卻是不可見的。
除了程式員外,程式碼對其他人來說是接觸不到的。程式的運行好像是大幕後發生的魔術戲法。 只有Team Dev的成員才能知道程式是什麼,怎麼工作的,不能幹什麼。 從程式員的角度看問題,你就能得到最好的開發結果、項目評估資料和進度更新。 很多的A型性格的人對此不以為然,但事情並沒有那麼簡單。
當客戶提出他們想要什麼東西,而且要在什麼時候完成時,問題就開始出現了。 銷售人員希望做成這筆交易。拜託,請告訴客戶,他們的想法不現實,這個生意做不了。 這樣做下去只能導致一場災難。 我曾看見過銷售部門把估算的工期消減一半,四處花錢去達成他們的銷售,完成他們的任務。 直到最後有一天,事情的發展看起來都是程式員的錯造成的。他們這樣做結論是因為程式員是最容易責備的。
程式員們在學校裡沒有學過辦公室政治學。他們應該學,當然這是另外一個話題了。 作為一個程式員,他需要集中精力,沉著的思考,去開發出清晰好用的程式。這是個困難的事,需要用去你全部精力。 程式員們沒有時間去理會是誰背後給了自己一刀。可銷售部門玩的這些把戲卻有嚴重的後果。
我的前一個公司,一個百萬美元的項目,熱熱鬧鬧的,像煙火一樣,短暫的光華後就落地地上了。 什麼原因?是這個公司指使程式員們每周工作70小時以上去完成客戶專橫的進度表導致的?還是銷售部門對客戶言聽計從導致的?
我也不認為開發人員沒有任何責任。如果你看過電視劇Seconds From Disaster(CSDN編者註:美國國家地理頻道的一個系列節目,講述了各種人為和自然災害),你會明白,災難的發生是一群人都沒有做自己該做的事情導致的。 但是,我可看見程式員們都在做他們自己的工作。而其他人都在幹什麼呢?
那麼,公司是怎麼認為的?他們解僱或開除了所有的程式員。然而整個銷售部卻沒事。 這次慘敗的死亡之旅後,也沒人願意留在那裡了。
程式員被打入地獄的過程都是有一個個的“遵命”鋪就的。 為了對得起自己,對得起自己的職業,程式員應該警惕那些危險的事情。 評估分析,評估工作通常會花掉很多的精力。據我所知,這個比任何事情都要費神,它需要你從多個層面去考慮整個事情。 不幸的是,我曾親身經曆優秀的評估報告被駁回或修改。 評估的越符合實際,招惹的眾議越多。
把符合實際的預期報告告訴使用者是個困難的事情。這會使生意的成交增加困難。 程式員在承擔其他人冒險的後果。程式員的工作從來不輕鬆。 事實上,程式員是一個公司裡對這個事情看的最清楚的人。他們懂編碼,知道需求業務。他們也許不善於和客戶打交道,但他們卻真正知道項目應該怎麼做。
重視你們的程式員。他們不僅僅是個技工,他們也是懂業務的。 他們能憑藉自己的經驗判斷出,是誰在為了留住客戶而胡亂誇下海口。
其實,只要在這個行業裡工作了一段時間的人都會有類似的感受。大多數的程式員與銷售人員比起來,與社會接觸較少,遠沒有像銷售人員一樣練就一身鋼筋鐵骨,他們往往不夠強硬、太過善良,在對待一些事情的處理上不夠積極,他們把太多的精力與時間都投入到了他們的程式世界中。可是,他們究竟應不應該這麼做呢?
我在自己的工作中也曾經不止一次地遇到過類似的問題,每次事情過後,我都會覺得自己當時的表現不夠好,可是,下一次還是不可避免地犯了同樣的錯誤,也許是天性使然,也許是所受刺激不夠,但這不得不說是一個很爛的借口。競爭無處不在,顯然,我沒能在競爭中好好地表現自己。我知道,我必須改變我的一些想法和做法,但這的確不是一件容易的事。
這其中,很重要的一個因素是,老闆並不真正瞭解編程,銷售人員也是如此,確切地說,他們對一個項目是如何開發的連基本概念都沒有,所以,他們更加不知道這個項目的實現究竟有著怎樣的難度,需要多少人月,這不能責怪BOSS和銷售們,畢竟他們有他們需要考慮的問題,但是,這就直接導致溝通上的障礙,如何讓一個完全不懂編程的人瞭解到開發一個項目需要什麼資源,也許是每一個程式員需要具備的能力。
另一個重要的因素是,老總、銷售、開發,三者的立場並不是那麼完全一致,所以矛盾總是不可避免的,所以,有時,必要的強硬不僅僅是對程式員自己負責,更是對銷售和BOSS負責,但是,這樣的初衷究竟該如何表達和操作才能收到證明的效果而不是給自己製作麻煩呢?這是一個問題。
上述的問題我無法給出一個好的答案,也許是我的從業經驗還太少,真的很希望能夠聆聽前輩的教誨。我想,解決問題的核心應該還是信任吧,三者間的彼此信任也許才是解決這個問題的唯一途徑。可是,信任又該如何建立呢,尤其作為一個女性程式員,獲得信任同樣不是一件輕而易舉事情。
我知道,做任何一種職業都不容易,我也希望能夠在這個行業裡一直做下去,所以,必須讓自己變得更加優秀才行,這不僅僅是在技術上,同時也在為人處世上和競爭生存上。
沒有人想成為被淘汰者。
希望行業內所有的兄弟姐妹們都能夠在自己的路上順順利利。