從剛畢業到目前所在公司,差很少6年了,想一想這六年裏面,本身的能力和剛畢業比有了很大的提高,可是如今在什麼能力上,我不知道,畢竟沒有去過別的公司。最近也在思考本身將來,算是比較迷茫階段。趁最近比較閒,順便整理一下本身的職業路程前端
剛畢業進入公司,公司的規模還算比較小的,那個時候以爲很開心,過的也比較充實,本身的任務就是寫代碼,讀代碼。在那個時候,本身的能力提高的很是快,畢竟在學校裏面作的項目徹底沒法和公司的所在的項目類比。公司有一套本身的框架,在那個時候的我看來,寫的很是不錯。有不少比較好的編程規範:約定大於配置,強制樹狀依賴,多工程模型,可是也存在明顯的問題,就是大量使用command 模式以及弱參數類型,致使接口上沒法很直觀定義入參和出參。那個時候第一次接觸到正式項目流程,典型的瀑布式模型。這個階段本身主要的精力就是學習公司的業務,閱讀公司的框架的源代碼,知道了很apache 開源項目,也是這個時候,可以熟練的使用通常的設計模式。那個時候公司的規模也比較小,常常也會寫一下底層的工具類。架構也比較簡單,沒有所謂的分佈式架構,基本上全部的業務邏輯在一個系統裏面所有能夠找到,排查問題也很是簡單。java
我的以爲,在這個階段,是最適合學習的,尤爲是本身的編碼技能,也是在這個時候最容易提高的。剛畢業出來的時候,人還有一種拼搏的精神,這個時候相對來講各方面壓力比較少,心也沉的住。比較適合學習編碼。這個時候公司比較少,你會接觸各個方面的知識,包括項目管理,項目部署,項目構建,數據庫開發,這個階段時間是最有效率的,不會有那麼多郵件,流程,規範。linux
這個階段就是慢慢的開始職業化的過程。從帶項目開始,後來開始帶人,帶團隊。這個時期主要偏重設計,所謂設計,就是根據產品整個業務流程,在目前業務框架和技術框架的限制下,給出具體的實現過程。這個階段公司就開始愈來愈大了,系統愈來愈多,業務愈來愈複雜,慢慢的轉變爲分佈式架構。目前想從一個系統瞭解到整個業務的流程,已經不太可能。隨着拆分的系統愈來愈多,一個簡單的業務流經的系統愈來愈多,團隊配也就愈來愈重要。溝通和配合能力在這個階段顯的尤其重要。程序員
隨着公司的愈來愈大,工做上的郵件愈來愈多,流程愈來愈繁瑣,規範愈來愈完善和變態,溝通和配合愈來愈多,投入在純技術層面時間也就愈來愈少。同時因爲工做的高度細化,有DBA,發佈團隊,開發環境配置團隊,工具開發團隊,前端團隊,測試團隊等等。你會發現你很難掌握全局。一我的愈來愈封閉與本身所負責的圈子裏面。基礎技術團隊已經把全部的組件都封裝好了,你只須要實現產品需求就能夠了。慢慢的,業務開始主導你的職業生涯,你從一個程序員,會變成一個業務分析師,你花在業務分析上的時間慢慢的會超過編碼時間。而公司的組織架構也慢慢的向業務架構看齊,業務架構慢慢不在coder。從這個角度上看,新技術的研究已經毫無心義,你須要的技術都有底層技術團隊來實現,你只須要關於業務。這個時候應該是大多數業務導向型公司發展的必經階段。web
在這個階段,是公司飛速發展的階段。也是我的晉升最快的時期。記得 如今的yahoo總裁-瑪麗薩·邁耶在Google的時候就問過佩奇:如何才能更快的晉升,佩奇回答:加入高速成長的公司。這個說法是至關有道理的,由於公司的業務發展須要更多的更高的職位,這個時候也是人生中最累的時候。可是隻要你肯努力,你的機會會很大。惋惜這個時候本身有點傻。也沒有全力去拼。隨着公司業務的發展,業務已經慢慢的趨於飽和了,已經不是打天下的時代,必然不會有太多的機會。而本身的兩個朋友在公司發展的頂峯期離職,去了其餘的公司,付出超出常人的努力,已是技術二把手和產品總監了。因此晉升有兩個關鍵因素:1 加入成長期的企業 2付出更多的努力。不過這個也是賭博,全靠眼光和運氣。數據庫
若是說第二個階段還會寫代碼,這個階段基本上沒有寫過代碼。這個階段作什麼,管人,管團隊,開會,管本身的業務,規劃業務的發展。當公司愈來愈大的時候,政治,官僚氣息就開始了。在這個階段,本身也是作的最沒有意思的時候,開會討論需求,一個很簡單的需求涉及的利益就很大,開會就在不斷的pk和吵架中進行。畢竟業務架構都是虛的,互相不認同,不像代碼,好與壞通常都可以分的清楚。這個時候,一我的的技術實力已經顯的不過重要了,重要的是溝通,pk,忽悠能力。能把業務方,別的業務團隊,開發忽悠住就能夠了,忽悠這個能力,也許須要更高一個層次。這個階段的開發同窗就很苦逼,被這種流程,協做,規範逼着,有各類各樣的質量、缺陷指標。apache
這個時候抽象思惟能力就比較重要,這也是忽悠的基礎。這個每每在架構pk中起決定性做用。業務的規劃須要更高的領域知識以及抽象思惟能力,而去實現它,相對來講比較簡單。所謂抽象,就是從衆多的事物中抽取出共同的、本質性的特徵,表如今編碼方面,就是設計模式,表如今業務上,就是業務架構。因爲業務架構和組織架構吻合,每每業務架構能力強一個組織所在話語權就會比另一個組織強。編程
從設計模式
體現一我的技能主要經過三個維度:架構
高度:這個層面每每體如今規劃能力,可以看到將來業務的發展,設計出相對合理的架構知足將來業務的快速擴展。這個階段應該是少參與到具體的編碼中去,應該是一個公司的CTO或者首席架構師角色。這個方面的能力比較虛,相對來講也是最難煉成的。
廣度:就是知識領域的廣度。反映在IT技能上,就是所掌握的領域,好比.net,java,數據庫,web,前端等等。不必定每一個領域都可以精通,可是至少都能瞭解,可以在面對問題的時候可以拿出一個切實可行的解決方案。對於跨領域方面,多是你的溝通能力,管理能力等。
深度:在某一領域有很深刻的瞭解,旺旺是一門具體的技術。好比js代碼寫的很精通,數據庫知識很是豐富,精通linux操做系統底層。
深度->廣度->高度,越往上,要求的抽象能力越高,越往下,要求細節知識越具體。一我的每每具有了以上三樣,就是一個成功的大牛。
體現一我的價值的也能夠主要經過如下五方面:
1 IT技能:這個就是具體的技能,這裏就不列舉了
2 領域知識:就是你所在行業領域的業務知識,包括證券,基金,電力等等。這個每每在行業領域是最有價值的,也是決定你主要身價的方面,固然前提是你不是作純技術方面的工做。好比底層框架的開發,數據庫管理員。
3 學習能力:這個也比較重要,畢竟IT這一行拼的是腦力而不是體力
4 人脈資源:這個專門指IT行業領域(咱們通常找關係),遇到問題,你能夠請教他們,至關於多個大腦
5 軟技能:也就是溝通,協調,管理能力
你會發現,大多數狀況下,你想職位愈來愈高,後面的比重會愈來愈大。
在學習方面,你要從學習具體知識到學習抽象知識,再把抽象知識應用到具體事物上。這就是術和道。反映在IT技能方面,就是原理和實現。學習一門技能,通常都從具體的用法開始,在開始學習其原理,而後知其原理,在反過來應用實踐。除非是工做必須用到,咱們應把更多的時間學習道,只有道,纔是最保值的,也是最長久的,比如代碼設計思想比代碼實現過程更重要。
扯了這麼多,回家去。推薦一本書《暗時間》,裏面道比較多。呵呵