寫在前面html
前幾天和 PPMoney 萬惠集團董事長寶叔以及幾個合做夥伴一塊兒吃飯,席間寶叔戲言引用一個段子來描述我的成長:讀萬卷書不如行萬里路,行萬里路不如閱人無數,閱人無數不如名師指路,名師指路不如本身去悟。靜下心來想一想,這總結還真挺有道理,回頭看看本身走過的路,從懵懂少年第一次厚着臉皮向數學老師討借 Basic 語言編程指南開啓 programming 生涯到如今混跡於金融和技術跨界領域,歷經了那麼多時光歲月艱難坎坷喜悅快樂,讀書也好,行路也好,名師也好,領悟也好,都是本身成長道路上不可或缺的重要元素。程序員
若是我有機會把這條路從新再走一遍,有沒有一些靈丹祕方能夠借鑑讓本身發展速度更快些呢?之前有一本叫「杜拉拉昇職記」的小說指引了不少初出茅廬的小白領一步步走向職業的高峯,對於技術屌絲兒們,我們是否是也有個快速成長的葵花寶典能夠借鑑呢?今天讓咱們來聊聊這樣的一個祕笈,它來自於我本身多年以來的感悟以及對身邊成功技術大牛們的觀察,但願可以給年輕程序員們帶來一些幫助。編程
程序員成長框架設計模式
這個祕笈最核心的精髓在這個成長框架裏:養成良好的職業習慣不斷提高本身的基本能力。網絡
首先是養成好的職業習慣。你們也許看過那本《成功人士的 7 個習慣》,對於程序員來說,下面這幾種習慣可能更加有針對性:架構
第一是對新鮮事物和技術的好奇心。技術世界的最大特色就是變化,強烈的好奇心會驅動一個程序員不斷學習研究最新最早進的技術和架構從而讓本身處於領先地位,這種好奇心也能夠幫助咱們成爲一個優雅的懶人,經過探尋最有效的解決方案來減小無聊的重複;框架
第二是要有一個積極勇敢的心勇於接受挑戰。別人不敢作的事兒你敢去作並把它作成了,一方面你得到了很是寶貴的第一手經驗另外一方面只有你才能完成挑戰必將給他人帶來極爲深入的好印象;dom
第三是要可以持久堅持不輕易放棄。不少事情看上去不容易,可是若是你咬牙堅持不懈把問題最終給解決了,你的功力會上升到一個嶄新的層次;編程語言
最後一個習慣我以爲最重要,那就是把工做變成一種快樂。若是你以爲作技術很痛苦,最好仍是儘早離開這個領域,只有你工做和玩兒同樣的,你不只僅是獲取了快樂,你的技術能力也會永不疲倦地提高再提高,我總以爲搞技術和玩電腦遊戲同樣,都是不斷地練功找寶貝(寫代碼)和打怪獸(找 bug)嘛。工具
有了良好的職業習慣,你還須要不斷提高本身的基本能力,對程序員(技術崗)來講:
第一種能力是 技術能力,這個是和職業最直接相關的能力,是咱們作設計、寫代碼、解決技術問題的能力,是咱們之因此被稱爲工程師而不是銷售或者客服的硬能力(hard skills);
第二種能力是 和人相處的能力,也叫作軟能力(soft skills),是讓咱們如何更好地和他人協同工做;
第三種能力是 業務領域(business domain)能力,計算機程序是用來解決問題的,若是你瞭解並可以提出業務需求,你的綜合實力會更強大;
第四種能力是 管理能力,能讓更多的人有條不紊地齊心合力作好一件大事兒,能把一我的的能力放大無數倍;
最後一種是 學習能力,是前面四種能力的爺爺,這個強了其餘能力的提高會更容易。篇幅有限,這裏沒辦法把每種能力描述得很透徹,但你必須充分理解這些能力的含義,由於一個程序員不一樣職業生涯階段都是這些基本能力不一樣程度和級別的組合結果。
因此,咱們說一個程序員的職業生涯,其核心就是把上面這些習慣越練越熟最後成爲本能反應,同時把上面的各類能力不斷從菜鳥升級到大師的過程。
瞭解了基本的成長框架,咱們看看程序員在不一樣的成長階段該如何利用這個工具自我發展。
程序員初長成
大部分的程序員是在讀大學或者第一份工做開始技術生涯的,咱們能夠從技術初長成、從業行業與領域的選擇、選擇什麼類型的公司來展開討論。
技術初長成
這個階段的核心是如何能儘早地開始職業化(professional)編程。所謂的職業化,也就是按照一個合格的職業程序員的標準來寫代碼,這包括良好的編程風格、採用流行的編程框架、專業的調試方法、規範的文檔撰寫以及堅持不懈不解決問題毫不休息的習慣等等。你不能僅僅是把老師安排的做業完成了,把領導安排的業務邏輯給實現了,你要可以作到寫出的代碼和你們公認的好的程序員基本接近。
選擇一門編程語言是第一步。別老跟我說 PHP 是世界上最好的語言(哈哈哈),至少我能夠告訴你,PHP 多是當前職場裏不很值錢的語言。。。若是你想把技術作得更深點,我建議你把一門面向對象的語言(如 Java)學透徹,由於你不光是要用這個語言來解決實際問題,你還要經過不斷研習大師們的開源代碼來提升本身的編程能力,資源越多的語言你能夠參考的東西越多,同時,若是你能把這樣的語言理解透了,那麼其餘任何一門語言你均可以很快掌握。好比說我本身吧,從 C++++ 學起,弄明白了後學什麼(包括 Java)都比較容易,先後在實際工做中起碼用過 8-10 種以上的編程語言。
學會了基本的編程,接下來要學會如何儘早地往職業化發展。若是你還在學校裏,碰巧不幸你的計算機老師或者是沒作過職業程序員或者是心不在焉精力沒放在教學上,你應該儘早經過去校外公司兼職提前作職業程序員作的事情,只要你作的東西不是兒戲,你就會感受到職業壓力,你就會更早地走上職業的道路。好多科班出身的人看不起編程培訓學校(哈哈哈),其實這些學校也是蠻有價值的。我一個學計算機的親戚大學三年都在玩遊戲,大四的時候有點慌了,趕忙去學了四個月的培訓學校,提前感覺「職業化」薰陶,最後輕鬆找到滿意的工做。
我對我們大學教育一直是小失望的,大學生們不少寶貴的時間都浪費了,若是可以更早地教授他們職業化編程能力,他們畢業的時候會具備更高的價值。若是你是在第一份工做裏開始接觸編程,那麼你能夠多和公司裏的編程高手學習,看看人家在解決一樣問題的時候是怎麼寫程序的,仔細想一想爲何人家的思路比你本身的更優秀,不斷模仿不斷思考不斷提升。
在這個入門階段,若是你能有一個嚴師或者對你要求苛刻本身又特別想作出成績的上司,那是你的大幸,他對你要求越高越挑剔你的成長速度越快。有這樣的人天天在後面鞭策,你敢於接受挑戰毫不輕言放棄的好習慣會快速創建,你的技術能力也會迅速獲得提高。我當年很幸運地碰到了至少兩位這樣的老闆,他們給個人信任和壓力爲我早期的成長帶來巨大動力。後來我作管理的時候,我把這套激勵體系充分施展開來,個人團隊成長很是快。你要相信本身無窮的潛力,儘量去找一個嚴格苛刻給你充分壓力和信任的老闆開始本身的職業生涯,這個算是名師指路那個我的發展武器吧。
入門階段絕對離不開編程以及設計方面的書籍,去找幾本經典書仔仔細細完整地讀下來,啃一本是一本,怎麼都比不看要好太多,剛開始可能會很辛苦,可是你一旦完成一本,未來看書的速度會愈來愈快,這也能夠提高本身不輕易放棄的良好職業習慣。咱們 PPMoney 研發團隊就要求每一個技術人員每一年必須看完一本書讀完一個開源代碼,習慣了之後,其實蠻簡單的。
行業與領域
若是你關心投入產出比,你應該選擇一個將來有前途的行業或領域,好比互聯網和人工智能。對於在傳統金融領域作了 10 幾年最近才加入互聯網行業的我來講,互聯網 +(我這裏是互聯網 + 金融)以及人工智能 + 有無限的發展空間以及太多的機會,選對了行業可讓本身得到更好的職業回報。
選擇什麼樣的公司
大公司仍是小公司,民企、國企仍是外企,這些我有幸都經歷過,應該說各有各的特色選擇哪一類都 ok 的。選公司除了公司實力之外最關鍵的仍是這家公司適不適合你早期的成長。一個充滿激情的、忙碌的、有夢想的、每一個人敢於承擔責任的公司能夠培養出優秀的技術人才。不少年前我在杭州待過的一家叫超軟的小公司,經營的並非很好以致於老早就不存在了,遠遠比不上那些國際化的大公司,可是她具有上面描述的那些好公司的特質,培養了好多如今國內頂尖公司的 C++XO 級別的大牛(不是我哎。。。)。
進階階段
這個階段通常是在你職業生涯開始 3-5 年之後,具有了基本的職業素質,你在不斷鞏固本身良好職業習慣的同時要進一步提高各類基本能力而且要時刻準備抓住各類職業晉升的機會。
技術能力方面,你要開始提高技術的深度和廣度。你要積極主動接受挑戰啃最硬的技術難題,在工做中積累對技術本質的理解;你要習慣性看各種大牛的代碼,學會判斷什麼是好的什麼是差的;你要學會用更少更精緻的代碼完成任務;你要學習不少設計模式,掌握解決各種問題的套路;你要開始深刻各種架構,不斷提高本身的設計能力;你要學習多種語言,選擇最適合解決問題的工具;這是一個逐步梳理本身對技術的理解,從無序到有序到套路滿滿的過程。
這個階段,你要學會「懶惰」,不要重複作簡單無趣的工做,哪怕有也要想着法子寫出一個工具去簡化去偷懶。我之前一個團隊繼承了不少 ETL 的代碼,咱們有幾十個程序員在作着枯燥無聊翻譯業務邏輯成 ETL 代碼的工做,「懶惰」驅動我寫了一個給需求分析師制定業務邏輯的工具,業務需求寫完了,程序也就完成了。爲了把這樣的工具作出來,我找了一個叫 Pentaho 的開源工具,把核心代碼完全讀透讀懂,而後個人 SmartETL 也就橫空出世。要學會站在巨人的肩膀上,多看人家的代碼,你的設計能力編程能力都會愈來愈強大。這麼作其實也是工做就是快樂的良好習慣天然驅成。
若是你想往技術管理方向發展,這個階段你要開始鍛鍊本身的管理能力。對於技術類管理,我喜歡一種詮釋:管理是把一我的能力放大的能力,經過協調更多的人作更大的事。也就是說好的技術管理者,首先是要具有較深較廣的技術能力。管理最重要的一個基本要素是責任心。哪怕你目前還無論人,你必定要養成一個良好的習慣可以有擔當,你要可以拍着胸脯跟你的 leader 說:這事兒包在我身上你放心。一樣的話,你當 leader 後能夠和經理說,當上經理後能夠和總監說,當上總監後能夠和 C++TO 說,當上 C++TO 後能夠和 C++EO 說,當上 C++EO 後能夠和董事長說。有了這種勇於擔當的勇氣和習慣,相信你一直會成爲你的上司最器重最欣賞最努力栽培的人。
業務領域能力方面,你應該讓本身跳出技術的 comfort zone,把本身的知識面擴展到產品以及業務層面,你越瞭解公司的業務,你的設計越柔性越能應付系統往後的擴展,同時正由於你可以和業務老大講一樣的業務語言,你的價值會更早地被公司管理層發現。拿我本身的例子,當年我在金融公司作風控系統,爲了把系統作得更好,我讀了個金融方向的 MBA,結果不少業務需求我本身就很容易去寫,不少業務上的金融模型我也能夠去作,後來的路絕對是寬太多去了。
能力的提高不能擔保你必定能在公司獲得職位上的提高,你還要學會如何抓住轉瞬即逝的機會。作別人不敢作的作很差的對公司相當重要的事兒,把現有的性能提升 10 倍,在公司最困難的時候提出一個切實的解決方案並幫助公司走出難關,作出遠遠超過公司給你的回報的業績。。。只要你可以作出遠遠超過別人預期(Expectation)的事情,你就能緊緊抓住晉升的機會。你對新技術充滿好奇心,你敢於接受挑戰,你堅忍不拔永不放棄,這些逐步養成的良好職業習慣配合你日益強大的基本能力,再加上你時刻準備好積極尋求機會的心態,不想獲得晉升都很難啊。我之前在那家外企,當時業務想建立一個新的金融模型,沒人作的出來也沒人敢去作,我當時好開心,機會啊,不要白不要。花了一個月的時間天天 13-14 個小時的努力,最後東西作好了,本身能力提高了,大大超出業務的預期了,想不獲得提高都很難是吧。
這個階段你還須要不斷擴大本身的人脈關係網絡。單純一我的的成功是比較難以實現的,你要學會藉助他人的力量,學會整合資源,學會從和他人的交流中獲取靈感。你必定要多參加技術交流,好比 QC++on 或者其餘各類線下線上形式的活動,要能厚着臉皮和人家談上第一句話多結交朋友。你逐漸積累的關係資源會爲你未來的成功提供堅實的支持。
關於跳槽
儘管我從大二開始的第一家公司到如今,前先後後經歷了 5-6 家公司,我仍是想建議你們若是選好了公司輕易不要跳槽。你在一個公司至少得花上個 3-4 年來深化本身的職業能力,創建本身的人脈,深刻了解一個行業。只有當你以爲目前得公司不適合你的發展了讓你再也不有 passion 了你再選擇換一個公司發展。純粹從一個招聘經理的角度來講,若是一個候選人常常換工做,咱們會認爲這我的不夠踏實或者人品能力有問題,這樣的人很容易被 HR 直接 pass 掉。
C++XO 的技能
少數人職業進一步發展會晉級到 C++XO(C++IO/C++TO/C++OO/C++EO)級別。那麼 C++XO 須要哪些能力準備呢?在前面所說的能力以外,C++XO 必定要具有戰略眼光,他們要在本身的職能領域給你們指明方向,他們要可以發現、招聘並培養公司須要的人才,他們要學會如何搭配合理的團隊架構並經過有效的激勵制度讓公司健康成長,C++XO 們還要具有良好的人格魅力,可以很天然地把團隊凝聚在一塊兒。 對於技術方向的 C++IO/C++TO,除了本身專業領域足夠強之外,C++IO/C++TO 必需要深入瞭解業務而且用技術的力量幫助 C++EO 把公司的業務發展壯大。
作一個快樂的更全面的人
一個優秀的技術人員絕對不該該是簡單無趣的技術屌絲,我我的信奉的理念是 work hard play hard and be a fun person。讓工做自己成爲一種快樂的形式,工做以外也可讓各種愛好豐富本身的生活。
轉自:https://www.test404.com/post-1462.html