牛逼程式設計師是如何煉成的?

edithfang發表於2014-06-19

一切就像發生在昨天一樣,在我的記憶中還是那麼清晰、宛若歷歷在目。那是在 2000 年,Pargas 博士正在給我們上資料結構課,當他談及某些資料結構的時候,他在牆上投影了一個 SSH 會話。在回答完某位同學提出的問題後,他隨後總結了一句,“如果大家想成為一個真正的電腦科學家,那麼你需要從現在就開始學習使用 vi 文字編輯器”。我仍然記得他說這話的時候,臉上帶著真摯的笑容,但是事後卻證明他的說話是不甚正確的。不過,那個時候我還年輕,很容易受外界影響。所以,下課後我一回到宿舍,就迫不及待地開始學習如何使用 vi 編輯器了。這樣一段時間之後,我突然發現我對 vi 真的熟練多了。

時間飛逝,6 年過去了,TextMate 編輯器漸漸成為了我的左膀右臂。儘管那個時候我正在做一個 Java 開發專案,但是我還是擠出時間去學習 Rails,並在自己的業餘時間搞了個 Rails 專案來練練手。甚至,為了提高自己,我把我讀的每篇程式設計文章,看的每段程式設計視訊,都嘗試著用 TextMate 編輯到文字中,然後看看能否成功演示出來。但是我需要每天使用的破機子漸漸地滿足不了我了,所以我搞了臺 Mac,然後在開機 10 分鐘之後就購買了 TextMate 服務。

坦誠而言,文字編輯器的轉變絕對不是讓我成長為牛逼程式設計師的根本原因。

好的工具,能給你錦上添花。所以,工具很重要。但是我也相信,老虎 · 伍茲如果在一個垃圾俱樂部還是會成為一個偉大的高爾夫運動員,梅西不穿鞋子和我們踢球球門照進,拉斐爾 · 納達爾揮著 60 年代製造的木球拍還是能輕易打敗我?好吧,我敢肯定,他們絕對能一巴掌輕易“拍死”我。技能、知識和經驗也是我們成長為一位優秀的程式設計師不可或缺的重要部分。

這樣說來,工具不能造就優秀的程式設計師,那麼什麼可以呢?

我覺得,一個優秀的程式設計師的長成需要很多方面的積累,其中還包括,我們正在從事的工作,以及和我們一起工作的人。並且我認為在那些成功的軟體開發員身上都有著一些特質,是值得我們大家學習的。但是我不確定這些特質是需要你去專門去學習的,還是你與生俱來就有的,不過,我深深的覺得,如果我早就能多多學習這些特質,而不是責怪自己的工具不好,把編輯器換來換去的,我能達到的職位一定比現在高。

以人為本

據我所知,那些頂級程式設計師都把人的考慮放在第一位。因為他們深深的明白,他們所編寫的軟體對別人來說,絕對是部“有字天書”,即便是已經完工的後端,還是除了開發人員別人看的雲裡霧裡的協議,都一樣難懂。考慮到這一點,他們一般會寫個文件,以便於後來者使用他們的程式碼。這些優秀的程式設計師抱著“以人為本、為人民服務”的態度,通過自己工作時間之外的努力,解決了那些複雜的難題,留下解決方案給他人享用。

求知若渴

厲害的程式設計師對於知識就像海綿吸水一樣渴求。他們特別喜歡瞭解新鮮有趣的時事資訊,他們大量閱讀,不管是網上閱讀還是書刊報紙,都不放過。他們熱衷於嘗試,然後從經驗中學習。即使是新生的程式語言和工作平臺,他們也毫不畏懼,絕不退縮。

擅於問題匹配

假設你在寫軟體,一段時間之後,肯定會有問題出現,這時候,你瞧著它,“哎,咋那麼像我以前解決過的那個問題呢”?然後你找到以前那個方案,把它改頭換面一下適用到當前的問題中去,那麼恭喜你,已經 get 這個有價值有內涵高大上的技能了。當然,如果能在每次使用這個方案的時候,都能改進一下,那就更好了。

不過,需要注意的是,我們絕對不能就此盲目地認為,過去能起效果的解決方案應用到現在的這個問題上就一定有用。這時候就需要擅於巧妙地匹配問題這個技能大顯身手了。不過,你還得睜大眼睛看清楚,有的時候能套用過去的解決方案,而有的時候則不能。

我為“程式設計”狂

我弟弟在高三的時候選修了 Python 程式語言,我問他你怎麼喜歡上程式設計的,他特別不解的看了我一眼,說不知道我是不是瘋了竟然去做程式設計師,那是他做過的最無趣最沒意思的事情之一,他懊悔得捶胸頓足。好吧,在某種程度上,他的想法也沒錯。我和電腦交流的時間比和人交流的要多得多。當我把一行一行的基本數字和字母執行之後成為一個成功的軟體時,一種巨大的滿足感剎那間充斥了我,飄飄欲仙。不是每個人都喜歡程式設計,不過我見過的那些頂級程式設計師沒有一個不愛寫軟體的。

持之以恆

軟體開發比我們想的都要來得慢,來的難。所以我們必須迎難而上、持之以恆。有時候,你想要寫的程式碼僅僅只需要你花費足夠的耐心去炮製就可以了。也有時候,我們在程式設計時感到樂趣十足,當然也有這樣的時候,因為已經寫了幾百遍寫得都快吐了,但是還是需要繼續強迫自己去寫。酸甜苦辣,箇中滋味,如人飲水,冷暖自知。不過即使再難再枯燥,那些優秀的程式設計師絕不會半途而廢,因為他們胸中自有溝壑,他們明白自己在做什麼,為什麼要這樣做,並且享受這個向勝利一步一步前進的過程。

以上是我認為一個優秀程式設計師應有的一些特質,如有遺漏之處,還望補充。最後,我想問下,親你是牛逼程式設計師嗎?

相關閱讀
評論(1)

相關文章