怎麼樣成為編程技術大牛?
本科學了四年,工作四年,依舊沒有成為大牛,著急!而那些人似乎隨隨便便就成為大牛了
雷軍讀書的時候,周末騎單車去買書用電腦什麼的,風一樣的男子。
求伯君公司困難的時候賣別墅。
這些就不說了,免得你說你不要超神只要普通大牛。那就說我知道很多菊苣周末,晚上都在家看書,中午也沒有睡午覺的壞習慣,不會說回了家就是玩啊看劇什麼的,當然也不是說完全不玩,而是主要精力絕不在玩。
我曾近距離觀察 @於鑫 菊苣,我周末跑出去玩,他在椅子上看書,等我玩完回來他還在同一個姿勢看書……我羞愧地低下了頭
如果能做個 閱讀者 雕像應該可比肩思考者和擲鐵餅者……
你不想加班,是想休息放鬆看電視,人家是想有更多的時間看書,大牛隻是沒你那麼隨便,沒人隨隨便便成功。
哎呀既然大家喜歡再補充兩個菊苣的故事。
微軟有個菊苣,毅力好,愛編程,對自己要求很高,常租個房子辭職開始看書,最近的一次是看了三個月編譯器設計,然後說神功初成,書上每個字都理解了。
另一個菊苣,看 csapp,35天,每天 5 小時,做題的那種。看 sicp,有全部題解。對計算機理解非常深刻,現在看他偶爾吐槽一下,身心非常愉悅。互聯網時代要學會運用網上資源,我大一到大二期間自修了mit os,db,disos課程和standford的compiler,自己寫了os,database, distributed os, compiler.後來大四保研以後,整個大四一年準備上完研究生大部分方向課程,基本都是網上自修的,包括berkeley software, mit advanced algorithm , berkeley deep learning, standford computer vision等一大堆課程,之後做的事情就是github上搜索你感興趣的相關topic的高star項目,用git回溯到最初版本,觀察原理和軟體的迭代開發過程,然後再從網上找相關的idea,試著去實現。
prakhar1989/awesome-courses 世界名校課程列表
open-source-society/computer-science computer science的mooc學習計劃
open-source-society/data-science data science的mooc學習計劃
Developer-Y/cs-video-courses video課程列表
-----------------------------------------------分割線------------------------------------------------
前面說的有點籠統了,這邊我在詳細的說下大概的學習過程。
這篇教程以英文好為前提,至少得過六級和聽得懂常速英語,如果英語不好,那麼成為大牛這件事可以說是想多了,所以前提是把這個搞定。
隨著互聯網教育的普及,很多教育資源可以說是唾手可得,這為我們提供了一條光明的道路,如果你不願意忍受學校那無聊乏味的課程, 那就來試試這條讓你通過電腦接受美國頂級cs學校教育的道路吧。
一. 掌握基礎技能
A. shadowsock翻牆
首先要解決的是牆的問題,你可以選擇直接購買vpn或者自己搭建伺服器,這裡我推薦第二條路,既然都決定成為大牛了,咱得自食其力,要完成這個目標首先需要基礎的Linux command Line知識,如果沒有的話,建議看看Linux Command Line這本書入門,下面是詳細的搭建步驟
1. 購買vps伺服器
新手推薦購買bandwagon,最便宜的一個月只要10塊,並且搭建shadowsock服務完全夠用了,缺點是bandwagon是OpenVZ架構,不能使用google bbr加速,如果不想用這個可以考慮參考這個鏈接有哪些便宜穩定,速度也不錯的Linux VPS 推薦?。
2. 搭建shadowsock服務
說明:你可能沒有用過github和git,我推薦下面這個教程git - the simple guide - no deep shit!
伺服器端安裝腳本: teddysun/shadowsocks_install
windows客戶端: shadowsocks/shadowsocks-windows
android客戶端: shadowsocks/shadowsocks-android
IOS客戶端: shadowsocks/shadowsocks-iOS
當然你也可以關注shadowsock在github上面的組織,還有很多其他很有趣的項目.
3. 加速shadowsock訪問
在不使用加速前,我基本只能看youtube 144p,但是加速後1080p毫無壓力,所以小夥伴們千萬不要跳過這個。
google tcp bbr加速: 52fancy/GooGle-BBR(注意OpenVZ不能用!!!)
用流量換速度之kcptun
server端一鍵安裝腳本clangcn/kcp-server, 感興趣的可以嘗試自己安裝
windows客戶端 dfdragon/kcptun_gclient
android客戶端 shadowsocks/kcptun-android
ios暫時沒有,有興趣的小夥伴要不開發個,我不是很懂ios.
B. 問題解決和信息搜索能力
問題解決參考這個就好了How To Ask Questions The Smart Way
其次我推薦一些網站
首先是大名鼎鼎的Stack Overflow
其次stack overflow只是stack exchange下的一個網站,這家公司還有很多其他的網站,還有很多其他有趣的網站
Cross Validated 如果你對機器學習感興趣,這裡你能獲得很多幫助
其他的就是你自己在這邊All Sites - Stack Exchange 找你感興趣的了,http://stackexchange.com/sites 比如game development.
C. 效率工具
學習光看書不記錄筆記,不反思,不動手是不會有成就的,所以這邊我介紹一些我生活中經常用到的工具給大家提高效率:
1. 編輯器
由於我接觸編程較早,所以最熟悉的是vim,我想我已經離不開它了,但是對於新人而言,現在有了很多其他好的選擇,首先是A hackable text editor for the 21st Century, 可以hack的編輯器,社區非常活躍,插件也很多,本人除了vim之外就用它了,顏值也挺高的,其次還有sublime,我沒使用過,不好做評價。
2. chrome插件
vimium插件 像使用vim那樣使用瀏覽器
OneTab插件 chrome每個tab都是一個進程,非常消耗內存,這個插件可以幫你省去不少內存
Go to Feedly 直接跳轉到feedly,主要用於訂閱rss,我平時用來看論文的工具.
3. 筆記
光看書,看視屏聽課是無法很好地吸收課程內容的,要學會自己總結和內化,這裡我推薦
印象筆記或者wiznote,後者沒什麼名氣,但是功能齊全,免費版可以媲美印象筆記的低價版,如果你實在是沒錢就用免費版吧,但是如果你在使用過程中很滿意,那麼希望你能付費,我在使用半年後就購買了全年的服務。
其次Xmind可以幫助你可視化自己的記憶,把學到的知識變成一個樹狀圖,方便隨時回憶。
D. 學習方法
你是否在學習過程中難以集中精神,或者是學習效率很低?
我推薦你上上這門課學會如何學習:幫助你掌握複雜學科的強大智力工具(Learning How to Learn) - University of California, San Diego | Coursera
學會如何學習:幫助你掌握複雜學科的強大智力工具(Learning How to Learn) - University of California, San Diego | Coursera
其次的話手機上下載番茄時鐘幫助你劃分時間。
最重要的是要制定上課計劃,在你翻牆以後你可以使用google doc,制定一張只屬於你的網課課程表,每天只需要打開它,然後點擊跳過去就好了。
最後要強調的一點是選課不可貪多,而要對著你目前的興趣和階段選擇,其次coursera上面選課要謹慎,水課很多,我的建議是按照我前面給出的鏈接選擇,或者按照下一部分我會說的課程安排來選擇。
今天先到這,明天繼續....
這些來自於我在另一個問題下面的回答 很多IT大牛在我這個年齡時已經很厲害了,我該怎麼做才能變成他們那樣的人? - 知乎
答案我會持續更新
自薦一下之前寫過的一篇文章,《如何從菜鳥程序員成長為(偽)高手》。雖然我到現在也不是什麼業界大牛,並且寫完文章到現在的這段時間裡也對這個問題有了一些更深刻的理解。不過總的來說,我認為這篇文章應該會對新人程序員有些幫助。===================
最近有一些畢業不久的同事問我:「你工作的時候有沒有什麼竅門?怎麼才能快速成為高手?」
想起當初剛入職,新人培訓的時候,也跟其他同事討論過這個問題:如何才能成為業界大牛?當時自己只是覺得興趣是最好的老師,思路方法什麼的沒有多想。
如今加入微博平台架構部一年半多,趁著快過春節總結了一下自己入職微博一年半來的工作,從互聯網開發的半個門外漢,到如今能設計一些架構、排查一些問題、分享一些經驗,收穫頗多,感想頗多。也逐漸意識到思路和方法的重要性。在此跟大家分享一下。
學會學習學習無疑是程序員最為重要的素質之一,尤其是互聯網這種日新月異的行業,把學習當做工作的一大半也不為過。
自主學習
最近發現身邊的人並不是不想學習,只是每天都在糾結自己到底學什麼好:簡單的沒挑戰,複雜的看不懂;舊技術怕過時,新技術沒方向……
講講自己畢業後的經歷,畢業之後去了個不大不小的公司,工作主要是做一些XX管理系統之類的東西,沒什麼挑戰,也用不上什麼技術,基本上前端用個extjs後面套個sql server就解決了。工作穩定了幾年,業餘時間除了wow沒別的事情做,覺得這麼閑下去不是辦法,于是之後一年的時間裡,用上班摸魚和下班休息的時間學了這些東西:
- 閑著無聊想做個小遊戲,發現遊戲相關的書大多是英文的,看不懂,一咬牙翻譯了《Real-time rending 3rd》的前幾章,剛開始前言都看不懂,只能一個詞一個詞的翻字典,一句話要琢磨幾個鐘頭到底作者說的到底是什麼意思。翻譯了幾百頁英文書之後,發現自己看英文書沒什麼障礙了,於是開始每天用休息和摸魚的時間看書。
- 看完遊戲引擎的書之後,把irrlicht引擎的代碼看了一遍,然後自己山寨了一個3d渲染的場景管理器,還有個樸素的渲染引擎。
- 給自己的遊戲引擎寫了個基於腳本語言的解釋器,為此看了不少編譯原理和虛擬機的書,了解了程序究竟是什麼東西,這是我覺得收益很大的一件事情。
- 看編譯原理的書的時候發現操作系統的知識有些欠缺,又去看了linux內核相關的書。之後買了個開發板天天修改內核玩,畢業以後又一次了解了內核的cpu調度、內存管理和文件系統,了解了應用是怎麼跑在操作系統上,操作系統又是怎麼運行在硬體上的,這也是收益很大的一件事情。
- 看完操作系統又順著看網路相關的書,之後把lighthttpd的代碼看了一遍,用c寫了個linux下的http伺服器,把幾種網路編程模型挨個實現了一遍。
- 實現http伺服器的過程中覺得自己編碼能力還是有欠缺,把代碼大全翻了一遍,順著又去看了設計模式的書,並且用自己的理解把每個模式用文字重新描述了一遍。
- 中間還看了很多語言和框架相關的書,就不一一列舉了。可以參考這裡。
我把學習的方向分為三類:
- 為了工作,滿足當前工作所必備的知識
- 為了提升,與當前工作相關的知識(深度)
- 拓展視野,與當前工作無關的知識(廣度)
學習(1)之後只是個熟練工,2和3才是提升自己的途徑,伴隨著知識儲備的提升,接觸新事物時更容易找到相似的知識加以類比,加快理解,也更容易掌握本質。如果每天都在糾結「到底學什麼」,那麼只能說明還是學的太少了。(真正沒什麼可學的大牛們應該不會讀到這裡吧……)
所以,如果覺著沒什麼東西可以學的時候,那麼可以考慮一下學一下更有深度的知識(比如虛擬機或編譯器),或者完全不同的知識(新的語言或當前比較火的方向),甚至完全不相干的知識(單純練習英文閱讀,學習ppt排版之類)吧。隨著知識儲備增加,自己的不足和未來的學習的方向也會更加明確起來。
向歷史學習以微博為例,在微博發展的過程中經歷了不少波折,並逐漸衍生出了目前的系統架構。很多新人最喜歡問的問題便是「現在線上是怎麼做的?」
這個問題不錯,但是還不夠好。在程序員的世界裡罕有能解決所有問題的「銀彈」,當前的做法用不了多久也會被替換掉,如果想了解一件事情,那麼就多關注一下「它是怎麼變成今天這樣的」吧。學會用發展的眼光看問題,了解一些經歷過的經驗教訓,收穫會比單純學會一件什麼事情多的多。
那麼,如何向歷史學習?
- 公司內部的資料庫、wiki等大都會有舊時的資料,剛入職時大多不會太忙,這些資料庫簡直是挖不完的寶藏
- 部門內部分享,比如我當初入職時經常去聽「微博XXXX架構演化歷程」之類的內部分享
- 多問一下自己」它為什麼不那麼設計「
- 老員工憶苦思甜吹牛逼的時候多奉承幾句_(:з」 ∠)_
向他人學習
這裡有兩個極端,
- 有的人喜歡自己悶頭搗鼓,什麼也不問,這必然是不利於自己提高的;
- 也有人碰到問題就問,這也有問題,浪費他人時間不說,更關鍵的是說明這人向他人學習的思路錯了,要學習他人的並不是具體某個知識(要學知識看書就能解決了),而是學習別人的思維方式。
但是思維方式這種東西很難通過交流的方式學到,後來我發現有個很簡單的學習方式:口頭禪。舉幾個例子,大家體會一下:
「這個其實是兩個問題」
「有沒有更好的方案」「能不能舉個例子」「能不能給個一句話總結」除了口頭禪,很多牛人都會有非常鮮明的思維方式和處事原則,如果有幸與業界的大牛共事,那麼恭喜你,只要多交流、多觀察、多思考,那麼提升速度會提升好幾個數量級。
多做有意義的事情有的人每天時間浪費在跟問題本身無關的事情上,比如我要設計架構的時候還要考慮架構圖怎麼畫,寫完代碼還要反覆部署測試好幾輪才pass,查bug的時候把時間浪費在掃日誌上。人的精力總是有限的,把時間浪費在這些事情上面,讓自己提高的時間就變得少了。
練習,更多的練習這裡有個誤區:「做有意義的事情」不等於「只做自己沒做過的事情」。
對於程序員來說,寫代碼是基本功中的基本功,編碼的規範、設計的權衡、甚至順手的IDE快捷鍵都要靠平日的試錯和積累,很難通過幾本書或者幾天培訓領悟到。
曾經目睹一些人寫代碼一年之後開始做一些小項目的設計,然後就迫不及待的把重心全都轉移到設計甚至架構上,這種沒有基礎能力支撐做出的設計和架構最多只能算是高級意淫,大多沒等落地就荒廢了,意義不大。究其原因,大多是設計出來的東西「不好做」或者「不好用」,就像是只看過一遍課本就去參加高數考試,現實嗎?
舉個例子,幾年前在看設計模式的過程中,用qt做了個看漫畫的應用,把能用的模式都試了一遍,當然有很多用的不合適的地方,正是這些不合適的地方讓我對面向對象編程和設計模式的思考深入了很多,如何權衡靈活性和複雜性也有了新的認識。之後在設計很多系統的時候少走了很多彎路,既保證了時間點又保證了質量。如果當時指望著「用的時候再說」,大概已經被項目坑的不能自理了。
善用工具工具能解決的事情就用工具去解決,好的工具能節約大把的時間用在更有意義的事情上。
工具的範疇很廣,比如linux的各種命令、比如團隊內部的各種系統、比如順手的應用、甚至包括上下班騎的自行車。只要能節約時間、提高效率,那就值得一試。
在這裡我列舉幾個大幅度提升了我的效率的東西:
- 雙屏顯示器
- 順手的鍵盤
- google(不是baidu!不是bing!)
- mac
- mac上的應用:idea、alfread、omnifocus、甚至synergy和istats menus之類跟開發本身關係不大的應用。
我更傾向於把「使用工具」作為一種生活態度:是否希望讓自己的生活專註於有意義的事情。如果你認同這個觀點,那麼想一想投入和回報比例,還是很可觀的。
更多的時間時間是所有期待提升自己的人最寶貴的資源,效率再高,沒時間做也沒意義。
網上有個流傳挺廣的圖:打擾程序員的成本。事實上我每天的工作時間非常碎片化,來到公司之後可能不斷的接電話、被問問題、被拉去開會、回復郵件等等;也經常會有時間不夠用或者沒事做的困惑,這裡分享一下心得:
- GTD可以整合很多碎片時間。除了把事做完之外,把上下文相關的事情集中在一起完成也很有幫助。比如把幾件想去其他辦公室做的事情整合成一趟完成。
- 減少無意義的時間浪費,比如家住在公司邊上可以每天節省幾個小時的時間用來學習或者做別的事情。(但如果節省下來的時間用來刷微博,那就沒有必要了。)
- 另外一個很有趣的現象:一個軟體的註冊費就10幾刀,貴些的幾百刀,把日常用到的所有工具的費用全加起來都頂不上一個腎6貴,但是很多人還是堅持著沒有破解不用的觀念,為了幾百塊錢浪費了大把時間。
- 加班可以創造很多時間,並且能有效減少被打擾的幾率,但是也會給身體和精神帶來很大負擔。因此加班做的事情必須能對個人進步產生足夠多的收益。如果加班只是用來處理無意義的工作的話,那應該是日常工作出了什麼問題。
- 事情可以分成緊急重要、緊急不重要、重要不緊急、不重要不緊急四類,在todo列表裡隨時要有重要不緊急的事情。
學會思考深究
當有什麼問題解決不了的時候,很多人會有畏難或者拖延的情緒,典型口頭禪就是「就這麼湊合著用吧」或者「先這樣吧,以後有時間再研究」,說這些話的人大多並不是真的那麼忙,甚至有人一邊刷著微博一邊跟我說沒時間研究……(你tm在逗我?)
要克服畏難情緒其實很簡單,找一個具體的似懂非懂的問題,想盡辦法把問題研究清楚,體會幾次解決問題時的愉悅感,建立自信。
大部分問題其實沒有什麼高深的科學原理,甚至只要翻幾頁書就解決了,但是遇到問題不深究,久而久之會形成自我暗示:這些問題是我懂的,那些是我不懂的,自己反而把自己進步的路給堵上了。
說到如何深究,也有幾條心得:
- 遇事多想為什麼,並且要反覆問為什麼。很多貌似理解了的問題過一陣再重新想想,往往會發現之前還有沒考慮到的地方
- 問題要有明確答案,哲學之類的就別糾結了
- 查找資料時選權威的書籍或者網站,避免被誤導
- 找人討論,或者直接拉小夥伴入伙,既可以互相交流,又可以互相監督
- 分享你的成果
- 不要所有事情全都深究,會給自己太多壓力
多說,多寫,多交流
平常工作中有一個感受,有交流和寫作習慣的人思路會更清晰一些,能接觸到的觀點也會多一些。這方面其實屬於我的弱項,大概總結幾個觀點。
- 隔一段時間最好能書面形式總結一下最近的工作,比如說寫個心得感悟,或者持續更新自己的簡歷
- 寫作的時候有兩個難點:對要說明的事情做總結和抽象,形成觀點統一、調理清晰的主線;從對方的視角考慮,把事情說明白,避免自言自語。
- 找人討論之前自己先要有個基本完整的思路,否則大部分的時間都要耗在解釋原理之類的上網查反而更快的事情上。
- 討論之後要有一句話就能說明白的結論和描述清晰的時間點。
- 有些人喜歡糾結於「這個不是我的問題,為什麼要我處理」之類的事情。在我看來這是很好的機會。既能增長見識,又能展示水平,還能留個認真負責的好名聲,何樂而不為呢。
最後
最後分享一下關於我理解的程序員的自我修養,在我看來,可以總結為:負責任,重名聲。
負責任,說的更具體些:寫的代碼自己有沒有測過、做的框架自己有沒有用過、設計的架構自己有沒有認真權衡過。
重名聲,說的直接些:沒有測過的代碼、沒有用過的框架、沒有權衡過的方案有沒有臉交付給別人。
與各位共勉。
沒有隨隨便便就能成大牛的。不努力就說不努力。
我觀察了幾年,發現大牛們是learn by interest,小兵是learn by demand,如果工作中用不到,就不會主動去學。
推薦一位IT精英的博客,博客地址:
- zhuweisky - 博客園
做技術是需要匠心的。什麼是匠心?我們原本是有匠心的,我們如今還有匠心嗎?我們為什麼沒有匠心了?為什麼我們要重拾匠心?如何重拾匠心?
一. 做技術是需要匠心的中國古時的玉匠,切磋琢磨,用繩與砂漿,費數十載心力,終將渾然璞玉製成傳世珍品,千年遺音在,猶見當年寂寞心。
日本傳統的刀匠,將千錘百鍊之鋼反覆鍛鑿、淬火、打造、磨製,每一處技至精微,每一處心入幽明——刀中有魂!
歐洲中世紀的石匠,在哥特式教堂的飛檐上雕刻出了靈獸狀噴水嘴,雖不為世人所見,仍一絲不苟——每一鑿中都有天堂!
米蓋朗基羅花四年雕刻出了震驚世人的《大衛》,曹雪芹批閱十載創作出了藝術巔峰的《紅樓》——任何偉大的作品背後都有一顆匠心。
二. 什麼是匠心?匠心是對於作品而言的。
匠心是傾注於作品之中的精神、情感、乃至魂魄。
匠心發自於愛,是對作品視如己出的拳拳之心,是恆久忍耐又有恩慈。
匠心是出於這份愛的對於完美的追求,是追求中不避艱苦,是追求中自得其樂。
匠心是涵泳在作品之中的自我實現,是我與作品的相互完成,彼此造就。
在匠心看來,作品是我的至親之物,棲居著我的精神,安放著我的靈魂。
匠心即是愛心 + 恆心 + 一片苦心 + 七竅玲瓏心 + 出離心 + 寂寞心 + 金剛心 + 歡喜心 + 其人雖已歿,千載有餘情。
三.我們原本是有匠心的我們原本是有匠心的。
當年Ken Thompson 和 Dennis M.Ritchie 一起在貝爾實驗室里苦心孤詣。
如今,沒有人不知道Unix意味著什麼,C意味著什麼。
他們的匠心也彰顯在Unix和C中令無數人為之驚嘆、感懷。
四.我們如今還有匠心嗎?如今,我們再也難得見到「作品」問世。
甚至於「產品」也是少見。見得最多的則是「商品」。
對於我們而言,做什麼東西並不重要,重要的是做這個掙不掙錢。於是我們沖著掙錢做了各種項目,C/S、B/S、前端、後端、資料庫、Java、.Net、安卓——彷彿無所不知,無所不曉,十年之後回首,覺得自己已然是全才。
我們從事了大量的勞動,寫了幾十萬行代碼。我們的工資越來越高,並為此沾沾自喜。
可是,這樣的成就,無非是一個熟練工人的成就。
我們何曾擁有匠心?
五.我們為什麼沒有匠心了?隨著大生產時代的到來,那種田園詩般的男耕女織、帶月荷鋤歸的工作方式,早已一去不復返。社會分工越來越細碎化,我們面對的是一個又一個的局部。在這之中需要的是規格化、標準化、量化和同質化。換言之,你所做的工作必須是合乎統一規範的,具有統一規格的單元,如此才能拼接到整體的工作中。因此,任何的創造性,任何私人性質的感情和精神的注入,歸根到底,只是錯誤的根源。 ——我們於何處安放匠心?
如今,商品成為了一切物所具有的普遍的形式。沒有什麼不是商品。商品是以交換為目的的。我們生產任何勞務、產品、或服務,都是為了交換,為了換取一般等價物,即貨幣,即金錢。因此,錢成為了衡量一切的準繩。如今不乏偉大的商品誕生,可是偉大的作品卻乏善可陳。商品需要的是批量生產,需要對消費者投其所好,當然商品也需要創意,可是那不是匠心!在一個由商品拜物教統治的時代,我們於何處安放匠心?
世界如此繁華,匠心未免太奢侈了!我們在喧嘩與騷動中度日,有太多的追求,太多的比較,太多的你追我趕,太多的惶惶終日。每天有看不完的新聞,刷不完的微博,做不完的手頭工作。我們為無盡的事情發愁,疲於奔命。匠心未免太奢侈了!早在我們出生的那一刻,我們就開始照著大家來活,大家都在讀書,大家都在考學,大家都在找工作,大家都在結婚,大家都在買房,大家都在炒股,當我們跟著大家忙忙碌碌的時候,匠心自始就已沉淪!
六.為什麼我們要重拾匠心?假使我們沒有匠心,我們將不會在工作中獲得真正的快樂。因為我們不能自覺自由地工作,我們的工作是boss定義的,而不是自己定義的。如此一來,我們就與我們的勞動之間切斷了血肉聯繫。我們的勞動成為了壓迫我們、奴役我們的異己力量。我們淪為被迫勞動。我們真正的生活在下班之後開始。我們不停地抱怨:要不是為了幾個臭錢,我才不要干這些。如何才能回歸到那種田園詩般的勞作之中——我們必須重拾匠心!
唯有在擁有匠心之後,我們才能走向真正的自我實現。馬斯洛將人的最高層次的需求定義為自我實現。一個自我實現的人,一個將自己的才能發揮到最大限度的人,才是那個獲得最大心理滿足的人。現實生活中唯有少數精英才能夠成為自我實現人。但是這並不妨礙我們追求自我實現。一個有著庸碌之心的人,是不可能走向自我實現的。唯有重拾匠心,我們才能佔有工作的全部意義,才能不避艱苦、精益求精,與自己的作品相互完成,彼此造就。
七.如何重拾匠心?對於如何重拾匠心的問題,恐怕要留給每一個人來思考。而且是一個需要始終思考的問題。
在這裡我並不想給出答案。
只希望能在這篇文章中能夠看見你,看見我,看見大家。
能見眾生便是如來,不易匠心方得始終。
參考閱讀:
程序員的出路之一——————————————————————————————————吹就可以了
大牛算不上,算個小牛吧,可以參考我在CSDN的專訪:
專訪李運華:程序員如何在技術上提升自己提煉一下就三個:1)興趣:如果對編碼沒有興趣,僅僅只是為了糊口,無論如何都成為不了大牛。沒有興趣,編程就是敲鍵盤的枯燥工作;有了興趣,編程就是探索、學習、提升、創造的工作。問問自己:你會為了看一本《UNIX編程藝術》而不去看一場《速度與激情7》么?你會為了思考一個問題,晚上失眠到凌晨4點么?你會每天抽1小時去寫代碼,而不是打遊戲到深夜么?當別人在朋友圈曬又到哪裡旅遊了,你能淡定的在家花4小時寫一篇博客么?。。。。。。2)堅持:編程的方向好多,前端、後端、嵌入式、內核。。。。。。在一個方向持續夠長時間,才能成為這個方向的大牛,10000小時理論,編程領域同樣適應3)方法:編程要學的東西太多了,沒有好的方法,會事倍功半;有的好的方法,事半功倍我的一個同事對編程很熱愛,然後有一天他問我:他感覺很迷惑,原因是因為他看編譯原理看了6個月感覺毫無收穫(註:我們是做後台應用的)!我問他你為什麼要看,他說大家都說這個是基礎。。。。。。關於這個問題,我就不在這裡啰嗦了,參考我的另外一篇回答:怎麼成為一個優秀的程序員,而不是一個優秀的碼農? - 李運華的回答那些跟工作和學校都無關的代碼沒寫過10萬行就覺得自己是大牛的,都是吹的。
當然了,到了10萬也不能代表什麼,你也可以賺外快把一個網站寫10遍是不是,這也沒有用。學好英語,學好數學,和女朋友分手。
1 本人悟性比較低,工作八年才入門。
2 別看他人多風光,要看青絲剩幾縷。
3 怕什麼真理無窮,進一寸有一寸的歡喜。
每當一個中國孩子問怎樣成為XX高手的時候,他就像是在問哪個商店能買到最新款的電動一樣。
承認智商碾壓是真實存在的就好了。記得以前看過一本書開篇專門為題主這種寫了一段,大意是,有些天才像 Bill Joy 可以在一杯咖啡的時間裡寫出一個進程調度演算法,而我們普通人就老實點,好好學習反覆練習吧。
天才之所以被稱為天才,是因為天生有才,我輩凡人是羨慕不來的。不要盲目:人人都在看spring源碼你就要看嗎?不要去看,因為即使看了,你的感覺也就是,你看,我和你們水平其實一樣嘛!以別人幹什麼自己就去幹什麼,這樣會很被動,很無趣。
不要投機:面試問什麼就去看什麼嗎?那樣我會感覺很不爽。投機去做的事情,得到的也是皮毛,頂多也就是能去這家面試公司工作,並沒有對自己技術和能力有所實質性的提高。而且做技術的最要不得的就是投機。不要自卑:是不是別人會說,不去看大數據,大型分散式的框架,而去整這麼淺顯的東西?因為越自卑,越不自信的學習,只能越學習越迷茫。不要迷戀技術博客:某某寫的博客瀏覽量多少多少,把自己寶貴的時間花在看人家的博客上。這樣做是不明智的,吃人家嚼剩下的雖然也可以果腹但多會營養不良。自己從代碼中尋找答案吧。能力絕對不是看人家博客培養出來的。從自己的興趣出發,因為是自己喜歡做的,所以不會被任何事任何人影響!比如當你使用redis的時候,你有沒有想知道這玩意兒底層是幹什麼的衝動?!那麼接著這種好奇心,fork下redis源碼吧,到底看看他如何實現的,哇,是用c語言實現的,你會有種學習c語言的衝動。那不正好嗎,去鑽研下c,你會發現c語言真的很牛逼,而且你還會接觸到kernel方面的知識,socket是怎麼弄的?kevent是如何監聽的?你又能彌補linux內核方面的知識。此時你還可以去stackoverflow看看其他人使用redis有什麼問題,比如redis如何提高查詢並發量?使用主從提高並發性查詢。看看redis主從怎麼搞得,去源碼中找答案吧。當你找到答案,毫不吝惜的answer他。哎?!其他Nosql資料庫跟它比有優勢和不同呢?興趣,強烈的求知慾,不滿足現狀,樂於幫別人,使你能越來越堅定,自信的走下去。just do what you wanted!(突然想拽下英語。。見諒)慢慢的你會發現,沉澱下來,你和別人不一樣了。往往問怎麼成為XX的時候,你就離成為XX的路上越來越遠了。通俗點說:就好像想去海邊,你離近了大海能聞到海腥味,你自己是知道的。你走錯方向,走在沙漠上問怎麼聞不到海腥味呢?所以別想別問了了,該幹嘛幹嘛吧。
還是讓自己成為一個牛逼的人,每天想著這個,,,讓生活變得有趣,其他的賤人賤事兒都滾蛋吧。