1. 程式人生 > >為什麼做java開發的公司需要那麼多程式設計師?

為什麼做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大型網際網路技術的視訊和文件資料免