程式設計師如何靠技術度過中年危機?java高階面試2018-09-13 16:47:18

這個世界本來就不是純技術的,人到中年就應該學會承擔責任和接受這個世界你改變不了的事情。

這個世界不會總存在一個父母老師一樣的角色,佈置作業給你做然後你做好了給你糖吃。不要指望這個世界會給你糖吃,不要指望這個世界會很公平地回報你的付出。你想對什麼事情負責任你自己做決定,同時你要知道哪些事情是你改變不了的所以不要去承擔責任。

這不是一個技術和管理之間做選擇的問題。這是一個心智成熟度的問題。

絕大部分人不能。悲觀點講,大部分8090後網際網路人(不僅僅是程式設計師)的職業生涯,可能比70後那幫老兵更短。

很長一段時間裡,我都在想,我們寫程式碼的這幾年拿得多,是因為我們比那幫學生物學航天的聰明或者付出更多嗎?顯然不是,我們只是趕上歷史行程了而已,最近的一波歷史行程,說直白點,就是由智慧手機和移動網際網路帶來的行業爆發式增長。

但 IT行業和其他行業一樣,也要受行業週期的影響,不幸,或者說對後來者不幸的是,這個行業從完全競爭階段發展到寡頭壟斷階段的速度比能源,機械等傳統行業快得多(一方面,這是技術進步帶來了市場效率的增加,另一方面,商學院的那幫人比過去更熟練了),阿里騰訊從差點要死的初創公司演化成全球市值前十的中國寡頭,花了不過十幾年時間。換句話說,十幾年裡就走完了傳統行業需要花幾十上百年才能完成的路。行業的細分領域,比如外賣,出行,只需幾年就能發展到寡頭壟斷乃至完全壟斷的地步。

過快的行業演化速度,首先帶來的就是行業更快進入壟斷成熟期和相關領域就業的過山車行情。比如前幾年安卓和IOS程式設計師就業十分容易,培訓班培訓半年出來就敢要一萬多的月薪,但隨著行業的集中度提高,大量初創公司死掉(比如O2O領域),招聘門檻明顯變高,職位也變少了。其次,網際網路行業推崇的破壞式創新,對從業人員,尤其是後來者來說是把雙刃劍。在一個領域裡辛苦耕耘多年,結果其他領域或者方向的破壞式創新就把你的多年的工作廢了甚至徹底爆掉(比如微信架空QQ,智慧機顛覆功能機)。

能不能純靠技術渡過中年危機?那就要看你對歷史行程的把握了。如果你的技術方向不幸地被時代拋棄了,那不管個人怎麼努力都是沒有什麼大用的。想明白這點後我今年再次放棄鵝廠跑券商做我押寶的領域了,建議平時多花點時間去琢磨業務,琢磨行業和產業,不要只會低頭拉車,也要抬頭看路,畢竟資本可以相對容易地在一個行業進退,而人到中年是很難轉行的。

作為曾經的半個程式設計師,分享一下個人經歷。程式設計師會有中年危機,一個很大的因素來自:我們曾經引以為傲、賴以生存的開發技術會被淘汰。而學習新開發技術成本太高。看著快速崛起的年輕人,不免使人心生:廉頗老矣的感慨。但是如果眼光不僅僅侷限在開發技術上,可以做的空間就大了很多。

我一直在做資料分析相關的工作。作為一個83年的老男人,最慘的就是:當我進入職場的時候,資料分析遠遠沒有現在火熱,網際網路行業也遠沒有現在強大。我在職場起步階段學的還是SAS。大多數分析主題以商業分析為主,很少用演算法。做過資料探勘專案,也侷限在銀行的外呼,運營商的流失使用者挽留等特定領域。不但做的模型單一(其實就是邏輯迴歸),而且跟網際網路行業沒一毛錢關係。和現在全民all in機器學習的在校生比起來,簡直弱爆了。畢竟人家人手一本西瓜書,天天上kaggle撈程式碼,張口隨機森林閉口SVM,scikit-learn各種起飛。兩下一對比,就顯得我各種土鱉。

學習新開發技術對在校生容易,可對中年職場人士真是太難了。業餘時間,回家帶寶寶、打掃衛生、陪孩子出去玩,已經把人累的筋疲力盡。在企業也很少實戰新資料的機會,畢竟大多數我們帶出來的系統已經穩定,除非投身新公司新部門,否則很少有新技術使用機會。問題是,有幾個中年人敢輕易換坑的。

程式設計師如何靠技術度過中年危機?

感覺就像自己好不容易弓馬嫻熟,結果人家換了機關槍……

幸運的是,30歲那年,一個前輩指點我,逐步走出了這種困局。他當時對我說的話,至今猶在耳邊:

“你思路要開闊點,一個專案成功可不僅僅是寫程式碼這麼簡單。你也做過很多專案效益分析,你自己想想,有幾個專案是真的死於技術不行的。如果老闆期望過高呢?如果給的資源不夠呢?如果其他部門不配合你呢?你做精準營銷,人家一線銷售根本不鳥你,你怎麼精準?如果你能從結果出發,倒推做成專案需要什麼。用這些分析去影響業務部門,豈不是比別人挖好了坑,自己邊罵邊填更好?”

這段經歷直接影響了我後來的職業發展。確實,為什麼要一輩子做爬坑的那個,而不試著拿過挖坑的鍬呢?這就開啟了我轉變的第一步:擺脫接需求→做開發→交結果的被動思維,站在如何做成一個對企業有用的專案的角度思考問題。

上一個臺階看問題,就發現影響專案成功的因素有很多,技術只佔其中一部分。特別是銷售、市場、運營類專案。這些專案本質上還是要和人打交道。無論是做經營分析、做精準營銷、做個性化推送、最後還是要靠各部門通力合作。從做好專案的角度來看,還是有很多發揮餘空間的。

程式設計師如何靠技術度過中年危機?

專案成功八要素

這個時候,開啟第二步思考:如果讓我自己來挖這個坑,我會怎麼挖?順著這個思路,我開始反覆覆盤自己經過的大大小小的專案。站在專案全域性而非僅僅是分析建模的角度去覆盤問題。覆盤的時候經常會遇到資訊不全的問題。很多資訊被業務部門掌握。這時候就充分發揮自己愛好喝酒擼串的優勢,廣結善緣。有不懂的直接拉夥伴出來吃個飯討教,進步的速度還是很快的。

這樣我便慢慢走上管理道路。之後5年,我做的技術方面的東西越來越少,最後徹底轉向業務方向。等到我有了自己的團隊,就幾乎不怎麼碰程式碼了。然而,我在專案裡承擔的責任一點都沒有減輕,因為除了技術以外,真的還有很多工作需要做的。

程式設計師如何靠技術度過中年危機?

這裡大部分是軟實力,可這些軟實力能結結實實的為專案保駕護航

有些同學可能會說:這已經是管理工作了呀。確實如此。不過做技術出身的人做管理,會比業務線出身的人有一定優勢。我們瞭解技術實現的具體方式,純業務出身則把它看成一個黑箱。這樣我們能更準確的評估問題,找到靠譜的解決方案。而純業務出身的經理人,經常把專案拖到坑裡去。

比如這5年來,我服務的很多客戶是傳統行業,他們想搭上O2O、網際網路+、消費升級、新零售等新東西的順風車。然而,相當多傳統行業經理人缺少對技術的基本瞭解。就拿精準營銷類專案舉例。他們只能從結果,看到別人發了一個簡訊,做了一個推送,但完全不知道在這背後隱藏著多少東西。這就導致,他們會低估投入成本,高估了效果。最後做起專案來各種東施效顰。

而我參與專案時就發現:相當多的傳統企業,資料建設都很滯後;不同系統資料間缺乏關聯,基礎資料欄位缺失嚴重;一線業務部門和總部脫節;尾大不掉、驕兵難馭的情況也很常見。我從不會急匆匆向客戶說:“使用者畫像系統一般有三層結構”“關聯分析常用Apriori演算法”這些話。而是從最基礎的資料欄位、採集流程入手,先摸清水到底有多深。在設計方案的時候,先考慮合作部門的利益,儘可能把其他部門拖下水。這樣專案的資料基礎很紮實,推進阻力相對小,分階段輸出成果。幾年下來,累積的口碑和經驗還是不少的。

在這種工作中,我也慢慢清晰了自己在團隊中定位。我主要負責和客戶站在一條戰壕,面對各方挑戰,諸如:“憑什麼這個專案值得投入300萬?這個專案能為公司創造多少業績?到底這樣驗證推薦系統效果?這次營銷新增業績多少?憑什麼說新增業績是系統的功勞不是銷售部的功勞?”掃清了這些障礙,客戶在公司裡有個更大的功績。專案的費用、時間、成果認證也就有了保障。剩下的交給更年輕,更有活力的小夥子們。現在我的團隊裡也有很年輕的做演算法的小夥。他們比我懂得多,比我搞演算法有熱情。幹活的時候他們打主力,我就打個輔助。然而我卻並不擔心被他們取代,大家合作的很愉快。

之後就發現,當找好自己的定位以後,就不會害怕新人的崛起。因為大家各有各的長處。總的來看,新人重技術,老人重結果。新人喜歡高精尖,老人喜歡穩重實。

新人看PPT,都喜歡說:哇塞,這一頁好漂亮,用什麼排版工具畫的?老人看ppt,都先問這個是做給誰看的,想表達什麼。

新人做分析,都喜歡先想:這個問題可以用個什麼模型。而老兵去做分析,都喜歡先看:你們的資料是從哪些系統產生的,產生資料需要什麼流程,有哪些欄位,這些欄位在業務上有什麼含義,基礎質量如何。

這是中年人的優勢。經歷多了以後,我們就不會急於炫耀技巧,而是認真的圍繞結果想過程。過程越細越好,每一個忽略的細節,都可能是日後爬不出的大坑。

然而,技術出身的往業務或者管理上走,也有特殊的缺點。性格可能是一個方面,好在我個性比較活潑,在這方面沒有很大阻礙。業務經驗是另一方面,做業務的人筆桿子很硬,嘴巴很鋒利,很多時候討論起來,你明明知道他在瞎扯,就是扯不過他。為此我也在不斷努力,比如上知乎寫文章也是練習筆桿子的方式之一。

可能有些同學會覺得這個過程太辛苦。然而,想要不被淘汰就是要辛苦啊。或者很辛苦的擠出時間學習新的技術,保持不被時代淘汰。或者很辛苦的克服能力短板,向綜合方向發展,往業務和管理上走。其實,大家細想一下,那些被中年危機淘汰的程式設計師,不正是趁著年輕進了大公司,做個螺絲釘,之後生活安逸,技術沒進步,業務沒長進的人嗎?

當然,還有其他很多方式可以走出程式設計師中年困局。就我身邊的朋友:

有些和別人合夥創業做CTO去了

有些在大企業混個技術管理崗安穩度日

有些轉身做新入行的培訓(學會Java,走遍天下!)

有些把BI分析部改成AI分析部,繼續在技術領域奮戰

總之保持努力,保持進步,總有好前途,與大家共勉。

關注我:私信回覆“架構資料”獲取往期Java高階架構資料、原始碼、筆記、影片

Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術

帶你度過中年危機!!

程式設計師如何靠技術度過中年危機?自由踐行2018-10-07 07:20:53

今年剛好40,一直在軟體行業有18年了,正在進入中年危機。

作為程式設計師,除了做演算法的,很難有純核心技術。個人認為程式設計師的技術:一是技術的積累,瞭解更多的作業系統,程式語言,技術架構,平臺介面,設計思想等;二是程式碼庫的積累,高度的複用性可以使軟體開發得更快;三是對業務的理解,專案做多了行業接觸多了大部分都是相通的。總結下來,所謂的技術還是靠經驗,但在國內IT公司節奏太快,大齡程式設計師(這裡指的是一執行緒序員,不是各種管理層)因各方面因素很難配合的加班導致很多公司並不願意要,一般超過35的就業就開始困難,超過40的就幾乎無人問津了。

最後說下我的情況,35歲的時候自己下來創業,到現在寫了4個軟體,成為了一名職業的共享軟體作者,有自己的工作室,收入跟上班差不多,好處是可以自己安排時間做自己喜歡的事情,不用朝九晚五,可以有更多的時間照顧家庭。

程式設計師如何靠技術度過中年危機?蘿蔔2572018-10-24 14:49:51

抽菸喝酒喝啤酒,堅持熬夜,記得不要經常吃飯

程式設計師如何靠技術度過中年危機?avatasia2018-11-17 22:28:00

能問出這問題 說明技術不咋地

所以還是趕緊另謀出路吧

程式設計師如何靠技術度過中年危機?鎰鑌2019-01-10 09:47:06

程式設計師不創業,不走管理崗,是不會有出路的。

程式設計師如何靠技術度過中年危機?fist32018-11-01 20:36:26

文章我沒看完,光是標題這樣回覆您。首先我已經43了,還在寫程式,但有可能我理解的程式與你不一樣。我理解的程式只是能更好的實現我想實現的業務,我更多的是側重業務。如果一個程式設計師一味的只談技術我覺得就如你所說得考慮40歲後的問題了。順便說下在國外好的程式設計師都是中年人。現在我寫程式就是一種享受……