爲何作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大型互聯網技術的視頻和文檔資料免費分享給你們。

相關文章
相關標籤/搜索