IT 大牛是怎樣煉成的?
公司來了個IT大牛,92年出生的人,現在是我們的team leader。
是我見過的程序員里最厲害的一個,不知道他的能力是怎麼煉成的。
說說他的事迹吧。
他高中的時候,就接觸編程(VB6),他一直在想,設計一個演算法和自己對弈(象棋),看看是自己設計的演算法厲害,還是自己厲害。
他自己獨立做,沒有參考任何資料,花了半個學期,竟然寫出來了。他自己動手做了一台斯特林發動機,設計了一台酒精燈帶動的縫紉機原型。
他家是農村的,他爸爸開貨車,車掛被偷了。
他就用繼電器做了一個報警器,如果偷車賊偷走車掛,就會弄斷銅線,觸發繼電器報警。農村的建築工人比較落後,走線方式不好,是把線爬在牆上,他覺得不妥。
就找建築工人商量,在牆上開個槽,線都從槽里過,如果要穿過樓層,就鑽穿天花板,如果要穿過房間就鑽穿天花板下面的那堵牆。
後來他的建議被採納了。他們大學選課系統很挫,一到選課就開始卡,人工不容易選上。
他就用按鍵精靈寫了個自動選課的腳本,並且獲得了女神的好感(那年他大一)。他把公交一卡通拆了,把裡面的東西摳出來,放進他的手機後蓋里。
這樣出門帶手機就行了,手機當作公交卡來刷。每次跟他一起坐地鐵,他都知道坐那一節車廂下車正好是電梯口。
他剛來公司的時候,就問HR部門,大樓的逃生門太窄(只開半扇門),過了晚上8點,就會完全鎖住。而且門鎖是通過電來控制的,刷卡開門。
這樣,遇到火災會不會電氣設備失靈,門打不開,把大家關在屋裡?他還給公司培訓講師團隊提出建議,讓講師收集一些好的工具、網站、社區加入到培訓中。比如安全培訓可以讓大家去看看烏雲網,資料庫培訓可以介紹下sqlyog的架構同步工具。
我們坐車去外地團建,路過一個鐵路和公路相交叉的路口。
他對我們說,這個路口設計不合理。
根據這裡的車流,可能會有車被前後的車輛夾住,堵在鐵路上,活活被火車撞死。他來了之後,給他管的服務加了大量監控和統計,還帶人做了各種分析系統,像gc日誌、連接池、dubbo服務日誌、慢查詢日誌、日誌流程化跟蹤,做了個網站健康狀態監測系統。
這個系統能看出硬體利用率(水點陣圖),伺服器full gc可能的原因。他還用selenium做了一個自動化測試兼網站自動巡視系統,能夠跑在linux上,自動截圖,畫紅圈圈,寫錯誤批註,發郵件給相應模塊負責人。
他目前正在研究docker化,準備把線上各種服務都放進docker里,做到每一個服務都能夠自動擴容。
像這樣的大牛,都是怎麼煉成的,我要如何做,才能夠成為1個大牛?
這些其實不難啊。
他高中的時候,就接觸編程(VB6),他一直在想,設計一個演算法和自己對弈(象棋),看看是自己設計的演算法厲害,還是自己厲害。
他自己獨立做,沒有參考任何資料,花了半個學期,竟然寫出來了。
這個難度對於高中生來說還可以,但是沒有具體實現的代碼難以判斷水平。
現在廣東沿海高中的06年後的高中教材里都是有教計算機編程的,教的就是落伍的VB6,以至於當時我們班上不少人自學了其他編程語言。
他自己動手做了一台斯特林發動機,設計了一台酒精燈帶動的縫紉機原型。
他家是農村的,他爸爸開貨車,車掛被偷了。
他就用繼電器做了一個報警器,如果偷車賊偷走車掛,就會弄斷銅線,觸發繼電器報警。
初中生的知識完全足夠做到這一點,我初中就開始也做過一些類似的小玩意兒,不過偏化學類的多,例如制銅樹啊、原電池、用粗銅線跟磁石電池之類的做個風扇什麼的,好多是中考完沒事幹做的。(跟標題里的「IT大牛」有什麼關係?)
農村的建築工人比較落後,走線方式不好,是把線爬在牆上,他覺得不妥。
就找建築工人商量,在牆上開個槽,線都從槽里過,如果要穿過樓層,就鑽穿天花板,如果要穿過房間就鑽穿天花板下面的那堵牆。
後來他的建議被採納了。
這是什麼鬼?(跟標題里的「IT大牛」有什麼關係?)
他們大學選課系統很挫,一到選課就開始卡,人工不容易選上。
他就用按鍵精靈寫了個自動選課的腳本,並且獲得了女神的好感(那年他大一)。
按鍵精靈屬於傻瓜軟體,很多小學生遊戲掛機就是靠這個,之前回村裡就見小孩玩過兒,使用非常簡單大家都可以去試試。
並發量還是只有一個,同時要等待瀏覽器的UI渲染,也沒辦法做到渲染完畢後的回調,效率上比直接分析JavaScript然後寫多線程並發選課腳本低幾十倍不止了,還浪費電。選課系統都在內網,寫段小程序只開10個線程發包,效率估計就是這個上千倍了。
用這種傻瓜軟體實在沒什麼可說的,以前光棍節搶紅包時女生宿舍就有小姑娘用按鍵精靈搶紅包,男生對於購物熱情倒是不高所以沒參與。
他把公交一卡通拆了,把裡面的東西摳出來,放進他的手機後蓋里。
這樣出門帶手機就行了,手機當作公交卡來刷。
RFID之類的近場通訊,卡裡面就是一個線圈,拆線圈只是一個耐心活兒而已,小學生有點耐心也能辦到的。(跟標題里的「IT大牛」有什麼關係?)
而且我覺得這人做事有些缺乏思考,你把公交卡拆剩一個線圈,以後充值什麼的帶來的麻煩可要多得多了。
如果是電子類的大學生,一般RFID實驗課的作業會要求做一套簡單的公交車刷卡系統,模擬充值和支付,整個系統。當然這個簡單系統離實際的聯網的分散式系統還差很多,但跟挖線圈這種小學生工作比起來就高大上太多了。
每次跟他一起坐地鐵,他都知道坐那一節車廂下車正好是電梯口。
他剛來公司的時候,就問HR部門,大樓的逃生門太窄(只開半扇門),過了晚上8點,就會完全鎖住。而且門鎖是通過電來控制的,刷卡開門。
這樣,遇到火災會不會電氣設備失靈,門打不開,把大家關在屋裡?
這個屬於生活經驗,不值一提。我在家裡,半夜起來閉著眼睛都可以去客廳倒水喝,如果你經常坐地鐵,要做到這一點並不難,相信我。(跟標題里的「IT大牛」有什麼關係?)
他還給公司培訓講師團隊提出建議,讓講師收集一些好的工具、網站、社區加入到培訓中。比如安全培訓可以讓大家去看看烏雲網,資料庫培訓可以介紹下sqlyog的架構同步工具。
看到這裡我覺得貴司水平有些低啊……平時竟然都沒看烏雲,要別人告知了才知道么……
推薦雖然不能代表水平,但是我也很有興趣知道他推薦了什麼社區,是爆棧網之類的么?
我們坐車去外地團建,路過一個鐵路和公路相交叉的路口。
他對我們說,這個路口設計不合理。
根據這裡的車流,可能會有車被前後的車輛夾住,堵在鐵路上,活活被火車撞死。
像西直門立交橋之類的,明顯有缺陷,但是讓你來,你能給出什麼好方案么?
發現道路設計不合理,只要你路走多了是肯定會發現的。
並且公路和鐵路交叉也沒有問題,你只要按照科目一里的交通規則來,肯定不會被火車撞死,這說明這個人的科目一,很大可能是混過去的。(跟標題里的「IT大牛」有什麼關係?)
他來了之後,給他管的服務加了大量監控和統計,還帶人做了各種分析系統,像gc日誌、連接池、dubbo服務日誌、慢查詢日誌、日誌流程化跟蹤,做了個網站健康狀態監測系統。
這個系統能看出硬體利用率(水點陣圖),伺服器full gc可能的原因。
運維/開發的基本功,再一次覺得貴司挺low,我自己搭的伺服器上監控和統計也都加全了,慢查詢日誌是SQL優化的基本、Munin之類的System Load/Processes/Memory監控也是性能優化的基本、打log是調試和發現Bug的基本,都是大學生課上就有的東西了。之前沒有這些,貴司是怎麼搞開發的?面向運氣編程?
他還用selenium做了一個自動化測試兼網站自動巡視系統,能夠跑在linux上,自動截圖,畫紅圈圈,寫錯誤批註,發郵件給相應模塊負責人。
他目前正在研究docker化,準備把線上各種服務都放進docker里,做到每一個服務都能夠自動擴容。
程序員就是搞開發的……開發出來一個產品,如果沒有解決特別的技術難點實在不值得誇耀。
這種事情就這樣看起來似乎並沒有什麼難點,特別是還用了各種成熟的輪子,希望你能介紹一下這些項目難點,例如性能是同類產品X倍、自己做了一個郵件通信的協議實現之類的?或者根本就是沒有?
評論里有不少人覺得會用按鍵精靈、會打log和開監控,或者能用大量現成輪子組裝出一個產品,就是很厲害的程序員了,招聘時請一定要小心這批人。
題主對這位「IT大牛」的情況知道得這麼詳細,雖然比較可疑,但我也不猜測什麼了。
裡面跟IT有關的、比較值得一提的也只有高中寫了象棋對弈,不過沒有代碼可以看並不能得到什麼結果。
想起了以前高中,班裡只要有一個人會開個Command Line移動文件就被眾人認為是IT大牛了。所以你說那個人「是我見過的程序員里最厲害的一個」,我覺得可能是你不是IT行業從業者的原因,或者是眼界太窄,沒見過多少程序員,所以並不具備足夠的判斷能力。
記得初入公司時,寫的代碼亂七八糟,錯誤百出,bug連連,不僅項目經理罵我,其他同事也對我怨聲載道。後來聽朋友介紹,就報了一個培訓班。經過1個月的刻苦學習,終於功夫不負有心人啊————他們都罵不過我了。
做了近二十年研發,接觸的IT"大牛"也不算少。有些感觸:
1.天分絕對是第一位的,有些人的思維天生就很適合搞IT。可能有朋友會質疑這點,從業人員那麼多,難道都有天賦?以編程為例,絕大部分人,其實只是做了知識遷移,比如,參加培訓班或者閱讀,然後在項目中實踐,把學到的知識復現一下。真正能舉一反三,大膽創新的人可以說是鳳毛麟角。當然,國內由於生存的壓力,這點可能要求過高,如果能把問題理解得很透,甚至能"專業造輪子",比如 @vczh 那也同樣是鳳毛麟角的。
所以,其實有這麼幾個層次:
用輪子--專業用輪子--造輪子--專業造輪子--專業發明輪子。
第一種是碼農,第二種是高級碼農。後面三種人,確實需要天賦,尤其是最後一種。
2.興趣是最好的老師。這條自不必多言。"大牛"一定是對他的領域很有興趣的。
3.有合適的發展機會及展現舞台。有些人確實有天賦,但發展的路子歪了。這種人我真的見過,本來是個做技術的好料子,但編而優則管,最後做管理去了,對他個人來說也許是好事,但世間從此少了一個"大牛"。
除了IT方面的技能,剩下的全是技術宅吧裡面一抓一大把的那種。
IT的話,我也是高中開始學編程的。不過我是辣雞23333而且VB6真的需要啥技術?傻瓜式編程,本來就是簡化程序員工作流程的,拿來正兒八經學習沒啥意思。
還不如學學Kotlin。你們公司還招人嗎?我正好每天有一小會空閑時間
說的是你自己吧
1、拿到任務,就開始仰望星空或天花板上那盞高懸的電燈棒,狀如老僧入定
2、忽而皺眉,忽而展顏一笑,忽而手舞足蹈,忽而在紙上指指戳戳,忽而口中念念有詞,忽而長吁……感覺有點神經病啊
3、桌子上擺的是代碼大全、設計模式、敏捷實踐之類的書籍,並且沒有灰塵
4、chrome或firefox的書籤欄里分門別類,類別多於10個,8個以上是技術相關的
5、容不得破窗戶,看見別人的爛代碼就想改過來
6、隨手就能在白板上畫出軟體的流程圖或者時序圖……
7、項目做完了,別人在打遊戲、看視頻、忙著回復QQ、向剁手族前進,他在想:這樣重構好呢,還是那樣……
8、你發現他總能說出些你不知道的技術來……
9、看這廝的代碼比看你自己的還好懂……
10、老得你叫他吃飯……
更多相關內容推薦:
在創業公司做架構師,你需要解決哪些問題?:[轉]在創業公司做架構師,你需要解決哪些問題?-博客-雲棲社區-阿里雲
技術人員的KPI:技術人員的KPI-博客-雲棲社區-阿里雲
作者:阿里云云棲社區 - 知乎
親們阿里云云棲社區已開通專欄,歡迎關注閱讀:我是程序員 - 知乎專欄
你們知道一個叫做頭腦奧林匹克的競賽嗎?我覺得我的基礎能力就是在那個比賽裡面煉成的。
我也92年的。
我1年級就會Visual Basic(其實是做技術員的叔叔教我拽了幾個按鈕到窗口上而已)。
4年級就會做網站。
5年級就會超頻CPU和裝系統。
6年級就用按鍵精靈玩網頁高達大戰
初中就會PS和3D建模和渲染,我做的飛機坦克被專業人士交口稱讚。
高一用pascal兩天時間寫了一個數制轉換器。
高二就會用 combustion 做後期。
高三學了素描,畫的一張靜物因為畫得太好,給同畫室的某藝術生帶來了很大壓力,被他踩了一腳。
本科期間學了計算機圖形學、C++、MFC、DX、HLSL、Physx、3DsMax 插件開發,寫了一個自己的遊戲引擎。
現在我還會 HTML+CSS+JS,我還自己寫了一個HTTP伺服器。
總之,我就是一個能當美工,能當後期,能寫伺服器,能寫前端,能寫遊戲引擎的文藝程序員,
當然我最厲害的技能還是吹牛。
什麼什麼?你說3D建模和素描和IT沒關係?題主說的斯特林發動機、繼電器報警器、牆上開槽走線不是一樣和IT沒關係嗎。
看了你的問題描述,總結下來就是「感興趣+會思考+行動力」,不止IT行業吧,這樣的人落腳於哪個行業都會成為大牛的。我身邊也有很多這樣的例子,既然樓主問的是IT人,那就拉一個ThoughtWorks程序員的例子出來,由於篇幅比較長,我只截取開頭一部分:
第一次開始編程是2009年,那時候玩了一款遊戲叫誅仙,完美世界的,當時在遊戲裡面倒賣裝備、道具。一天一個玩家用60人民幣買我的一個12x的寵物,在進行交易的時候,突然發現滑鼠自己動了,然後整個賬號的東西就在我眼前被人交易走了,這時候自己挺震驚的,然後我給那些一起玩遊戲的朋友說,不玩遊戲了,其實不會告訴他們我賬號被盜了,這時候有另外一件事更吸引我,那就是對方是怎麼做到的。
從那以後,我依舊蹲網吧,但是不再去打遊戲,而是每天都搜索怎麼控制別人電腦,怎麼當黑客這些,雖然能夠搜很多東西,但是都不靠譜,記得當時搜索出來的最多的是一個雜誌:黑客防線。於是到處找它的電子版本,然而它裡面講的那些漏洞,各種例子,去一看壓根就不存在。後來有個朋友一次發給我一個腳本——vbs的腳本,那時候網吧都不安裝殺軟,都是裝還原卡,在qq上接收了文件之後立馬彈出了一個對話框,要求寫入我是豬,否則就關機,然後我就一直等著30秒過去,還真關機了。
於是就開始搜索vbs後綴的文件,後來知道它叫vb腳本,於是又去搜索vb語法,那時候學校壓根沒有計算機課程,學校也嚴厲打擊網吧上網,甚至不定時會有老師去網吧抽查,而自己就通過這樣一點一點的瞎摸索,好歹還是摸索了一些門道,像如何給軟體加殼,如何脫殼,掃描埠,如何寫外掛和抓包分析等。那時候用的最多的軟體是od,但是骨灰級的人總會說od都是渣,因為od是基於cpu 3環調試的,他們用soft-ice,那時候有一個叫泡泡堂的遊戲,給它脫殼,寫註冊碼,都玩爛了。
記得是在看雪論壇上看到的,說用別人的軟體的人,頂多叫腳本小子,自己寫軟體的,那才是真正的牛人,於是自己想想也是,畢竟你用別人的軟體去掃描埠,如果這個軟體本身就是個木馬,還沒有把別人搞定自己就被別人搞定了,於是又去學習怎麼寫軟體,得到的最多的就是delphi,熊貓燒香就是它寫的呢,牛不,肯定牛,不牛怎麼能進監獄呢。
在剛剛高考後,所有人都開始釋放本能,很多人開始狂歡,自己當時在一個叫大世界的網吧上網,那時候網吧的qq都有一個功能,可以搜索到同一個網吧的人,差不多在凌晨6點的時候,把程序打包,使用exe捆綁機捆綁到一張圖片上(一定要那種美女圖片,才有誘惑力),然後到處發,只要有人點擊了,我就能夠收到消息。差不多凌晨6點的時候還真有人點擊,於是我就成功的使用telnet上去了。在那個時候,自己還是沒有免殺的思想概念的,畢竟網吧也不裝殺軟,現在干這些事麻煩更大,除了各種連頭都要修改的數層加殼,還的想著如何免殺,逃避病毒庫的標記。
大學後自己買了第一台電腦,有個三星r23的筆記本,有著2g第二代內存條(早已絕產)的大內存,這筆錢還是當時在51上賣了遊戲賬號的錢,有了筆記本當然要干正事,幹什麼事情?裝系統,那時候自己已經懂得了linux的基本東西,而很多人連linux壓根就沒聽過,加上學校本來就開設了linux的課程,於是更加毫不猶豫的把電腦系統刷成了centos,要麼做第一個,要麼做最好的一個。
在linux課上,很多人驚奇的聽著這個連名字都沒聽過的操作系統,而我已經可以和老師談一些linux的基本知識了,當然老師是很開心的,你想老師在上面講課,肯定也希望有人和自己交流,人生最痛苦的事情就是你在上面分享你最擅長的東西,下面的人壓根不在乎,所以大學的老師也是不容易的,而這時候突然有一個人能夠和老師談到一塊,老師也是挺開心的,以致於後來老師也特別照顧,平時也會給我開開小灶。
....
後面的內容太長了,就不一一搬運過來了,小白(上文的寫作者)現在是我司出色的大數據工程師。他這一路,不也是感興趣+會思考+有行動力的絕佳寫照么...
樓主對這位大牛的情況這麼清楚,不禁讓我想起了那位桀驁不馴優秀的應屆生的自薦貼
http://www.zhihu.com/question/29210750很多答主覺得題主眼中的大神不過如此。說明「知乎里技術大牛多」確實不是蓋的。
但是92年當上了技術leader,人家做出來的產品為公司產生了不錯的效益,人家確實很牛,在同齡中絕對算得上優秀。
站在巨人的肩上用好開源工具,組件,產生經濟效益這樣很牛啊。難道一定要用c語言瀏覽器內核代碼,寫linux內核才算的上牛逼嗎?
怎麼樣成為大牛?
我發現身邊的大牛基本上都有這些特點:愛技術,勤思考,勤閱讀,勤實踐。
通俗表述就是:
1.在想清楚之前不要動手;
2.多讀優秀的開源代碼;
3.學以致用。show me the code.
最後,切記切記不要閉門造車,要多學習借鑒優秀的軟體設計思想。
每當小夥伴吐槽我的代碼水平,我就把變數名寫成:
thisisanoldstringanddonotuse_nagemokuaizhong = "text/plain"
自此以後好幾個星期他們都不會抱怨我的技術差。
天生的。
針對題主提的這個問題,在此分享一篇 螞蟻金服技術專家 清英 的一篇文章 ——《如何在三年內快速成長為一名技術專家》,我覺得跟這個題意很貼切,字字乾貨!
工作前三年是職業生涯中成長最快的幾年,在這段時間裡你會充滿激情,做事專註,也容易養成良好的習慣。在我們公司有些同學在前三年中就快速成為某一個領域的技術專家,有些同學也可能止步不前。本文和大家一起探討下如何在三年內快速成長為一名技術專家。
目錄
學習方法
1.掌握良好的學習心態
2.掌握系統化的學習方法
3.知識如何內化成能力
4.廣度和深度的選擇
實戰技巧
1.你需要學會的編碼習慣
2.在業務團隊做開發如何成長
掌握良好的學習心態
空杯心態
首先要有空杯的學習心態,而不是傲嬌自滿,故步自封,空杯子才可以裝下更多的東西。首先要學會取百家之長,帶著欣賞的眼光看團隊的同事或學校的同學,欣賞每位同事或同學的優點,然後吸取他們的優點,每個同事都有其擅長的能力,比如有的同事技術能力強,那麼可以觀察下他如何學習的(或者找他請教學習方法),有的同學擅長解決線上問題,那麼觀察他是如何解決線上問題的,解決思路是什麼?如果他解決不了時,他是如何尋求幫助。有的同學擅長使用IDE或MAC的快捷鍵,那麼可以向他學習提高工作效率。有的同學能快速理解業務知識,觀察他是如何做到的,自己如何達到他的程度。溝通能力,解決問題能力以及規劃能力都可以向同事學習。
挑戰權威
從書上看到一個知識點,或者從別人那裡聽到一個知識點,一定要去挑戰和質疑這個知識點的正確性,否則學到的知識點可能是錯誤的。先用邏輯思維推測下,再實戰檢測下,一定要記住實踐是檢驗真理的唯一標準。比如同事說這個SQL加這個索引是最快的,首先要思考同事的結論是如何得出的,是靠歷史經驗還是測試過,如果我們沒有經驗,就加上這個索引跑下SQL,看看執行計劃和執行時間,再換下其他索引試試會不會更快。依次類推,並發一定比串列快嗎?無鎖一定比加鎖快嗎?
很多結論都是在特定的場景下才會產生的,一定要自己親手實踐驗證下。
堅持學習
有的同學可能工作了五年,但是學習的時間可能一年都不到。學技術不能急於求成,只要學習方法正確,量變一定會引起質變。我在大學剛學JAVA時,怎麼都學不會,但是堅持學習了幾個月,每天看張老師的JAVA視頻教學,買書按照書里的代碼一行一行的敲代碼,白天睡覺,晚上學習和寫代碼,寫到宿舍關燈時就去避風塘呆一晚上,早上6點鐘回宿舍睡覺,學到一定時間後,突然恍然大悟,才入了門。
在工作中,我曾經花了一個月的時間學習AOP的實現原理,學習了各種方式來實現AOP的原理,並寫了幾種實現方式的代碼,雖然花的時間很多,但是到現在仍記憶猶新,對於排查問題和學習其他知識都非常有幫助。
要做到堅持學習,學習的環境非常重要。如果你想學,但是又不在學習狀態,可以考慮換個學習環境,我經常會去星巴克看書和學習。我聽說有的同事會周末抽一天去大學教師上自習。
把事做精
對自己要求越高,進步越快。要有強烈的把事情做完美的心態,我剛開始工作的時候,總是快而不精,做事做的不夠細緻,總希望快速拿出結果證明自己,但是反而證明不了什麼,技術能力也得不到提升,缺少技術亮點,在團隊中也沒什麼影響力,後面就開始鍛煉一次就把事情做對的心態和方法。我觀察過,很多人都擅長快速做事情,但是把事情做好做精緻的人會比較少,但是結果卻是在精益求精的路上才會快速提高自己的能力 。比如用100行代碼實現的功能,思考下是否可以用10行來實現,以便於降低運維成本,提高下次的編碼效率。引用GUAVA等類庫,提取公共方法,和使用JDK8新特性等。系統的方法壓測過後,單機只能承受1700QPS,可以思考和實踐能否優化下程序提高QPS,減少伺服器數量。
把事情做精,一定是要強迫自己多花心思多花時間在這件事情上。有位技術牛人給我分享了一個心得,我覺得說的非常好,老闆給你布置了一個任務, 你要花百分之150的精力做到100分,這樣在老闆那裡你就能拿到80分或者60分 。
掌握系統化的學習方法
如果學習到的知識不成體系,那麼遇到問題時就會非常難解決。有些同學會出現這些情況,比如編碼時遇到問題百度搜索,如果百度上找不到答案,這個問題就解決不了。再比如,在開發中要用到某個技術點,就學習下API,程序調通後就不再深入研究,淺嘗輒止,如果程序遇到其他問題也不知道如何解決。
以上情況我認為叫 點狀學習 。遇到一個問題,解決一個問題,需要一項技術,學習一項技術。那麼如何由點到面,由面到體,形成系統化學習呢。
首先要確定學習的知識領域,需要達成的學習目標,針對目標制定學習計劃,就像你要寫一本書一樣,先把目錄寫出來,然後根據目錄上的知識點逐步去學習,最後把這些知識點關聯起來,形成一個系統化的知識體系。學習的時候,可以制定一個計劃,以周為單位,比如第一周學什麼,第二周學什麼。
比如我最近在學習人工智慧,學習步驟是:
1.高數基礎知識:線性代數,微積分和統計學。最近在打德州撲克時,我也會用統計學裡的知識計算下輸贏的概率。
2.人工智慧基礎:買幾本書人工智慧的基礎書籍,如《機器學習基礎教程》《Python機器學習》
3.框架:TensorFlow等。
4.實戰:在工作中找到一個應用場景,把學到的知識運用進去。
知識如何內化成能力
作家格拉德威爾在《異類》一書中指出,1萬小時的錘鍊是任何人從平凡變成世界級大師的必要條件。1萬小時有多久?每天學習10小時,需要大約三年。但是很多人都工作了五年甚至更長,但是為什麼成為世界級大師的卻非常少。讀者可以先自己思考下這個問題。接下來談談我的看法。
成長必須經歷一個步驟,就是把知識內化成能力。 知識是用腦記住的,能力是用手練習出來的 。在工作的幾年裡,我們可能看過很多書,聽過很多技術講座和視頻,但是通過聽和看只是讓你能記住這些知識,這些知識還不能轉換成你的能力。
聽和看只是第一步,更重要的是實踐,通過刻意練習把聽到和看到的知識內化成你的能力。
刻意練習,就是有目的的練習,先規劃好,再去練習。首先給自己定一個目標,目標可以有效的引導你學習,然後使用3F練習法:
1.專註(Focus),專註在眼前的任務上,在學習過程中保持專註,可以嘗試使用番茄工作法。
2.反饋(Feedback),意識到自己的不足,學習完之後進行反思,思考下自己哪些方面不足,為什麼不足。
3.修正(Fix),改進自己的不足。
不停的練習和思考可以改變大腦結構,大腦像肌肉一樣,挑戰越大,影響越大,學習更高效,並且也會產生突破性。
廣度和深度的選擇
技術人員的學習路徑有兩個維度,深度和廣度。很多程序員都有這個疑問,是先深後廣,還是先廣後深呢?
通過這麼多年的學習和思考,我的建議先深後廣,因為當技術學到一定深度後,就會有觸類旁通的能力,自己掌握的廣度也自然有了深度。但是在實際學習過程中,深度和廣度相互穿插著學習,比如學習並發編程時,首先學習JDK源碼,然後學進去之後,開始看JVM源碼,最後看CPU架構,在技術點逐漸深度研究的過程中,廣度也得到了完善。
所以無論哪種學習方式,學習態度才是最重要的,在廣度學習的時候有深入研究的態度就能達到一定的深度,在深度學習的時候,主動學習相關的技術點,廣度也得到拓寬。
你需要學會的編碼習慣
程序員應該學會通過技術的手段來提高效率。幾個常用的手段是使用工具,快捷鍵和編寫腳本。
使用各種工具
技術人員電腦盡量用MAC,使用命令行效率一定比在 10241024 像素中找一個 1010 像素的按鈕更快。IDE用IDEA,比Eclipse更智能。命令行工具用iTerm和IDEA里的Terminal。寫文章用MAC的客戶端工具MacDown,左邊編寫,右邊展示,比Word等工具方便快速很多。有時候我還會用按鍵精靈里配置腳本需要解決工作問題,比如通過點擊我們的系統,來執行任務。這樣的工具很多,只要能提高工作效率的工具,大家都可以嘗試使用。
使用快捷鍵
MAC,IDEA和Eclipse有很多快捷鍵都要學會使用,比如在MAC命令行中通過idea .快速打開工程,通過open . 快速的打開文件夾,把IDEA里通過快捷鍵把一段代碼抽成一個單獨的方法,快速生成getter setter方法。
用腳本寫工具
當我們用人工的方式做一件重複性很強的事情,首先要考慮使用工具來幫我們自動完成,如果沒有類似工具,可以自己寫個腳本來實現,這樣除了能快速解決問題,還能提高自己的技術能力。
比如,我經常要在兩個maven倉庫發布jar包,我就寫了個腳本來實現jar包的發布, deploy.sh代碼如下:
cp pom.xml pom.xml.bakrm pom.xmlln -s pom-2-deploy.xml pom.xmlmvn deployrm -rf pom.xmlcp pom.xml.bak pom.xmlrm pom.xml.bak
在業務團隊做開發如何成長
我一直在業務團隊中做開發,在業務團隊最主要的提高的能力是業務抽象和架構能力,通過業務場景,不斷思考如何通過合理的架構和業務抽象能快速支持業務,降低運維成本。同時在這個過程中鍛煉技術能力,比如寫一些技術框架來快速支持業務,做到技術驅動業務。
可配置化的方式支持業務
設計業務的領域模型,把不隨著業務邏輯變化的領域模型做成系統能力,把隨著業務邏輯變化功能,做成可配置化,上一個新業務,通過配置的方式或少量開發就能支持。
在做客戶後台功能時,由於需要展示的數據種類非常多,每種數據展示可能需要花費幾天的時間,所以設計了一個通用的技術框架,實現了通過配置化的方式展示各種數據。
寫框架解決業務問題
我在上家公司經常做一些CRUD的業務功能,我就自己開發了一個快速做CRUD的框架 jdbcutil,通過配置實體生成SQL語句,實現了子類只要繼承父類,就自動擁有CRUD的能力。後面還寫過生成CRUD頁面代碼的程序。
目前我們團隊在做的TITAN框架通過模塊化開發的方式,解決易變的業務系統在多人開發時遇到的問題。
技術驅動業務
在業務團隊,一定要不斷的思考如何利用技術來支持快速支持業務,配置化是一種思路,但是有些功能配置複雜度比較高,配置加驗證的工作量,可能需要一個星期的時間,那麼能不能減少人工配置,實現系統自動化配置,於是可以研究下人工智慧,通過人工智慧的方式實現,系統告訴人需要配置哪些東西,然後交給人來進行確認,這樣可以大大減少人工成本,更快的支持業務。
1.具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加群。
2.在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加群。
3.如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加群。
4.覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加群384053806。
就年齡來講,還不錯,但說大牛還差點,如果照這個趨勢下去,過五年應該差不多。
多放眼看看,知乎這些人、這些話真不算黑他。
要想成為他,其實沒必要。找准你自己的位置,發揮你的特長,it圈很大,容得下各種牛人和半牛人。不一定只有技術好才叫牛。比如你自帶光環,讓你身邊的人都能效率倍增,那你就不是大牛而是傳說了。
看完所有的評論後,我感覺現在的年青人里大牛還真多啊!這麼多90後都這麼牛逼!
好自愧不如啊!馬上35歲的我竟然還在複習大學時候的C語言和數據結構!
這算牛啊…… 服了……
你這是多沒生活經驗
隨便說幾個
1、偶大學在線作業答案都是利用漏洞js和Delphi抓出來的填了提交的,門門平時成績滿分。按鍵精靈選課啥的爆弱了。
2、門禁卡都拆過貼手機上(但是比不上當時兄弟部門的紙片晶元直接不幹膠貼手機上就行),結果是離職叫不出門禁卡扣錢,哭
3、地鐵啥的坐多了,稍微有點心眼的都知道哪個門離電梯近吧,如果差不多電梯口上的車下車也差不多電梯口
4、樓宇門禁是電磁的,通電吸上打不開,電氣失靈……
5、北京這種道口多的是,你當他們不會提前n早下桿攔車呢,沒等過道口是么…… 還欄中間被火車撞……
6、你們公司得多慘,服務端的統計分析都沒有…… 工具有的是,自己架個都懶么,難道連想都沒想過……哎
7、用人家寫好的玩意有啥牛的。又不是自己寫的把瀏覽器核都包一起做兼容測試。還跑Linux上……它外掛的瀏覽器還不得win上跑著,想啥呢。我這麼搓的人都包過IE webkit ff 仨個,還包個qtwebkit來跑自動化性能測試。說白了還是你見識少唄
8、不吐槽了……還是研究現成工具的使用而已,沒啥特色,最多也就是見得多點。沒啥新意都。
摺疊吧大牛哪是練成的,還不是你們捧吹出來的?
用小火慢慢燉 適當的時候加點猛料
推薦閱讀:
※如何看待興起的周末去哪兒、美周六、懶人周末等定位於周末市場的產品?
※馬雲和喬布斯等大佬值不值得我們學習?
※有哪些明明是 bug,卻被說成是 feature 的例子?
※量子計算機會不會取代今天的計算機演算法技術?
※為什麼感覺國外的程序員更專業?