爲什麼做java開發的公司需要那麼多程序員?

注:文章轉載自知乎

透過現象看本質。

Java是企業應用市場的王者,如果一家非互聯網公司用Java,那麼十有八九是做企業應用的。

所以,這個問題本質上是:爲什麼做企業應用的公司需要那麼多Java程序員。

開發企業應用的公司有其自身的特點。下面9點不一定在所有企業應用的公司身上都存在,但肯定是大同小異。

  1. 相對於互聯網來說,企業應用不是一個公平競爭的市場。互聯網公司創業之初往往是因爲有好想法好技術,企業應用的公司創業之初是因爲老闆有人脈有關係。大部分做企業應用的公司都是靠老闆的人脈關係活着、靠市場的壟斷地位霸佔着某個領域。而且也因爲老闆和高層習慣於人脈和關係,公司也會形成官僚國企文化,而不是工程師文化。所以這些公司技術老舊薄弱,技術人員也從來不會被重視。很多做企業應用的公司雖然有個高新技術認證,但根本沒有任何技術含量可言。

  2. 客戶是甲方是老闆的上帝,老闆得罪不起,因爲得罪了就沒有人脈和關係,就沒有在這個行業的立足之本。所以甲方可以蠻橫的在需求、設計、技術方案等各種環節上提出自己的修改。而絕大多數甲方都是自以爲是,什麼都不懂,僅僅是爲了表明自己懂或向領導證明自己懂。在項目實施過程中,和客戶對接的程序員完全處於弱勢。心中幾萬匹草泥馬奔騰着,卻要點頭稱是,敢怒不敢言。

  3. 有些甲方其實根本就不懂自己的行業,或者根本不能代表最終用戶,不知道自己的需求到底是什麼。往往就是一句話:你先做出來再說。所以無意義的需求變更過於頻繁,甚至有可能徹底推翻重來。而且這些甲方都是恨不能XP用一輩子的人,他們見不得任何新穎的設計。比如你用了現代化的前端,他們反而不買賬。你用Spring Boot了,他們認爲你連Tomcat都不知道,反而覺得你太Low。這就更進一步助長了公司內部一些不思進取的人,他們拿着尚方寶劍說:用戶不認可這樣!

  4. 項目招標同質化競爭,明着互相壓價、暗着陪標圍標等各手段都上。一家公司提出免費維護三年,另一家就可能提出免費維護五年。反正不管將來怎麼樣,先要把這個項目拿下來再說。最後項目工期可能是合同的兩倍,而且還要面臨着驗收後好幾年的維護期。維護期可能就需要搭一個人進去,沒有任何利潤可言。最後造成項目整體式虧本,能收支平衡就不錯了。

  5. 不像互聯網應用,客戶是網民,沒有地域限制。企業應用的客戶很可能不在公司本地。客戶需要人員駐場開發才放心,我花了錢了就要見到你們的人,否則我怎麼控制進度,我怎麼知道你們是不是用最後兩個月突擊完成的。所以差旅住宿成本飆升。爲了能有新項目收入,就必然不惜血本繼續拿新項目。然後新項目又不斷壓價,造成惡性循環。

  6. 公司成立之初,可能有幾個骨幹技術人員。隨着公司慢慢發展,他們就成了技術總監什麼的。但是這些人基本不會自我提升,而是想着如何繼續把公司的技術把控在自己手裏,永遠坐在自己的功勞簿上。所以他們就禁止技術升級,禁止他們不會的任何技術出現。這樣他們纔有用,他們才能管理新入職的程序員。

  7. 公司不重視技術,也就不重視技術人員。技術人員永遠是三等公民,遠遠有銷售的地位高,也不如財務、行政等職能部。程序員在項目的投標、實施整個生命週期中沒有話語權。投標時,銷售爲了中標就胡亂承諾功能和時間進度,根本不會和實際開發的技術人員商量。往往只是給技術總監打個招呼,但是技術總監不會考慮底層程序員的利益。實施中,客戶的需求更改根本,不會無論如何軟硬兼施會讓程序員去實現。

  8. 在企業應用的公司裏,除了程序員以外,所有人對軟件開發的理解就是堆代碼搬磚頭,人月神話在他們這裏一次一次真實上演。一堆磚頭,4個人6個月能搬完,6個人4個月也可以,上12個人就可以用2個月完成!所以從老闆到銷售到技術總監,一遇到進度問題,首先想到加人。

  9. 爲了降低人力成本,也爲了讓客戶看到自己公司人多有實力,所以就招聘低水平的研發。本來應該招聘一個兩萬四的,但更願意招聘兩個一萬二的,最後招聘的是三個八千的。這些人談不上架構水平、代碼質量、自測什麼的,造成項目交付質量極差,往往讓客戶充當了測試的角色。這就進一步讓客戶對公司產生懷疑,認爲公司沒有全力投入,就要求你駐場開發。

總之,所有的這些因素都在不斷惡性循環。循環的結果就是:做企業應用的公司可能會發展變大,但是不會變強。變大是因爲程序員、後期維護人員攤大餅式擴展。不會變強是因爲技術常年不會有任何變化,人員層次常年不會有任何提升。沒有人從提升技術水平和開發效率的方向去考慮問題,都在想如何拿更多的項目、如何跟客戶玩遊戲。

多說兩句:

我畢業20年,一半時間在開發企業應用的公司,經歷過幾百上千人的國企,經歷過十幾個人的小私營公司,現在還在給多家企業做技術諮詢顧問。我從未見上面的惡性循環趨緩,而是還在不斷惡化下去。

每一個有點理想的做企業應用的公司或老闆都有一個夢:就是產品化,說白了就是能把產品刻成光盤買(當然這是傳統的做法,現在放網上下載也行)。因爲只有這樣才能突圍出怪圈,走上由大變強之路。這需要一家公司有非常深厚的行業經驗,能夠總結和歸納出需求。需要有非常強的架構和設計能力,讓產品可以靈活按需定製。需要有非常強大的編碼和測試水平,讓產品能夠穩定順暢。

爲了能夠實現產品化,但又要面對現有技術水平太差的現狀,很多公司就採用項目養產品的策略。就是成立一個產品部門或團隊,從其他項目組抽調技術還可以的,或者新招聘幾個所謂的高手,集中力量研發產品。產品研發是一個週期長高成本風險大的工作,而且在真正出來滿意產品前是不掙錢的,只能靠項目賺的錢來輸血。這種策略往往都是失敗的,因爲沒有一個公司有實力、有耐心去長時間養着一個不掙錢的團隊。所以,幾乎沒有公司能實現這個夢想,都在繼續攤大餅。

這幾年一線城市生活、租房等成本飆升,而且必然會傳導到程序員的薪資上。所以,最近幾年會有大批做企業應用的公司完蛋。因爲研發人力成本是公司經營成本中最大的一部分,這部分成本會加速上升。原來活的好的公司會面臨巨大壓力,原來活不好的公司會面臨死亡。

下面咱們談談技術。

對企業的負責人,我經常描述一個場景:

有一個工地,幾百號人在用鐵鍬鏟子挖坑。我找上門去,問工頭:你們知道有一種設備叫挖掘機嗎?有的不知道,有的知道。有的以前在別的工地見過或開過,只是來這邊以後沒機會用了。如果我開一輛挖掘機來,用一天時間乾的活就相當於你們這一個工人一個月的工作量,你相信嗎?而更重要的是這個挖掘機是免費開源的,僅僅需要學習一下如何操作。

這幾百號人的工地就是企業應用項目團隊。而我說的挖掘機就是Spring Boot + 前端(Angular/React/Vue)。

正像我上面場景裏描述的那樣,有很多技術負責人和普通Java程序員都知道Spring Boot和前端框架。但是對於他們來說有點遙遠了,可望不可即。有的Java程序員自己在偷偷學,躍躍欲試,但是這種技術氛圍的公司不可能給你機會。有的技術負責人也認識到了新技術能夠爲公司技術帶來的提升,但是自己也不會,更沒有能力對下屬培訓和指導。如果新招聘會的人,自己連面試問什麼問題都不清楚,又怕找來個水貨。總之這些所謂的“新技術”對企業應用市場造成了一定的衝擊,但企業自身卻有各種困難無法把新技術轉換成真正的生產力。

針對上述的這些情況,我特意整理了一下,裏面的技術不是靠幾句話就能講清楚,所以乾脆找朋友錄製了一些視頻,很多問題其實答案很簡單,但是背後的思考和邏輯不簡單,要做到知其然還要知其所以然。如果想學習Java工程化、高性能及分佈式、深入淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java後端技術社區:537775426,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻和文檔資料免費分享給大家。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章