無數的教訓,為什么要做一個好的甲方?
作者:張海龍,CODING CEO,技術創業者。CMU計算機碩士,原 Oracle 高級軟件工程師。2010年回國創業,曾聯合創辦開源中國社區,2014年創辦 CODING。
這個世界上有很多的甲方也有很多的乙方,我們在生活和工作中,不是充當甲方角色就是充當乙方角色,往往兩個角色交替著來。看起來,甲方給錢,在交易中應該是主導地位,那為啥軟件外包領域的甲方經常在項目交付的過程中狼狽不堪?
我平時常常充當第三方,看了形形色色的甲方和乙方,也算是看透了:軟件開發項目要成功,更多的取決于甲方,取決于甲方的能力,態度,還有期望。項目換乙方不難,但是換甲方,基本就死了。我們常見,公司換一任領導,之前沒完工的項目黃掉的可能性極高。所以,做一個好的甲方很重要,我們來談談為什么,以及如何做一個好的甲方。
沒有人知道你在想什么
這個世界之所以有那么多矛盾,就是因為我們的思想是不透明的(是不是想起了三體人?),沒有人知道你在想什么!你找人幫你做軟件開發,你得明確的告訴乙方你想做什么,軟件的使用場景是什么,解決什么問題。你在你的領域混了很多年,你覺得有些問題很顯然,但是乙方沒有。你覺得理所當然的問題,乙方可能完全沒有聽說過。所以,作為甲方,你應該不厭其煩,盡可能詳細的說明白你的需求。很多軟件項目做出來效果不理想,追根究底都是甲方一開始沒說清楚。你不能覺得你的需求很常見,很簡單,所以乙方應該理所當然的做出你想要的東西。如果你要的軟件真的這么常見,那你就不用定制開發了,直接買現成的。每個需求都是獨特的,所以請不要用這樣的語言來描述需求“做一個跟 xxx 軟件差不多的就行了”。你說你想要一輛車,乙方好不容易做出來了,結果你說其實你想要的是四驅的,座椅加熱的,還得是敞篷的。這樣的結局只有一個,就是加錢,延期,否則乙方不干,但是你不爽,埋下了不歡而散的種子。
由于國內的甲方大部分不夠成熟,所以很多國內的開發者和外包團隊都傾向于接國外的單子,包括香港和臺灣的。我參與的海外項目,無一例外,都是非常詳細的需求文檔,并且對接的人非常耐心的跟乙方解釋業務邏輯。更重要的是,甲方非常清楚,他的責任在哪里。在出現問題的時候,他會判斷這個問題是誰的原因,不會把所有責任往乙方身上推。這是我們值得學習的地方,也是我經常跟甲方講的需要改進的地方。
一分價錢,一分貨
大家都知道買東西是一分錢一分貨,憑啥到了軟件開發就不是了呢?憑啥要求乙方給你免費干活呢?有些甲方意識不到軟件的價值,因為看不見摸不著。所以才有一些廠商把軟件裝到服務器內再賣高價的情況,因為服務器是實實在在存在的,掏錢就很樂意。顯然,這是不對的。定制開發軟件的價值就是人工,雖然很多時候計費是按項目收,但實際上也是按人工時間算的,跟裝修一樣。刷墻看起來是按平米收費的,但實際上也是折算成刷這么多面積的人工來算的。所以你裝修的時候刷墻刷完了發現顏色不滿意,重刷,不得再給錢么?任何功能的開發,調整都是有成本的,你想在有限的預算內做很多的功能,那你必須接受的事實就是做的比較粗糙,或者你得接受周期拉長,等乙方安排空閑時間幫你慢慢做。
我記得有一個理論是餐館理論“好吃,便宜,服務好”這三點不可兼得。很有道理,幾乎所有的餐館都不可能兼顧這三點,假如有,那一定會很多人去吃,排隊排死,自然服務也就不好了。這條理論放到其他行業也一樣,你怎么可能要求軟件開發做到“質量好,便宜,交付快”呢?
我是甲方,我是爺?
現實中的交易有時候會存在一種情況,給錢之前甲方是爺,給錢以后乙方是爺,所以才有了所謂的第三方。軟件開發由于不是實體產品,很多時候的定義無法完全明確,這樣的情況尤其明顯。但是,一個成功的軟件項目,往往甲乙雙方都不是爺,就是純粹的甲方和乙方,各有各的責任,各有各的義務。乙方作為收錢的一方,對甲方態度好點,耐心一點是應該的,但是特別要強調的是:甲方并不凌駕于乙方之上。先來說點不正規的,還拿裝修說事兒。21世紀都進入第二個十年了,然而我們在裝修的時候不還是得給裝修師傅送香煙么?這是為什么呢?明明給你裝修費用了,為啥還得買煙?這是一種態度,師傅你工作辛苦了。結果是,師傅高興了,活兒干的也快了,質量也好了,橫平豎直,保證不偷工減料。有的地方看的見,有的地方看不見。軟件開發也是一樣,你對乙方尊重,乙方自然會有體會,別的不說,同樣的功能,我可以把代碼寫寫好,注釋多寫點以便后期維護。
再來說點正規的。軟件開發項目如果完全按照合同來,估計甲方也有很多小尾巴,大家誰都不讓誰事情就很難辦。所以把關系處好是有必要的。還有,軟件項目總有小修小改,如果嚴格按照產品定義來,乙方完全可以不做這些修改,或者要求加錢。但是如果大家相處的好,這些小改動就順手做了。這些都是很現實的狀況。畢竟,軟件開發還算是門手藝活兒。
這篇文章是寫給甲方看的,所以乙方的問題就不詳細討論了。說一個結論:如果你覺得乙方不靠譜,或者你給了錢就的聽他的,請盡快更換乙方,后面的錢不要再支付了。雖然前期的投入會讓更換乙方的成本很高,但畢竟比項目爛尾要好。而且多次實踐經驗表明,如果乙方前期不靠譜,后期變的靠譜的可能性為零。除非你愿意忍辱負重,湊活把項目做了,否則盡快終止交易,換人。
糾結還是交付?
所有程序員都知道,程序不可能沒有 Bug,而且 Bug 往往越修越多,然而這在很多甲方那里是不能理解的。我經常跟甲方講的是要看主要功能,主要流程是否能走通。除非一些特殊領域的軟件,例如金融,工業控制等等,其他的軟件,特別是互聯網領域的,都應該是先上線,然后再完善。我看到的幾乎所有互聯網產品都是這個路子。所以,在絕大多數情況下,我們應該選擇盡快交付上線,而不是糾結于一些小問題。一般的軟件項目都有質保期的,所以這些小問題可以在質保期慢慢修。這有幾個好處,首先是不用趕時間,做的質量會好一些。其次,上線以后有了實際的用戶和運營數據,可以更加準確的定位一些問題。
另外就是從心理上來講,大家做一個軟件一般都好幾個月,如果一直拖著不上線勢必會影響士氣。雖然,理論上乙方只是幫你開發而已,是否上線跟他關系不大,但成就感多少還是有一點的。上線以后,大家修 Bug 的情緒都會不一樣,而且大家都知道已經上線了,有問題得及時修。總而言之,我建議甲方在交付階段不要糾結,先交付,然后利用質保期完善。
在軟件開發這件事情上,你可能是甲方,但在你工作的領域你可能是乙方,換位思考一下會讓你成為一個更好的甲方。
最后,如何判斷你是不是一個好的甲方呢?很簡單:乙方是否下次愿意降價 10% 跟你繼續合作。