1. 程式人生 > >漫談程式設計師系列:怎樣成為技術達人

漫談程式設計師系列:怎樣成為技術達人

作為程式設計師,身邊總是有牛逼的前輩、後輩或者同輩。牛逼的人總是讓人羨慕。比如自己苦搞一天的 BUG ,頭髮快抓掉完了,人家掃上兩眼,改一行程式碼,問題就解決了;比如自己幹了十年開發,薪水還不到 10K ,人家才畢業就簽了 16K 的合同;比如我要天天辛苦加班工作還幹不完,人家嘛事兒不幹每天就喝喝咖啡,結果寫出來的軟體居然比我的穩定多了好用多了。這樣的事情太多太多,怎麼辦?

陳勝起義時說:王侯將相寧有種乎!

作為程式設計師,面對牛逼的同類,其實我們也可以憤而追之:大丈夫當如是也!

有夢想有追求總是好的,關鍵是,如何才能牛逼起來耶?

程式設計師的分類

早上翻看陸其明陸老師翻譯的Jeff Atwood的書《

高效能程式設計師的修煉》,裡面有一篇文章,名字是《程式設計師的八種境界》,講得很好,受益匪淺。不過我打算從另外一個角度為程式設計師分一分類。

來自古老的儒家經典《論語》的說法:

生而知之者,上也;

學而知之者,次也;

困而學之,又其次也;

困而不學,民斯為下矣。

博主魯鈍,不知道誰能生而知之,我本人是困而學之,而後學而知之。一切從自我出發,竊以為困而學之、學而知之這兩類,都可以牛逼起來。有興趣的話,可以評估一下自己是哪種型別的。

10000個小時法則

邁阿密大學的 AndersEricsson 教授寫過一篇論文——《有目的的訓練在專業人才培養中的作用》(The Role of Deliberate Practice in the Acquisition of Expert Performance),介紹了他在研究“最好的音樂家”有什麼共同點時的發現:卓越的音樂家的練琴時間,沒有一個人小於 10000 小時。

2008 年,暢銷書作家 Malcolm Gladwell ,將這篇論文寫進了他的新書《異類:成功人士的故事》(Outliers: The Story of Success)。

Malcolm Gladwell 概念化了原始論文的結論,宣稱存在一個“ 10000 小時法則”(10000 hour rule),即成功至少需要 10000 個小時的投入。

你造嗎,這本書出版後,成為《紐約時報》暢銷書排行榜的第一名。

10000 個小時法則背後的思想是:真正決定一個人成就的,不是天分,也不是運氣,而是嚴格的自律和高強度的付出

看到這裡你可能以為博主扯淡又扯遠了……其實不是的,剛開始而已,真正扯的在下面。

我想很多人看過古龍大師的《邊城浪子》,裡面的主角是傅紅雪,傅紅雪的絕技是拔刀術。我靠,簡單吧。蒼白的手,漆黑的刀,刀過人亡,血還沒見著刀又還鞘了。這就是傅紅雪的拔刀、收刀之術,關鍵在一“快”字。天下武功,唯快不破。傅紅雪的刀,已超越了速度的極限。

可是你造嗎,傅紅雪是癲癇症患者,資質也僅僅是中等,比起葉開,那是差了一大截,比到處留情的楚香帥,也差了一大截。關鍵是,傅紅雪永遠看著都那麼苦逼:在蒼茫的關外,握著刀,拖著腿,揹負著於己無關的血海深仇,在“一入萬馬堂,刀斷刃,人斷腸”的歌聲裡尋覓不是仇人的仇人。

這下扯大發了,其實我想說的是,撿來的孩子傅紅雪,資質平庸又身有殘疾,結果卻煉成了舉世無雙的刀法,其祕訣非常之簡單,賣油翁一言概之:無他,惟手熟爾。要知道,傅紅雪被不是媽媽的媽媽每天逼著練一本殘缺到只有拔刀式的白家刀法,苦逼地每天拔刀兩千次以上,拔了十幾年,你試試,要是你拔刀拔十幾年,不瘋掉的話肯定也能煉成個無影刀什麼的。

傅紅雪是另一個 10000 小時法則的例項。

我們來對比一下帥到一塌糊塗的鐘漢良版的傅紅雪與老派功夫帥哥狄龍的傅紅雪:

再來一張:

我很喜歡狄龍的扮相,鍾大帥哥嘛……

愛是眾妙之門

我在前面介紹了“ 10000 小時法則”,當然那只是一個必要條件,不是充分條件。我以為要想讓 10000 小時法則有效,還有一個條件。

安·蘭德說過:

為了將事情做好,首先你得喜歡做這件事,而不是喜歡這件事情的結果,那僅僅是第二位。

想牛逼的程式設計師,不能僅僅盯著一個專案幹完後的獎金吧,也不能老想著忙過這陣子就可以休息了吧,也不能盼著應用能 Run 就交差了吧……也不能老想著我學了 Scala 就能拿到 20K 的薪水吧……

牛逼的程式設計師很多是醬紫的:喜歡幹,幹得牛逼了,收益來了,機會多了。

要說你不喜歡一件事情,有時被逼著也能勝任,但要說你討厭一件事又能幹得出類拔萃,那我不相信,最好你也別讓我相信——我懷疑你早晚有一天會人格分裂。

偉大的科學家愛因斯坦(晚年研究神學)說過:“興趣是最好的老師。”這就是說,一個人一旦對某事物有了濃厚的興趣,就會主動去求知、去探索、去實踐,並在求知、探索、實踐中產生愉快的情緒和體驗,而這種愉快的情緒和體驗反過來又會促使他繼續去求知、探索、實踐。這樣就產生了良性迴圈。“成為達人”的欲求就會推動著你不斷前行。

你愛程式設計,享受做設計、寫程式碼、解決問題的過程,再遵循 10000 小時法則,那你想不牛逼都難啊。

牛逼的方法論

前面是開胃酸湯,現在到正題了,我們來聊聊一個程式設計師,要如何才能一步一步慢慢牛逼起來。

編碼

毫無疑問,你必須得編碼,持續不斷地編碼,要達到一定的量。

量變會引起質變,但不是必然。

持續編碼的結果有兩個,一個是達到質變,水平不斷提升;一個是重複重複再重複最終麻木。

要哪個?

回顧與思考

要想質變與提升,必須有目的地停下編碼!

只編碼,不走心,那是萬萬不行的。不走心的程式設計師很多,幹多少年了水平還和初干時差不多,十年如一日。走心就不一樣,走心一日如十年。

我們要週期性的回顧自己,看看以前的程式碼,分析下現在的設計,看看哪些可以改善,有多少種改善思路……這樣就能看出以前的自己與現在的自己這兩者之間的差距。如果你覺得自己以前的程式碼是翔,那恭喜你,你絕對提升了不少。

要回顧以前,還要分析現在。程式設計師還要經常梳理一下自己的狀態,看看我現在都掌握了什麼技能,在哪些方向和領域有所成就,再加上對過去的回顧,看看哪些是延續性的前進,哪些是無心插柳,哪些是冤枉路,哪些是意外之喜。這樣就會對自己的能力邊界有所瞭解,知道自己知道什麼,也知道自己不知道什麼,更重要的是,你會發現自己能把什麼東西學好用好,還能發現自己為什麼可以把這些東西學好,那樣你就可以找到自己擅長的方向,做得更好。

回顧了以前,分析了現在,還要想想將來。在技術上,我要在哪些方向繼續前行深入挖掘?這點非常重要。我們佇立現在,回首過去,仰望未來,這是上山的姿勢啊。哈哈,上山好啊,值得期待的只有前方。

有人說上到山頂就只有下山嘍……那,這也是真的,不過,顧城有首詩《避免》可以看看:

你說

你不愛種花

因為害怕看見花一片片的凋落

所以

為了避免一切的結束

你拒絕了所有的開始

作為有追求的程式設計師,我們不必這樣擔心吧。只管積累我們的 10000 小時去,只管思考如何有效地利用這 10000 小時去,不但過程是美麗的,將來也會是美麗的。

多學一點點

臺上一分鐘,臺下十年功。那些牛逼的程式設計師,無一不是付出了比普通程式設計師更多的精力。

我們在開發時,會接觸各種各樣的新技術。有時因為專案時間原因,很多技術只能是走馬觀花的用,解決問題為目的,專案結束了可能就扔一邊兒去了。但要想讓自己有更大的成長,那我們就應該學多一點,用一分學兩分,廣裡一分,深裡一分,不能不求甚解一帶而過。對於用過的技術,最好在當時,專案的間隙或者專案結束時,抽時間瞭解它的背景、長處、機理,讓自己對用到的技術都有相當程度的瞭解。惟其如此,我們的知識面和技術深度,才會隨著開發經驗而不斷遞進。

實踐新技術

選擇或者學習一門新的技術,必須要實踐。可以把它應用到工作中的專案,如果工作條件限制,那也要自己定義一個自己喜歡的專案,堅持使用你的新技術做下來。唯有實踐,你的新技術才能理解得更為深刻。

知道有那麼一門技術,與實際使用過,其間的差異可不止一點。

溝通

很多人覺得程式設計師比較難溝通,說程式設計師不會好好說話……你覺得呢?

我想說的是:要想成為牛逼的程式設計師,溝通一定要過硬!

程式設計師是幹嘛的?不是寫程式碼的,而是解決問題的。

解決問題才是程式設計師的職責

要解決問題,離不開溝通。

客戶會找你,市場會找你,產品經理會找你,UI設計師會找你,開發同事會找你,測試妹妹會找你,老闆也會找你,女盆友會因為你的投入與執著愛上你也會在愛上你後因為這些而不斷與你爭執……

哪一樣離得開溝通呢?

當然我不是說程式設計師要像銷售、市場、營銷等等崗位的兄弟姐妹們一樣妙語生花,其實溝通最重要的是能聽懂別人說什麼,能把你想說的以對方能理解的方式說出來。至於是妙語連珠還是磕磕絆絆,是語言溝通、眼神溝通還是書面溝通,只要達到目的即可。

有人說我天生不愛說話,跟機器打交道才覺得踏實。其實這沒關係,你要找到自己的溝通方式,看怎樣才能讓別人理解,也調整自己的聆聽和理解方式,看怎樣才能理解別人說的話。

怎樣才能讓別人正確理解你的話,怎樣你才能正確聽懂別人的話,這都需要不斷的學習、練習,這方面有很多的書啊視訊啊,可供參考。這沒什麼不好意思的啊,我認識一些朋友,覺得學習說話技巧是很不好意思的一件事兒,好像這樣做就說明自己心懷鬼胎就多丟人似的。其實不必,我們的目的不是巧舌如簧地騙取別人的信任然後來謀取利益,我們的目的很簡單,就是讓別人理解我們也讓自己理解別人。

理解溝通模型

溝通這事兒真是一門學問,雖然我在這方面一向魯鈍,還是想以我們程式設計師的方式,打個比方來說明一下溝通模型。

首先每個人心裡都有一個 TCP Server ,監聽到某個埠上,等待陌生人或者熟人或者半生不熟的人來訪問。

其次呢,不同的人對自己的埠是否開放持不同的態度,OPEN的人就會監聽到知名埠,比如80、21、7、13、22、23等等,這樣別人就知道我們找這個 OPEN 的傢伙說事兒該連線哪個埠。當然,只開放埠還不夠,靈慧的人還會慢慢把自己的協議 SHOW 給別人,這樣想找他聊天的人就可以遵循這個協議來說,事情就容易多了,雙方就都能理解。

還有一些人呢,比較內斂,雖然內心很飢渴,希望別人找自己聊聊天談談心,可是不知道怎麼把自己的埠開放給別人,或者出於某種原因隱藏了埠。比如他本來是監聽到 21 埠上,走 FTP 協議,因為被別人通過埠掃描的方式黑了兩次受了點不大不小的傷害,就小心地封掉了 21 埠,把自己的服務挪到了其它埠上,並且也不告訴別人。這就出問題了,別人找不到埠號,怎麼和你溝通咧……

還有一些人呢,自己也不知道該監聽到哪個埠上,不能有意識的訓練自己,今天是 21 ,明天就 80 ,後天又走 37 了,結果不但自己混亂,跟他打交道的兄弟姐妹們也混亂:昨天這麼說還挺融洽,今天再這麼說他居然翻臉了呢!

這是我們每個人內心的 TCP Server 。其實每個人還有一個 UDP Server ,是為那些夾生的人或者擁有特別標籤的人準備的。你可以知道我的 UDP 埠,但是你發訊息過來我就不一定搭理你,被拆穿了我還可以說 UDP 協議不可靠,我沒收到……。這兩個 Server 就是我們每個人身上基本的溝通模型。

最後呢,如果你要想向別人說明你的意圖並讓別人按你的意圖去做某件事,那就要花費精力去研究如何找到對方監聽的埠、使用的協議。和 OPEN 的人溝通比較容易,訪問 80 埠,走 HTTP 就行了,或者夜半三更翻薔過去幽會也能成。而針對那些隱藏了埠和協議的,就要啟用埠掃描這種神器,掃到埠,再抓包分析協議,成功的可能性總是有的,只不過費些力氣罷了。

用這種模型來解釋現實生活中的溝通問題,程式設計師們就可以釋然了:啊哈,原來我給他說的事兒他老不反應,是搞錯了埠或者走錯了協議。

表達自己

理解了溝通模型,找到了對方的埠和協議,還有一個問題需要解決:你怎麼準確地表達你的意圖。

對於相當一部分程式設計師,這是個難題。有的人本身就寡言少語(我是這類的);有的人很厲害,與別人說話時腦子轉得比別人快幾倍,腦子裡轉的是長長的帶上下文的句子,從嘴裡出來後就成了嘎嘣脆的詞語,還以為自己說過了別人都能理解;有的人寫程式碼一二三四條理清楚,說話時就比較發散,正說股票呢忽然就轉到APEC藍上了;有的人比較羞澀,大男人說話卻聲若蚊蠅……總之各類情況都有,你見到的絕對比想到的多。

不管你屬於哪一類,要想能順暢地與人溝通,先要訓練自己,讓自己可以準確地表達。

我是不會表達的人呢,你看我洋洋灑灑長文千字,其實我不大會說話。不過我要說的是:如果你說不好,那就想辦法先寫好。

“寫”這個事情,比說更容易讓人條理清楚,因為寫這個過程時間相對寬鬆,上下文簡單,不像與人溝通那樣你來我往還要時刻注意話外音整個過程比較複雜。所以,寫,是一個很好的鍛鍊自我表達的手段。寫作能訓練你表達的準確度。

你可以通過寫部落格,寫日誌等等手段,把自己的想法表達出來。然後呢,過一段時間,你能通過寫作來表達自己的了,再回頭來影響說話,你把嘴上說的當作紙上寫的,多練習練習,就能準確的表達自己的意圖了。你看人家領導人講話還需要先打打草稿呢不是,更甚之的還有念稿子的。

找到你的小夥伴

程式設計師乾的是技術活,找到一個談得來的小夥伴很重要,可以相互促進,消除登頂路上的寂寞。

胡一刀和苗人鳳就是好夥伴,兩人經常切磋,水平都很高。

可能你需要在不同的階段找不同的夥伴,最好是找某方面比你牛的人一起研究技術,這樣可以學到東西。

或曰:牛人為毛要搭理我撒……

在你所有的能耐中,至少應該有一樣是拿得出手的。不會做很多事情並不可怕,可怕的是沒有一件事情能做好。

要培養自己在某方面的長處,這樣就可以互補嘍。

其實有相當一部分程式設計師離職的一個原因是:在這個公司真的太寂寞了,都找不到一個可以討論技術相互促進的人!

分享

這個,真的很重要,千萬別掖著藏著,對待向我們求助的兄弟姐妹,要像春天般的溫暖……

此處略去5w字……

———–回顧分割線——————-

相關推薦

漫談程式設計師系列怎樣成為技術

作為程式設計師,身邊總是有牛逼的前輩、後輩或者同輩。牛逼的人總是讓人羨慕。比如自己苦搞一天的 BUG ,頭髮快抓掉完了,人家掃上兩眼,改一行程式碼,問題就解決了;比如自己幹了十年開發,薪水還不到 10K ,人家才畢業就簽了 16K 的合同;比如我要天天辛苦加班工作還

漫談程式設計師系列那些害死程式設計師的細節

    這次,我們不談權術,不談潛規則,不談技術,不談理想,咱們就來說說那些害死人不償命的工作細節。姍姍來遲    遲到是件小事兒,是吧。    很多人都這麼想,我上學時也渾不在意這個問題,80%的課連去都不去。    可這真是大事兒,天大的事兒。    遲到,首先反應的是你

漫談程式設計師系列請區別對待女程式設計師

寫下這個標題,真有點擔心被罵“作死”,戰戰兢兢如履薄冰……不過,如果你打算拍死我,請:冷靜三秒先!根據統計,在程式設計師這個群體中,大概有 20% 左右的女性。很不少了吧,也許有些阿猿說沒見身邊有幾個女人幹開發啊,哦,我要說,那一定有些阿猿身邊奼紫嫣紅。不扯了,咱們討論正題兒

漫談程式設計師系列無BUG不生活

    我決定談一談世界上最著名的蟲子:BUG !    BUG 困擾了一代又代的程式設計師,不論是傑出的電腦科學家,還是像 Linus Torvalds(Linux核心創始人) 、Bill Joy(傳說三天寫出BSD的前身,vi和csh的作者)等神一樣的傳說,抑或你我芸芸程

漫談程式設計師系列3D列印能打印出程式猿嗎

首先宣告,本文是一本正經的胡扯,絕不是隨隨便便的胡扯,請您不要隨便攻擊我胡說八道,我要重複星爺在《喜劇之王》裡的臺詞:其實,我是一本正經的噴子。 3D列印的定義 關於3D列印,下面是來自百度百科的解釋:     “ 3D列印,即快速成型技術的一種,它是一種以數字模型

漫談程式設計師系列群星閃耀的黃金時代

X電總局在2014年年中突然發飆了,把七家牌照商痛打了一頓,後來又把視訊網站往死裡玩兒了一把,大大過了幾把官僚癮。這時候我忽然想到豪傑超級解霸,那可是98年上大學時的最愛,當時學校還沒有網際網路,東洋和香港的誘惑很大,一群光棍的看碟需求很強烈,超級解霸啊,視訊播放江

漫談程式設計師系列程式設計師零門檻?

六個小故事,一一來看。 博主從技術支援轉做開發 2005年3月份我決定辭去技術支援工作,轉行做軟體開發。大學時我曾經學習過PASCAL這種程式語言,但和程控交換機打了幾年交道之後,PASCAL早已灰飛煙滅,渣都找不到了,而且我孤陋寡聞,也沒聽說哪個軟體公司用PASC

漫談程式設計師系列一個老程式設計師的2014年終總結

人生天地之間,若白駒過隙,忽然而已。驀然回首,頭上似霜雪,臉上似山川。我的 2014 啊,你就這麼毫無眷戀地離我而去了。既然往事已不可追,未來尚未到來,在這年末歲首的間隙,就讓我來回憶一下餘煙尚存的 2014 吧。 2014 年,對我而言,發生了很多事,不管怎樣,我

漫談程式設計師系列誰是為加班而生的

有一個問題經常在面試的時候被問到:對於加班,你怎麼看? 大家都知道 IT 行業加班很多,不加班的公司風毛麟角。很多公司都是加班出了名的,比如X為,X米……還有很多公司的老闆認為自己的公司之所以業績不行,就是自己的員工不能像別的公司那樣加班……切,這都什麼邏輯! 你

漫談程式設計師系列找工作的辟邪劍譜

我原來面試過一個哥們兒,半年內換了七家公司,我表示膜拜。 還有一些哥們兒,七年不換工作。這得是多穩定的工作啊,七年之癢都扛過去了,真心不錯。 這都是極端,一般的程式設計師,可能會一年半載或者三兩年換一次工作。在一個公司幹上老多年老多年的程式設計師,不是成了大牛公司

漫談程式設計師系列軟體開發的十八般樂趣

有人說我在傳遞負能量,看了我的“漫談程式設計師系列”感到了前所未有的彷徨與迷惘,哇哦,這不是我的初衷,我只是給你看真實的世界,真的勇士,敢於直面慘淡的人生與淋漓的鮮血。 有人說我在黑程式設計師,好吧,我是不憚以最壞的惡意來揣測別人的,是嗎?當然不是,我胸懷一顆善良慈

漫談程式設計師系列千奇百怪的程式設計師

幹開發時間長了,遇見好多好玩兒的程式設計師。 看看你躺槍了沒。 留一手 有個哥們兒,在一合資公司做程式設計師,能力挺強,寫程式碼很神的。 他的程式碼我看過,深得 MFC 的精髓:大量的巨集,很多函式就兩三個巨集,一個BEGIN_XXX,一個END_XXX,中間再夾

漫談程式設計師系列程式設計師到底是什麼角色

先講個生活小插曲兒…… 瓦工 房客打電話給我,說衛生間漏水,把樓下的客廳都洇溼了,老先生找上門來了。這還了得,趕緊處理吧。我找了人拆掉了浴缸,砸掉了地板,買了東方雨虹的防水塗料,自己做了防水,閉水試驗,剩下就是貼瓷磚了。貼磚是個技術活兒,很專業,我是程式設計師,雖

漫談程式設計師系列別說“我已經很努力了”

我們程式設計師的努力與掙扎有時非常尷尬,如果沒有結果,都是徒然,都是說不得說不得…… 我自己做專案經理時,乾的專案也經常延期……非常慚愧。而延期其實對研發團隊成員、產品線、市場、銷售、公司領導、客戶、使用者都是一種折磨。對其它人的折磨這裡就不說了,誰被虐誰知道,至

漫談程式設計師系列程式設計師該不該考慮初創公司

    IT 這個行業,最不缺的就是機會,追逐機會的,有各種各樣的小公司,也有各種種樣的程式設計師。 創業公司 每一個出來創業的人,心中都充滿了希望和夢想,而且認為自己眼光獨到,手段高超,一定能夠逐浪潮頭。 可是,創業成功的概率到底有多大?十分之一,還是百分之一? 熙熙攘攘的創業大軍,在網際網路的江湖裡

漫談程式設計師系列程式設計師的生活就這樣嗎

我當了快十年程式設計師了,終於老得可以來談談程式設計師的生活是什麼樣子了。 或許陳奕迅的《十年》中的一段歌詞,可以表示很多程式設計師和軟體開發之間的感情糾葛: “ 十年之前 我不認識你 你不屬於我 我們還是一樣 陪在一個陌生人左右 走過漸漸熟悉的街頭 十年之後 我們

漫談程式設計師系列看看你離優秀有多遠

前段時間(大概是8月份吧)我終於拿到了駕照,科目一、科目二、科目三、科目四都是一次性過的,沒有給教練塞錢也沒有給教練遞煙。考科目三(路考)時,有個女生沒能通過還被陪考員諷刺,傷心地哭了,梨花帶雨讓人心疼。同行的還有兩個學員考了三次都沒過。媳婦的同事聽說我什麼致禮的事

漫談程式設計師系列受刺激啦,開篇啦

今天我媳婦給我說,樓上鄰居投了家every day便利,快回本了,買了個商鋪,租給賣床上用品的啦,人家夫婦倆也是做軟體開發的,這頭腦這眼光!我媳婦做測試,我做開發,我媳婦說她受刺激了,我按捺住蹦蹦跳的小心臟,QQ上對她說,要淡定,擺正心態。 女兒在幼兒園的小夥伴的爸

漫談程式設計師系列 軟體開發的十八般樂趣

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

招聘靠譜程式設計師系列1 程式碼風格優化與糾錯

問:風格糾錯 答: 使用NS_ENUM而不是C語言型別的列舉enum typedef NS_ENUM(NSInteget, XBYGender) { //使用gender比sex正式 XBYGenderMan, XBYGenderWo