歡迎光臨
每天分享高質量文章

大公司為什麼還在採用過時的技術

點選上方“Java技術驛站”,選擇“置頂公眾號”。

有內涵、有價值的文章第一時間送達!

精品專欄

 

背景

本文出自一朋友給我的提問,於是博主嘔心瀝血給他花式洗腦了幾個小時。忽然發現,應該還有許多朋友有同樣的疑問。所以整理成文。

許多剛畢業的程式員朋友,都有一個執念,想要進那種規模大一點的公司、上市的、業內有名的最好。

為什麼大家都想去大公司?

因為很多人覺得,公司大一點,正規一點。開發技術應該不錯,應該與時俱進,流程應該會規範一些。說到這裡,依然有這種想法的朋友,請握個爪。 然而,當他刷完什麼 《劍指OFFER、 《程式設計之美》,廢了好大一番功夫進去以後,卻發現完全和自己想的不一樣。他發現他所在的大公司:

(1)程式碼混亂

I、比如一個傳送 Http請求的 Util類,竟然出現了三四種。開發人員A封裝了一種,開發人員B封裝了一種,公司框架自帶了一種。

II、到處充斥著 Ctrl+C和 Ctrl+V的味道,更有甚者,居然連author都不改,原樣複製過去。

III、日誌風格千奇百怪,缺乏統一規範。每個人都有一套自己的日誌風格。重點是,一些關鍵步驟,居然不寫日誌。

IV、一些幾千行的類、關鍵步驟不加註釋、一個方法幾十個引數都是隨處可見。

(2)開發流程混亂

I、一個專案組 IDE和 JDK都不統一,比如用 Ideaeclipse的都有。然而重點是,把 idea、 eclipse獨有的配置檔案都上傳到了伺服器。

II、完全沒有檔案。比如要改一個需求了,OK,去 Debug程式碼,根據斷點去反推原來的邏輯是怎麼實現的。反正不改出問題就行。

III、程式員白天大部分時間在處理BUG,以一種混日子的態度在工作。反正能搞得定新需求,搞得定功能測試,專案能如期上線就行。至於程式碼有多搓,無所謂!

(3)技術落後

I、還在用四五年前的技術,例如還在 JSP裡頭寫大量的 JAVA程式碼進行開發等。

II、架構上很多方面欠考慮。比如,採用了訊息佇列,卻完全不做持久化處理,完全不擔心資料丟失的問題,也沒做可靠性的保證。服務之間傳送資料,重要資訊完全不加密,明文直接傳。

III、效能調優就是拍腦袋做的

以上種種,大家如果深有感觸,請再次握個爪。那麼,為什麼會這樣呢?

緣由

人員層次

但凡在大廠工作幾年的老員工,有沒有這樣一個體會,身邊的牛逼老員工基本都跑了,剩下來的員工基本都是比較平庸的。

大部分人在工作中,其實都處在一種重覆勞動的狀態,也就是所謂的擰螺絲工作,技術水平得不到提高。那麼在這種工作性質之下,會誕生兩類人:

(1)平庸的人

這類人在工作中滿足於能完成需求即可,對程式碼的美醜並不關心。正所謂

碼不在爛,能跑就行。

當然,這類人並不是缺乏提升自己技術的能力,而是由於惰性,沒有明確的規劃,缺乏提升技能的意識,導致時光匆匆流走,想要跳槽卻沒地方收留,一不小心,這類人就成為了老員工。說到這裡,趕緊回憶一下自己,是不是成天拿什麼沒時間當理由,然後明日復明日,小心成為老員工。

另外,大公司基本不會裁人,而手上的技術水平已經能應付工作。就算努力學了一堆新技術,也沒有用武之地,於是這類人就能安然自得的繼續過下去。

大家可以對比一下你身邊的同事,一個是自畢業的時候就在這家公司熬了十年的,一個是十年間在三四家公司獃過的。請問哪一個水平更高呢?

(2)牛逼的人

這類人在工作中,一般有著較強的責任心,且對程式碼有著很高的追求,對問題有著獨特的見解,回去也會不斷的學習,提升自己。然而這類人的所學,通常沒有發揮的空間。比如,可能出現下麵的對話

程式員A:”老王,你這個地方不能這麼寫,會出現XXX的BUG的。” 老王:”你懂什麼,公司創立的時候,我就在這個專案組了,就該這麼寫。”

於是這類人的所學,並沒有啥發揮空間。就算有發揮的空間,過不了多久,他也會離職。因為在IT圈,只有透過跳槽才能得到高薪。這點,我們必須明白,大廠都有一套嚴格的薪水漲幅制度,並不會因為你做出了特別牛逼的貢獻,給你月薪突然翻了一倍。而且,如果給你漲了薪水,你公司的其他人呢,他們漲還是不漲?所以,很多公司寧願給一個新員工高薪,卻不願意給老員工提工資,就是這個道理。

因此,這類牛逼的人覺得公司現有的薪資匹配不上自己的能力後,就會跑路的。大家在IT圈會聽到一個說法

B級公司就是給A級公司培養人才的,A級公司就是給S級公司培養人才的。

所以,當你發現自己身邊沒有牛逼的大神,不要驚訝,因為大神都跑路了。

重構成本

當一個系統的程式碼,成為祖傳程式碼以後,其業務規模和複雜程度,都遠遠超乎你的想象。我們在開發新需求的時候,都是在原有基礎上小心翼翼的修補。比如,可能出現如下對話

老王:”誰讓你亂改這個模組程式碼的,知不知道,你這麼改導致了XX模組不能用了。” 程式員A:“我。。。。只是想讓程式碼看起來更好看而已。” 老王:”你以為我不知道這麼寫很挫麼,亂改出問題了,你抗麼。趕緊改回去。”

其實你能看到的問題,老員工看的比你更清楚,maybe人家比你還明白應該要如何解決。但是為什麼老員工不去做呢?因為,老員工明白,技術上的事情沒有100%肯定不出事的。出了事了,誰來背?

再打一個比方,

你一個月薪水10K,你花了5個月的時間,提升了一下10%效能。站在你的角度,你高興了。但是站在公司的角度,臥槽,我虧了啊。我還不如花20K再買一臺機器。在你身上投入了50K,還要擔心你會不會跑路。

所以,從重構成本上來看,又提高了。

另外,很多中層的領導,基本都是守著自己的一畝三分地,不求無功,但求無過。所謂祖傳程式碼的出現,其實是整個部門的責任。你一個人重構的開開心心了,後續就可能整個部門一起加班,誰去做這種吃力不討好的事情。而且最重要的是,在技術leader水平和開發流程沒有改變的情況下,你的新程式碼過不了幾個月又會變成所謂的祖傳程式碼。

當然,但是這並不意味著,這些技術專案沒救了。比如,某一天你的對手,出了個弔打你們專案的產品。這種時候,只能大改了。反正搏一搏,沒準還有出路呢。

公司性質

其實,大部分的公司都是重視業務價值,而看不到技術價值。 有些大廠存在一個很有趣的現象,產品經理的薪資比技術人員的薪資還高。因為他們覺得,無外乎是增刪改嘛,找點應屆生就能作了,沒必要花大價錢請牛逼的人來寫。 於是呢,很多中層是所謂的沒寫過程式碼的業務員,又或者是沒擼過一行的程式碼的產品經理,然後就很搞笑了,會出現如下情形

產品經理:”這個功能,你們看一下要多久才能實現。” 研發人員:”大概下個月十五左右吧。” 產品經理:”什麼!要這麼久。就初一,下個月初一,一定要上。” 研發人員:”我!!!!這個功能XX地方比較複雜,需要點時間。” 產品經理:”你當我傻麼,就是if else。。可以實現的,怎麼要這麼久!”    研發人員:”我!!!” 產品經理:”就下個月初一了,做不出來,公司的損失你背還是我背!”

於是呢,在重視業務價值的公司,無論你多牛逼,乃至你是碼神下凡,你寫出的程式碼也是不堪入目。說到這裡,博主的那個朋友不服,他辯解道

“我們可以在前期做好設計和規劃後,再開始開發啊,這樣就能減少出現渣渣程式碼的可能性。”

確實,我承認這麼做可以減少出現爛程式碼的可能性。然而,大家都知道,需求是一個善變的小姑娘,一天一個樣。你再牛逼的設計,也頂不住需求的頻繁變更啊。

其實,在某些時候,沒有必要把程式碼當成一種藝術品,應該要能夠接受適當程度的瑕疵。只要到點可以跑,可以追蹤BUG,基本能交差就成。我相信,給任何一個人足夠的時間,都能把程式碼變成一個藝術品,但是這有什麼用。等你弄好,黃花菜都涼了。迅速上線,能掙到錢才是重點啊,才是你的KPI體現啊。很多優秀的程式碼,是給了重構的時間的,大牛們都是一邊寫一邊重構的。如果不給時間,大牛們也寫不出優秀的程式碼的。換句話說,你完全可以後面掙到錢以後,再把原來的架構推導重來。

我們要明白,寫程式碼是為了掙錢,而不是為了雕琢一個所謂的藝術品。如果將寫優秀程式碼比作一種情懷,請問

情懷重要,還是金錢重要?情懷能讓你買房麼。

OK,弄清楚主次,掙錢才是硬道理。

審視自己

這個地方,我希望大家好好審視一下自己,因為重點不是

大公司為什麼還在採用過時的技術

而是

你為什麼只能進採用過時技術的公司

其實,每一個公司都有一個所謂的標桿部門,這個部門的技術通常是拿的出手的。可是,這樣的部門,通常是最難進的。所以啊,你要去拿的出手的部門,好好努力吧,少年們。 OK,到這裡,大家好好思考一下吧。大家有什麼問題,也可以給我留言。

總結

囉裡囉唆的扯了一堆,希望大家看完以後,能有所收穫。工作中,不斷的提升自己,少一些抱怨吧。

最後,推薦【孤獨煙】的公眾號,關註一波吧!!!

END


我是 Java 技術驛站,感謝有你

>>>歡迎各位留言討論本團隊使用了那些技術棧<<<

贊(0)

分享創造快樂