多年經驗的大廠程式設計師,如何突破技術瓶頸?
瞭解。
他們處在自信與焦慮的掙扎點,一方面對現有工作得心應手,另一方面又找不到技術和職場的突破口。當程式設計師們技術處在瓶頸期時,自然會恐慌:無論資本處在狂熱還是寒冬,無法成長的人,註定是競爭中的犧牲品。
我認為,他們患上了「大廠通病」。
大廠通病:3年時遇見技術瓶頸
技術瓶頸的外在表現,往往源於內因。根據候選人們的表述,無法提升的內因如下:
1)成為熟練工種後,不再嘗試挑戰
2)大廠加班過多導致缺乏個人思考時間
3)精力過於分散,無法集中精力做程式設計
然而,細究所謂「大廠通病」,我們難以認同這些「內因」,它們更像是藉口,也形成悖論:熟練工種會認為工作無壓力,真正覺得工作輕鬆的人,會常無效加班、精力易分散嗎?
讓我們分別分析「內因」背後的「藉口」是什麼。
藉口一 :成為熟練工種後,不再嘗試挑戰
很多出現技術瓶頸的大廠程式設計師表示:他們技術提升最快速都在工作第一年,會花費大量時間鑽研與學習。理由無非有二:1.剛畢業具有衝勁和好奇心 2.工作對於新人難度大,會在磨練中成長。
當技能逐漸熟練,解決工作內容顯得得心應手時,他們會失去好奇心,失去壓迫感,從而滿足現狀:放低自身要求,認為程式設計技術在滿足開發軟體需求情況下,編出來就行,如果要達到更苛刻標準,純看上司要求,或自身興趣,無奈他們已然沒了興趣。
拆穿藉口:熟練是偽裝外皮,無危機感、無上升意識是本質。他們最大問題在於:技術仍停留在一兩年前,沒有所謂 3年工作經驗,錯將重複性操作當作技能經驗。
藉口二 :大廠加班過多導致缺乏個人思考時間
一名 4年工作經驗的 Java候選人,正在 100offer看機會,如今有份 A廠的 offer擺在他面前,leader雖認可他的技術基礎能力和業務理解能力,但仍在觀望中,offer還未給到我們的候選人,深究原因,令人深思——
A廠目前在佈局大資料,需要大量人才,在缺少 Scala工程師的前提下,A廠會需要 Java工程師來做大資料工作。該候選人表示:首先,這與他現在做的 SDN開發有太大出入,其次,他雖然有 4年 Java經驗,但大廠通常愛加班,導致他幾乎沒有個人時間,從而漸漸失去了解新領域、新技術的精力和興趣,對於大資料崛起也只是略有耳聞。
認為加班使得個人成長停滯不前的人不止他一個人,駭人聽聞的 996、週末輪班工作等制度,會讓他們精力過多被消耗,對待工作稍顯應付,回到家中也無暇思考。
拆穿藉口:不關注外界資訊和加班多無必然聯絡,並且,問題在於,他們自身成長速度完全取決於其工作內容的強度和難度,當工齡久了,工作只有加班強度,沒有技術難度,成長便會停滯。
藉口三 :精力過於分散,無法集中精力做程式設計
某 F輪後 O2O大廠的 Java候選人,正在準備尋求新機會,問他為何選擇離開前景大好的公司時,他和我們描述了兩個原因。
第一,該公司盈利重點處在轉型期,餐飲、金融、物流都打算髮力,戰略轉型使得各部門資源都不足,打法顯得混亂,甚至有爭奪資源產生內耗的現象。身為基層技術 leader的他,漸漸感覺精力過於消耗。
第二,新任領導的管理風格更讓他不滿,作為中間層的技術管理,大部分時間和精力都浪費在了上下級的溝通中,至於技術,很早以前就處於停滯不前的狀態了。
不止他一人有以上煩惱,3年工作經驗的程式設計師,不會再只做程式設計,還會參與到軟體設計、專案管理、與使用者或領導溝通中,精力難以集中。如果遇上公司轉型期或動盪期,更會分身乏力,導致無論是主動學習還是鑽研技術上,都失去熱情。
拆穿藉口:不需要溝通的技術人員根本不存在,合理利用精力用於溝通,是用技術解決問題的快捷方式之一。
我並不是否認以上三點「大廠通病」不存在,的確是多數3年工作經驗大廠程式設計師的共有困惑,但是,撕下藉口的偽裝,從逼迫自己改變開始,才是正解。
如何解決「大廠通病」所帶來的技術瓶頸?
扔掉藉口從改變環境做起,跳槽 or轉崗?無論怎麼選,都是逼迫自己改變的開始,陷在悖論中倒不如去打破僵局,打破的方法,我從以下兩點來深究。
1.熟練工?加班多?是你太舒適了
我近期重點跟進了一名架構師候選人,他 6年工作經驗、跳槽前年薪 64萬、持 15萬股票,縱觀他職業發展路徑,除去第一家公司,後三家公司皆為大廠,他在 3年工作經驗時,未遇見所謂的「大廠通病」,更沒有技術瓶頸。
首先,來看該候選人在 3年經驗的工作內容:
1)承擔工作為資料團隊前端開發(各種 js編寫,熟悉 jquery,extjs等常用框架及原生 js)
2)報表工具製作(主要適用技術是 extjs / finereport / jfreechart)
3)日常分析任務(mapreduce / hive)
4)排程系統的維護和某專案開發(前端+後端 jsp+struts2+hbase+redis+mysql+hadoop)
5)分析團隊的定時任務的管理
對 3年工作經驗的程式設計師來說,以上工作並不輕鬆。他在接受 100offer採訪時表明,他會先注重個人的輸入,每日閱讀兩小時技術書籍,每週都研究原始碼,之後,他更看重他的有效工作,即具有創造性的輸出,重複性程式碼是不會帶來實際性成長。
在他發現開始做大量重複性程式碼、無法通過工作內容上升技術時,他選擇了跳槽。
跳槽後,他在中介軟體團隊工作,中介軟體是獨立系統軟體,分散式應用軟體能借助該軟體在不同技術間共享資源,他認為那是他「創造性輸出」的最好時機,他負責了基礎元件開發,主要是可靠訊息系統 qmq和非同步 redis客戶端,參與研發任務排程系統,做了類鷹眼的 trace系統、dubbo服務化工程、監控系統等。
通過他的案例,能夠察覺:實踐始終是源於理論又高於理論的,不難發現,所謂「熟練工」、「加班多」僅是個人藉口,要做的,是遠離舒適區,逼迫自己成長。
首先,請發揮主觀能動性,做出改變。我給出以下兩點建議——
1)多次檢閱基礎知識,將有效技能掌握牢固,把各類基礎知識串聯成完整體系。技術不可滿足現狀,懂得把程式設計技術從功能實現轉向軟體構架、引數化設計等高階方面,在共享、通用、標準化方面有所建樹。
2)當你覺得自己了不起時,多看原始碼,多研究原始碼,不少所謂 3年經驗的程式設計師,根本沒達到熟練程度,研究原始碼,會發現太多不足。Java學得精深的人,可以橫向去了解 Scala,看看Java有哪些侷限;或者縱向的去深入鑽研底層的 JVM,如果在學習新技能時感到吃力,你便知:你並未瞭解自己,你實力仍處於普通階段。
如果你缺乏自制力,再考慮換離環境。回想你為何初入職場時能快速提升?是因為新手期的你確實在技術上缺乏太多,所以願意在工作中快速學習。同理,當你轉崗或跳槽後,會面臨新的挑戰,從而逼迫自身成長。
2.精力被分散?你得先弄清楚技術究竟是幹嘛的
技術是用來解決問題的。很多大廠程式設計師都認為唯有技術才是實力的體現,這是很大的誤區。當你不懂與同事溝通、不懂如何推進工作,你磨練的技術也解決不了問題。
程式設計技術只佔到工作能力的 40%,客觀分析自己劣勢所在,有時並不是外界分散了你的精力,導致無法專心技術,而是自身根本沒有理解技術和工作的關係。
首先,從主觀上解決溝通所帶來的精力分散問題。
1)時間管理。溝通是有技巧的,學會分配溝通時間,無論是與上司、同事、下級還是使用者,都在溝通前預約好溝通時間,在不是真正緊急的情況下,他人打斷你的工作思路,你可以合理表示拒絕,選擇預約其它時間交流。
2)表達清楚更重要。《計算機程式的結構與解釋》一書說:程式寫出來是給人看的,附帶能在機器上執行。寫程式碼其實是書面溝通的另一種表現方式。技術成長到一定程度,多數人都會到達無法增長的天花板區域,決定初級程式設計師和優秀程式設計師的關鍵點,不是他們會多少類程式語言,也不是他們 C++、Go、PHP用得更厲害,而是表達清楚想法,讓他人協助他高質量完成工作內容,通過思路完整的技術文件,讓其他程式設計師能讀懂,通過邏輯清晰的溝通,讓產品、設計也能夠接受,不必讓程式碼重新再寫一遍。
附贈一句卡耐基的名言:一個人的成功,約有 15%取決於知識和技能,85%取決於溝通——發表自己意見的能力和激發他人熱忱的能力。
其次,如果完全是外界的原因,你的選擇依舊是:換環境。
當公司不能讓你的能力提升時,離開是好的選擇,優秀的公司自然會讓員工也隨之提升,實現個人價值,才會進一步實現共同價值。
換環境無非是轉崗或者跳槽。如果你在公司內部轉崗,會給你帶來技術廣度,在工作中主動吸收新技能的知識。選擇跳槽則有兩個可能性:1.換領域,依舊是增加廣度。2.同一領域,增強工作壓力,這是深度的體現。
我給出一點建議:同一領域下的深耕經營,會有更遠發展,即便是細分領域,也不會影響你在技術上的知識廣度。
「大廠通病」給程式設計師所帶來的技術瓶頸必然存在,但面對問題時,更多人是拿所謂「通病」當擋箭牌,缺乏主觀能動性。
如果做不到主動改變,那麼,患了「大廠通病」的程式設計師們,你該考慮考慮轉崗或跳槽,逼迫自己成長,也是一劑良藥。
如果你想突破那麼請注意! ! !
1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。
2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。
3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。
4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。
5. 群號:Java大神交流二群 561614305 備註好資訊!
6.阿里Java高階大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!