1. 程式人生 > >軟體工程師成長之悟

軟體工程師成長之悟

  最近或許有夥伴發現,寫技術實現及細節的變少了,更多是經歷以及思想、規範。莫非是道則道,非常道,你道我也道?然,並不是:)。

  當入行四五年時,個人經歷中,從14年開始實習工作到15年轉正,各電信專案現場跑,開發、測試、產品部署及支援運維。16年銀行實時系統開發、測試、運維、部署,最後推進了MapReduce與spark引擎的變更。再到17年來阿里至今,從0到1 負責系統及未來發展的設計、開發、測試及運維 以及 開始推廣運營。每一個專案都帶來巨大的成長,有時候感覺這些年對自己的確挺狠的,心疼的保住不胖不瘦的自己,但是帶來的成長也是巨大的,這裡的成長並不只是技術或架構能力的成長。更多的是從一個小白膽怯到一個相信自己,能夠把控專案、團隊合作、把控風險、把控情緒的過程。這個過程很痛苦,很鍛鍊人,但是卻能讓自己更加的無懼未來。 就像我的部落格中的個性簽名,這個世界上,沒有無緣無故的恨,也沒有無緣無故的愛,更沒有無緣無故的橫空出世。這仍然是一個相信汗水和淚水的世界,所有的'被看到',所有的'能發光',都不過是在灰塵撲撲的日子裡,不動聲色,全力以赴的結果。那麼在這裡,分享一些自己的想法給大家:

  1、改變 

            簡短的兩個字,其實並不那麼容易做到。我們都來自不同的家庭環境、不同的教育背景、不同的經歷,會擁有著不同的價值觀、不同的思想、不同的理想,為著馬斯洛需求層次中的某一層而努力。  

         在每個通宵的夜晚,你是否也有過對人生的懷疑?是否有過,對未來的迷茫?又是否有過在種種迷茫、懷疑之下的堅持?又是否在堅持之後,能夠帶著前一次的自信,鼓起勇氣,再次去挑戰新的懷疑、新的迷茫以及困惑。舉一個個人經歷,在第一家公司時,更多的是產品研發部署實施為主。也許是年少輕狂,畢業不久為了女友裸辭,從北京到上海,新公司全部都是大資料技術,與曾經掌握的技能並不match。每天極為痛苦,因為你不再是應屆畢業生,社招上來就要幹活兒,對自己充斥著大量的懷疑,直到能夠與小夥伴們承擔整個數倉引擎改造。然而,到達一定時期後,覺得很舒服,擁有admin許可權的你,擁有設計話語權的你,或許已經成為你的瓶頸。內心告訴我,要迎接挑戰,要跳出舒適區,於是選擇跳槽,簡歷投遞時,點了阿里巴巴。(新人啟示,不要覺得痛苦,覺得委屈,覺得壓抑而放棄,每爬出來一個坑你就會看到更清晰的未來。任何的不舒服,不要直接認為自己不適合。換個態度去想,把它變舒服了,再去考慮你是不是更適合其他的。)

  

    2、先成為專家

  我們縱觀軟體行業,以我的認知來說,web技術,前端與後端開發,如果細分後端開發又分為客戶端開發與服務端開發。 大資料技術,流處理(storm、flink、spark streaming....)、批處理(hadoop、spark batch....)、儲存技術(mysql、oracle、hbase、分散式檔案儲存hdfs....)、訊息中介軟體(floom、kafka....)。網路技術(socket、http、bio、nio、netty...),在各種技術應用開發的同時,也牽扯到各種資料結構、各種設計思想、資料字典設計、資料建模、資料架構等等等等。這裡就牽扯到定位,就是未來你想要成為什麼樣的人。我記得曾經剛入行時,有一位微軟的大牛曾經跟我說,不要什麼都學,先成為專家,再成為百家。因為成為專家的歷程中,必然會接觸各種思想、理念,為觸類旁通打好基礎。那麼無論系統開發也好、大資料開發也好、大資料技術也好、區塊鏈、人工智慧等等,專精於一個領域,必能小有所成。但下來,要說的是,技術也只是知識體系中的某一項。

 

  3、謙虛與合作

        我們搞技術的有一點,會非常崇拜技術牛逼的那個人,臥槽,你這都會,臥槽,這麼牛逼,抱著大腿一起成長。但大家有沒有仔細觀察,大神的做事方法,大神的思維模式,同時會發現,技術大神一般都非常的謙虛,任由我們隨意提出建議。而初出茅廬時,我們總擔心身邊的人覺得自己技術能力不行,擔心人家笑話你。從而越來越不敢正視自己,推卸責任或是不敢承認是自己的問題,久而久之,我們的成長便會受限。 這裡想說明一個觀點便是,任何人說出的任何意見或觀點,都一定有一定的理由在裡面。不要一開始就反駁,或者一開始就否定,先思考是否是自己欠缺的,是的話,納入自己的思路體系,不是的話,我們再就事論事的討論。你的成長,與他人的看法無關。久而久之,你也會擁有謙虛的態度,也會擁有大神的思維模式。承認錯誤,這並不是懦弱,也不在於誰對誰錯,而在於朝著同一目標前進。

 

    4、消除焦慮感

  行業有句話,35歲不轉管理就會被替代。其實我一直有個疑問,35歲時,我相信軟體工程師們都將成為某個領域或是某個業務線的架構師,那麼架構師的定義是什麼?系統架構師是一個既需要掌控整體又需要洞悉區域性瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物。一個架構師得需要足夠的想像力,能把各種目標需求進行不同維度的擴充套件,為目標客戶提供更為全面的需求清單(來自百度百科) 。我相信,一個架構師會具有管理的特質,也會具有很強的合作意識、風險意識、架構思想及處事不驚的態度。前十幾年豐富的開發、設計、架構能力,能夠遊刃有餘的把控任何風險。同時因為看透技術本質,對於新興背景下產出的技術也會觸類旁通。它就是我們眼中的大神。一個優秀的架構師,對於無論需求、設計、開發、測試、運維、專案風險、溝通合作、業務背景的理解絲毫不會亞於某一項專項的業務人員(不然做出來的是客戶不要的?),架構師的價值不亞於任何管理者。

 

    5、體系總結 與 開放思維

      這兩年跟著師傅取經,有一個非常有用的方法,就是將自己學到的,實踐到的,領悟到的畫成知識圖譜,時常溫故。記得早年最笨的方法,就把一整本書先硬啃下來,工作實踐後,再去啃一遍,直到融會貫通。後來當體系建立,在看相關書籍時,基本一遍看下來不再那麼吃力。這時候千萬不要以為自己會了,依舊開始第二遍細讀,第三遍總結與知識圖譜。但是軟體工程的特性,必須實踐後才會真正的領悟,那麼看了後,只是做了簡單的習題方法會不會沒用? 踏實下來,當你要用到的時候,你會發現,原來沒那麼難。

      與此同時,我們容易被技術思維禁錮,大家都覺得做技術是有瓶頸的,那麼有沒有仔細思考過,到底瓶頸是在哪裡?個人感覺,技術角度是創造、想象 與 推動。現在對於工程師的要求越來越高了,已經不像傳統IT,做好一塊兒就夠了,更多時候我們需要和客戶打交道 和 業務打交道 和 需求 產品 ,甚至有時候自己都會上去設計產品。這個思維方式的跳躍是很痛苦的,因為越是某項技術專家,越是無法理解業務是幹嘛的,畢竟人的精力是有限的,註定會是某項技術的光輝支柱。但是如果不是對某項技術痴迷,想要成為統觀全域性的架構師,就需要不斷地擴充套件,對於技術而言,也許技術專家是5分,那麼你能達到3分。對於業務而言,能夠洞察市場的動態。但同時還在於個人的視野、想象、背景、情商、修養、與格局,從而推動事物的發展。