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

安曉輝的部落格發表於2015-01-15

前段時間(大概是8月份吧)我終於拿到了駕照,科目一、科目二、科目三、科目四都是一次性過的,沒有給教練塞錢也沒有給教練遞煙。考科目三(路考)時,有個女生沒能通過還被陪考員諷刺,傷心地哭了,梨花帶雨讓人心疼。同行的還有兩個學員考了三次都沒過。媳婦的同事聽說我什麼致禮的事兒都沒幹居然一次性過了,對我表示了一些些敬仰之情。好吧,我承認這讓我有點兒沾沾自喜。可是我們在談程式設計師啊,和駕校有兩毛錢關係沒有?別急,兄弟姐妹們,有的,這個真的有。

軟體開發的未來世界

有一次我在上海Qt開發群(企鵝號279906625)和人討論軟體開發與炒菜大媽的可比性,當時我說將來的軟體開發會很簡單,成為像英語、駕駛一樣的基本社會能力,你能學會炒菜就能學會程式設計,可以根據自己的需要從半成品軟體商店裡購買元件,按自己的需求加工成成品軟體。我相信不久之後這個就會實現,使用者可以用自己的需求和智慧,藉助一個平臺,像搭積木一樣生產軟體。雖然實際上他們不懂我們現在談論的所謂程式設計、開發,但確確實實,他們可以按需開發出自己的軟體來,而且很可能他們都不需要懂計算機,只要在手機之類的移動裝置上搞兩下就好啦。

其實現在硬體已經在往這個方向發展了,什麼麵包板,什麼模組化,什麼什麼什麼呀,看看這個文章:Make!Sense 動手好伴侶,帶你輕鬆做實驗。摘要:

簡單來說,Make!Sense 可以看作是一套感測器連線系統,它自帶通用介面,可以快速便捷地將不同型別的感測器連線到電腦或智慧手機。作為一個有趣的學習互動平臺,Make!Sense 最大的亮點就是操作簡單,小盆友們可以用它感受身邊物體細微的運動、空氣中的水分、光線、溫度甚至心跳,好奇什麼,就感受什麼。

配圖:

一下子又跑偏了,下筆千言,離題萬里……

駕校教給我們什麼

要說司機就得說駕校,我還想說計程車、快的、滴滴、易到用車……因為我是個真誠的噴子,想到哪裡噴哪裡,不會掩飾,我打星際爭霸時最喜歡的是口水蟲,編上個七八隊,哇喔,噴的那個叫壯觀,瞬間平地變湖泊……現在社會上有些資源被某些謀取私利的官、商佔據了,所以產生了很多問題。就比方說駕校,為什麼那些無牌駕駛十幾年的老黑司機也要到駕校來花個錢呢?這不扯淡嗎……應該有自考的途徑啊。

我們還是迴歸正題,看看駕校能教會我們什麼。

駕校會教我們控制汽車,比如怎麼把握方向盤,怎麼使用離合、油門、剎車,怎麼半聯動,怎麼起步,怎麼半坡起步,怎麼過S彎,當然還有調整後視鏡、側方、倒庫等等,對於新手來講,這些其實也是比較傷腦筋的。但是所有這些都是相對簡單的事情,大部分學員通過練習都能掌握,不會有太大的問題。多練習一下,科二、科三不成問題,至於科一、科四,到駕校一點通做兩遍題,對於上過初中的朋友們也沒太大問題,我的堂兄弟小學文化水平也過了,去年春節回家他開車接的我。

當你花上五塊錢買了個實習的黃牌子貼到車屁股上準備上路時,真正難受的經歷才正式開始。這時才是真正學習開車的時刻!雖然控制汽車是成為好司機的非常非常重要的前提條件,但遠遠不夠,很遠很遠,比你愛一個人那個人卻在搞基還要遠。只有你看淡了風雲,能夠預料和避免大多數意外的情況時才能成為一個好司機。不幸的是,駕校不可能教給你這些技巧,你會漂移的朋友也不可能教會你,神仙姐姐來了也教不會你反倒會讓你分心YY。

總之一句話:拿到了駕照,實際你會不會開車,只能聽天由命了。哦不,我要傳遞正能量,靠人不如靠己,此時此刻,只有你能對自己的生命負責,所以你必須Fighting,學會應對所有的緊急狀況,你必須親自經歷過很多駕駛危險並且要倖存下來才能擁有教練們企圖通過說教、演示來教給你的那些應急反應能力。這是少林寺的十八銅人巷,要下山必須得通過。什麼,你想啟用飛航模式?抱歉,待你長髮及腰,肋生雙翅再說吧。

舒馬赫,阿隆索,漢密爾頓,阿蘭瓊斯,普羅斯特……這些名字你可能知道。好吧,也許,韓寒這個全民岳父你更熟悉……這些知名的賽車手,還有在《頭文字D》中送豆腐卻能在山道神漂移的周董,與剛走出駕校拿到駕照的學員們,到底有多大差別?到底哪些新手司機可以成為未來的神司機?

這是一個問題,很大的問題。

優秀是有門檻的

在《漫談程式設計師系列:程式設計師零門檻?》中我說軟體開發門檻為零,在本文開始也45度角仰望星空暢想了404也能開發軟體的悲慘未來。親們,不要怕,這裡我要做一點點修正,所謂失之毫厘謬以千里,我這點微不足道的修正,會大大改變本系列文章關於軟體開發門檻這一話題的未來走向。

所謂的沒有門檻,是指:成為新手程式設計師沒有門檻。也許之前你已經笑話過我圖樣圖森破,我這麼一改,哈哈,Bug沒了吧。

現在要goto到駕校了。

如果你想成為程式設計師,或者被逼迫必須成為程式設計師,那可以去達內、北大青鳥、黑馬、野馬等等培訓機構學幾個月,也可以自己到軟體開發4S店當幾天學徒,基本上就可以掌握一門程式語言,能夠控制某個IDE,讓它Run出一個Hello World或者別的什麼。此時此刻,你滿懷激情地成了4B青年,可是“金樽清酒鬥十千,玉盤珍羞直萬錢”,買個房子貸難還,娶個媳婦岳母嫌,壓力不是一般的大啊,於是你停杯投箸不能食,拔劍四顧心茫然,最後只能輾轉反側寤寐思服……那麼,你想什麼呢?

終於可以連連看了,此時你就相當於剛從駕校出來的新手司機,站在鋼筋水泥的叢林裡,面對著人潮擁擠又車來車往的十字路口,眺望堵到霾雲深處的車流,開始了事關將來的深度思考:什麼時候我才能成為一個神乎其技的好司機,穿越這神鬼難破的堵局?

其實作為程式設計師,你也要想這個問題:我來了,面對那麼多的大拿、怪咖、呆萌,我的路在何方?怎樣找到那條通往優秀程式設計師的羊腸小道?

入門不難,優秀很難!上有六龍回日之高標,下有衝波逆折之回川。黃鶴之飛尚不得過,猿猱欲度愁攀援。腫麼辦?腫麼辦?

不是每個人都能成為舒馬赫,也不是每個程式設計師都要成為王江民。

擺在你面前的有很多選擇:蹩腳的程式設計師、合格的程式設計師、優秀的程式設計師、卓越的程式設計師,還有在職退休的好漢……

你要做哪一個?你能做哪一個?怎樣成為你想做的那個?

Big Problem ! 你需要看《自我發現,找到適合自己的職位》,step into ,或者F11,進去看看吧。不過這篇文章目標太大,說的都是一般之理,沒有針對“程式設計師”這個與“農民工”、“保潔員”一樣響噹噹的稱謂所代表的社會群體投去特別的溫暖與關注。因此,我會在漫談程式設計師系列文章中來講這個問題,稍微詳細一些的來嘮一嘮它,不過不是現在……

優秀與普通的差別

現在我們要看看優秀程式設計師與普通程式設計師之間的差別。

有個哥們兒(叫他GG吧)考科三,起步、百米加減檔、超車都O了,快結束時,陪考員說,減速停車,這哥們一聽暗暗吐了一口長氣,心想終於通過了,然後右腳猛踩油門,陪考員反應挺快猛踩副駕的剎車,結果呢這哥們掛了……

你說GG能否成為舒馬赫?

其實我的神經好錯亂的是吧……

還是看看優秀程式設計師的表現:

普通程式設計師的迴圈:

當然普通程式設計師和優秀程式設計師可能不像兩幅圖裡的區別那麼明顯,但他們之間確實有一條鴻溝……

有哥們兒已經紅眼了,憤怒了:博主,丫到底敢不敢說明白!到底差別在哪裡?

咦,你真關心這個呀……其實我不是馬路邊的賈半仙,很難一言半語說明白,但是,姑且從以下三方面噴噴吧。

  • 才幹
  • 行為
  • 結果

才幹上的差別

請先閱讀《漫談選人與培訓》瞭解知識、技能、才幹的差別。這裡我們搞個摘要:

才幹就是你那些貫穿始終的思維、感覺和行為方式,它基本上是與生俱來的。任何可以產生效益的貫穿始終的行為模式都是才幹。多數時候我們並沒有意識到它們的存在,只要你有意識的識別出它們併發揚光大,就可以有所成就。因為,取得出色成績的關鍵在於使你的才幹與工作相匹配。

舉例來講,精確、好學、好強、嚴謹、秩序、樂觀、開朗、專心等等都是才幹。

理解了才幹這個說法,我是再也不迷信“勤能補拙”、“揚長補短”這些個看似勵志的說法啦。假如你要幹好一件事情,必須要改變你的才幹和個性,只有當你非你時才可以幹好它,那這件事情壓根兒就不適合你。換句話說,它不是你的菜。

上小學時老師總是批評有的小朋友馬虎,是馬虎蟲……馬虎可以改變嗎?對於有些人可以,對於有些人不可以,因為馬虎是他的天性。有的人小學馬虎,中學照樣,成家立業了還是粗心大意丟三落四馬馬虎虎……你讓他改什麼?馬虎就是他的天性啊。請表逆天,親。

還有些專案經理對團隊裡的程式設計師不滿意,說P1要是多想想,用心一些,就不會寫出臭蟲亂爬的程式;說P2要是責任心強一些,就不會天天上班打遊戲……其實,哥呀,有的人就是不認真,不用心,天生就那樣;而有的人就是不負責任;這些都是教不會的,改變不了的……你寄望於改變那些無法改變的東西來提高某人的工作效率和產出,那可真是痴人說夢話緣木求魚……

那造就優秀程式設計師的,是哪些才幹呢?

  • 學習能力
  • 學習慾望
  • 好奇心
  • 成就慾望
  • 執著
  • 追求完美
  • 抽象思維

這些都是……必然還有別的,請腦補下。

行為上的差別

因為才幹不太能直接看得出來,但它會決定你有什麼樣的行為。所以,從行為上,其實也可以看出普通和優秀的差別來。

優秀程式設計師的一些行為:

  • 拿到任務,就開始仰望星空或天花板上那盞高懸的電燈棒,狀如老僧入定
  • 忽而皺眉,忽而展顏一笑,忽而手舞足蹈,忽而在紙上指指戳戳,忽而口中唸唸有詞,忽而長吁……感覺有點神經病啊
  • 桌子上擺的是程式碼大全、設計模式、敏捷實踐之類的書籍,並且沒有灰塵
  • chrome或firefox的書籤欄裡分門別類,類別多於10個,8個以上是技術相關的
  • 容不得破窗戶,看見別人的爛程式碼就想改過來
  • 隨手就能在白板上畫出軟體的流程圖或者時序圖……
  • 專案做完了,別人在打遊戲、看視訊、忙著回覆QQ、向剁手族前進,他在想:這樣重構好呢,還是那樣……
  • 你發現他總能說出些你不知道的技術來……
  • 看這廝的程式碼比看你自己的還好懂……
  • 老得你叫他吃飯……

普通程式設計師的行為:

  • 拿到任務就開始噼裡啪啦敲鍵盤,一天寫了好幾千行程式碼
  • 沒事兒就被測試MM叫過去溝通……
  • 都早上10點多了還想著昨晚的球賽,10點半就琢磨中午要吃拉麵、扯麵、刀削麵、牛肉麵、旗花面、臊子面、窩窩面還是炒細面……
  • 過了一陣子,看到自己的程式碼,感到很驚奇,認為是別人寫的……
  • 回家就看電視、打遊戲、看球賽
  • 週一上班不知道要幹啥,遲遲進入不了角色
  • 哇,能Run啦,搞定啦
  • 這誰寫的程式碼,這麼爛……算了,管它
  • 問別人問題的時候多,別人請教你的時候少
  • 世界上最遙遠的距離不是生與死,而是你親手製造的 BUG 就在你眼前,你卻怎麼都找不到她……

當然還有其它的……這個列表可以很長很長

結果上的差別

最重要的差別在這裡:

因為普通程式設計師老是和測試MM溝通,告別單身的機率比優秀程式設計師大100倍。

相關文章