為什麼越來越多的程序員不願做做外包了
這裡我說的「不做」,是指:不作為承包方,承接外包業務。不是作為員工不進外包公司工作,到外包公司打工,我一點意見都沒有,只要工資給夠就行,什麼外包學不到技術之類的,我哈哈哈哈,仰天大笑……(以後有空再解釋,其實我記得園子里和知乎的一些回答里都說過很多次了:學東西要靠自己。公司不是學校,給你工資是讓你幹活,不是讓你學技術的)
做開發快十年了,有好幾次朋友同事都問我想不想接點「私活」。我的答案始終如一:幹不了,謝謝。
因為我覺得說「不想干」,太……太那個了點。別人給你介紹一個業務,總是好意,你一口回絕,有點不近人情的?所以就委屈點自己吧,技術不行、時間不夠……總之找個不是理由的理由。
但總有些話,不吐不快,借著今天這個由頭,一起說開了吧。
因為都知道我以前做個律師,所以「一起幫」上就有了這麼個求助:一份軟體研發合同。呵呵,不錯啊,已經出現「多元化經營」的跡象了。
合同的問題和我預想的差不多:
涉及到需求,就是一些「不恰當的」「隨意的」「過多的」「少量」……而這些詞,就是以後糾紛的根源。什麼叫「過多」,什麼叫「少量」?什麼時候是「恰當的」,什麼時候是「隨意的」?
說起來有些奇怪,我做過律師,但我最煩的就是「扯皮」。是不是和「賣味精的不吃味精」一個道理?差不多吧,因為長期在糾紛的漩渦中掙扎,就特別痛恨糾紛——尤其是這糾紛還是自己造成,或者需要自己承受的時候。
外行對律師有很多誤解,以為律師賊眉鼠眼的一天到晚「想鑽法律的空子」;就像外行對軟體開發的誤解一樣:就這麼改一下還要另外收錢?!
除了律師,我還做過裝修:家裝。在做軟體開發之前,我以為家裝的業主就是最「煩」的(原諒我說實話吧,不幹這一行了,終於可以噴一下了)。有些業主,一天到晚的改啊改啊,在圖紙上改還好一點,最坑的是做都做完了,才哇哇哇的叫:「唉呀!怎麼是這個樣子?!和我想的不一樣/我覺得不好看啊……」每次聽到這種話,我頭都大了!全身的力氣就好像被抽空了一樣,無力吐槽,就醬紫的。
但做了軟體開發,才發現……哈哈哈哈!
家裝過程中的的那點改動,和軟體開發中的改動比起來,簡直就小巫見大巫了。
首先,改動的責任,或者說改動的費用由誰承擔,家裝工程中是比較清晰的。作為施工方,按圖施工,圖紙是業主簽了字的,所以只要沒有質量問題,你業主要改,責任肯定是你業主的。但軟體開發呢?有圖紙么?你說我有《需求文檔》,你確認?你確認你能按這種需求文檔幹活?
說實話,我看到「參照」兩個字腿就發軟。什麼叫參照?你說複製我都高興一些。參照不是複製喲!參照就意味著我可以進行「局部」修改喲!但改哪些局部呢?這些改動是不是真的是「局部」的呢?鬼大爺才知道!
然後,你再看看這個《需求說明書》。我都不知道怎麼評價它,簡單,簡陋?我真心覺得是慘不忍睹。都不能說是坑了,就是個崖,懸崖,萬丈懸崖!
我記得我以前舉過例子,用的是「註冊/登錄」,你看這需求也有意思:是否需要簡訊驗證。可能剛想到的吧,但想全了么?裡面的花樣還多著了,比如:
能不能QQ登錄,微信登錄?
如果可以,登錄時記錄哪些信息?
登錄後還需不需要在本站註冊綁定?
註冊時用戶名有沒有關鍵字限制,比如色情的反動的容易讓人誤解的(如:系統管理員)?
限制怎麼處理,人工審核還是自動過濾?
怎麼給錯誤提示?
……
整個合同金額才兩萬元,但如果說較真的話,可能這兩萬元就夠做一個註冊/登錄,你信不信?
那到時候怎麼收場?
其次,改動的費用怎麼算?
我們假設,發包方比較講道理(其實都不能算「講道理」,只能說人家比較「豁達」,因為合同需求不明,人家不一定輸道理的),承認加錢。但加多少呢?
很有可能,這增加的費用,就是一個「天價」。比如原合同總金額是兩萬,增加項的費用要二十萬,兩百萬。
這非常正常的。
首先,原合同金額太低太低。因為承包方打的主意是套模板,修修改改應付完了事。就我們上面這個合同,開玩笑,兩萬塊錢,做一個商城?!可能么?只能是找個開源代碼,改頭換麵糊弄一下而已。
然後,一旦開始改動。如果說發包方上心,基本上就「收不住」。不是自己從頭寫的代碼,甚至就算是自己的代碼,耦合內聚這些沒做好,牽一髮而動全身,「沒改還能用,一改就廢了」才是常態。到最後,你改不動的。
怎麼辦?撂挑子唄,扯皮唄……
這些事,我見得太多了。
一些同學不忿了。你說得這麼誇張,那外包公司怎麼活?接私活的那些同學怎麼辦?他們不都好好的?!
這其實就是我一直憋著不說話的原因。
不說掙不掙錢,就「不扯皮」的外包,大致有以下幾種:
1、以人天計價,據實結算的。
據我所知,很多大型外包公司,採用的就是這種模式。這種計價模式,你要怎麼做就怎麼做,要怎麼改就怎麼改,反正一個人干一天收你多少錢是定的。活多,費用也多,無所謂。這其實就不算是外包,而類似於「勞務派遣」的性質了。相當於發包方雇了幾個人,按天發工資,主要的作用是規避《勞動法》。員工給發包方幹活,但勞動關係在外包公司。
我個人很推崇這種方式。但這種方式,發包方會有一個擔心:開發人員磨洋工怎麼辦?所以需要管理,管理就必須要懂行,但很多發包方其實是沒有這種能力的。
2、發包方對功能/質量/細節沒太大要求的。
典型的就是政府項目,做個網站,爛得稀里嘩啦……但無所謂啊,反正又不怎麼用!
馬馬虎虎的開發,稀里糊塗的上線,隨隨便便的假裝維護一下,收錢走人,一切OK。這個就不用我多說了吧?懂的人自然就懂了。能接到這種項目,當然非常愉快了,躺著掙錢,問題的關鍵在於你能接得到。
3、發包方事先就能把需求全面考慮、清晰表達的。
理論上,應該有這種發包方。我也在網上看到過一篇帖子,開發人員寫的,他對這個發包方就佩服得五體投地。無論是初始的需求,還是後面的改動,發包方的要求都非常細緻,事先就考慮得非常詳細。確實,和這樣的發包方合作,是一種享受。
但很遺憾,我是從來沒碰到了,周圍的朋友也沒有。通常的情況都是:被發包方各種花式虐,做完一個項目都像是虛脫了一樣,呵呵。
一時興起,寫了這麼多。有什麼用呢?
第一,給創業者(發包方)提個醒,如果一定要選擇「外包」的話,建議:要麼仔細的規劃好項目需求,要麼選擇按人天計費的模式。另外,如果需求沒有足夠的細,而是「參照某某某」的話,收集市場外包公司報價之後取平均值,再乘以十,作為軟體開發費用預算,估計勉勉強強能夠做一個「自定義」的demo出來。
第二,給想接私活的同學提個醒,在接單之前「挑」一下客戶,學會拒絕一些比較「麻煩」的客戶,會給你減少很多麻煩。見勢不妙,要趕快止損。我沒接過私活,但我以前做家裝,從一開始老老實實的相信「顧客就是上帝」,到後來明白「上帝也有很多種」,血淚斑斑,不堪回首。把你的精力,用在能給你更多利潤更多成就感的客戶身上,好像有些勢利,但卻是行之有效的商道。
※五個你可能不了解的killall選項
※深入淺析一致性模型之Linearizability
TAG:千鋒JAVA開發學院 |