三十五年經驗分享:程序員進階八法

    

    這八法十分可靠,可提高你寫代碼的技能,你可要收藏好了。時間到了,提高你的編程技能,認真+嚴肅,走起!如果你的目標僅僅是提高自己,那麼很容易實現,但是如果你的目標是成爲一個偉大的程序員,那麼這就不簡單了。很多人都願意說,我想變得更好,但是更好是什麼卻很模糊,而且人們也不知道該怎麼樣去做。我在這裏分享八法來幫助你順利提高你的編程技能。這些小智慧來自三十年深耕該領域,許多都令你再熟悉不過了,你可能早就認知了它們。

  1.要記得,你並非無所不知

   在你前進的路上,有一隻巨大的攔路虎,它的名字叫做“我無所不知”。那些計算機學科畢業的大學生們以及有經驗的程序員都好犯這樣的毛病。實際上,這是一個陷阱,掉進去就很難爬上來。但是,你仍然要克服它。只有才願意認爲自己無所不知,但是人類的特點是,能夠認識到自己的不足,然後去學習新知。所以,你要明白,想要成爲一個更好的程序員,第一步就是意識到自己總有新物要學,保持謙遜的態度,這纔是學習的一貫正途。


  2.停止去證明你有多正確吧

   從經驗中學習會令你偉大,而不僅僅是還湊合。但是要注意了,經驗也會使我們不斷重複錯誤的行爲導致養成不好的習慣。如果你是有8年經驗的程序員,你也有可能連着8年都在重複同樣的錯誤。克服這一謬感的方法就是,時刻檢視自己,並不斷地發問:在這一點上,我是否還能做得更好一些。舉個有趣兒的例子,一個經驗豐富的軟件開發者,他寫出了令自己也豔羨不已的代碼,於是他覺得這個代碼簡直太完美了,他不斷寫文章去證明自己有多麼的正確,代碼功能多麼優秀。氮素呢?人們從來沒有見到他去找一切辦法來佐證自己的代碼是錯誤的。其實呀,真正優秀的程序員,他們都喜歡去證反,就是去證明自己有多麼的錯誤,因爲他們知道,長久來看,用戶一定會發現軟件的問題和失誤,而他們希望自己首先發現這些問題,而不是等待別人去發現。吶,你看到優秀和平庸之間的差距了嗎?

  3.代碼沒有死亡,它始終活着

   沒錯,你第一步總是要寫出高質量的代碼來滿足用戶的特殊需求,但是優秀和平庸的區別體現在哪裏?如果你只是匆匆忙忙地進入下一個任務中,那麼你不可避免地成爲了窮忙族。一段代碼寫出來以後,它並沒有死亡,它始終活着。這說明什麼?你寫出代碼並不意味着你的工作結束了,相反,一切都纔剛剛開始,你不需要火急火燎地趕往下一個站點。停止,僅僅意味着階段性的展示和賞析,但是偉大的程序員對一件事情心知肚明,那就是萬事都可以更好,產品運行了,這很棒,但是你的工作沒有結束,要依靠迭代讓產品變得好上加好。

如何讓產品變得更好?我們依據不同的應用,會提出不同的問題,比如,更快是不是對產品價值的增值?更容易記錄是不是呢?更容易重複使用呢?更可靠呢?這些問題雖然不同,但是程序猿對產品不懈追求的動機是一致的。你懂了嗎?你不斷思考如何讓產品變得更好,這一點是不變的,但是你的方法是提出一些與衆不同的、內容不一的問題。

  4.寫三次吧

   好的程序員認爲寫出的軟件能運行就好了,偉大的程序員認爲軟件要運行得極其完美。但這很少在第一次就成功,最好的軟件通常要寫三次。首先,你寫軟件是爲了向自己或者用戶證明問題是可以解決的。其他人或許意識不到這是一個概念生成的時期,但是你自己很清楚。然後,你讓軟件生效。最後,你讓它正確地運行。在那些最好的開發者身上,你並不會明顯地看到這種級別的工作流程,他們做的一切都看起來聰明極了,但是在他們背後,即使是明星開發者,他們多少次將第一版和第二版扔進垃圾桶,你是不得而知的。你想做到更好,你就要將摒棄代碼與重新開始這條給力的方法融進你自己的工作流程之中。如果沒有什麼特殊情況,“寫三次”可以教你認識到:解決一個問題有很多種方法,它使你避免在一棵樹上吊死。


  5.儘可能地去讀代碼,越多越好

   我在這裏不能給出更多的建議了,我只能告訴你要提高編程技能,你就要去讀別人的代碼。這一點太重要了。你讀別人的代碼就能發現他們是怎樣解決一個編程問題的。但是不要僅僅把它們當作參考文獻,你要把它們當作一門課或者挑戰,去學到技能,讓自己的編碼能力得到提高。你可以這樣問自己:噢,看看我寫的這堆代碼,你的和我的有什麼不同呢?你找到另一種解決方法了嗎?我能學到什麼呢?我怎麼用到自己的代碼中去呢?我以前可從來沒想到還可以這樣做呢!我能做什麼來提高我的代碼的質量呢?

   既然這些資源都開放給你,你就可以有信心找到更好的解決辦法,去做吧!用當作家的心態去寫代碼吧。這種練習會幫助你接觸到最優秀的頭腦,這樣就會與他們產生共鳴。不要把過程想象得太鬆散。無論你是習慣於私人雜誌、博客、代碼審覈程序,還是習慣於擁有衆多開發者的社區平臺,你都要分享出你思考的結果。比如向朋友去解釋一個問題,這能幫助你理清思路,再比如你分享出你的分析,這能幫助你去搞明白你爲什麼會以固化的思路去反饋別人的代碼。這就是我在前面所提到的自我反省中的全部。反省會幫助你平心靜氣地判斷你自己的優勢和劣勢。

   注意:閱讀大量的代碼並不能使你變成偉大的程序員,就好比一些想要超越偉大的文學家的人閱讀了大量的優秀文學作品結果卻並不一定提高自己的寫作能力一樣。大量的開發者只是爲了簡單地解決問題而去閱讀,他們急於找到一個答案,所以大部分時候,他們只是複製和粘貼了別人的代碼。你這樣做的話,就會變成一個特別糟糕的程序員,因爲你對他人的智慧視而不見。另外,如果你只是抄襲而不去花時間理解的話,你吃的就只是bug而不是夏日午餐。這樣,你其實就成爲了一個bug生產廠。

  6.不要只爲工作而寫代碼

   接一個私人的編程項目有許多的好處。比如,你不僅有機會獲得在目前的工作中很難學習到的工具和技術,而且還能夠使你更具有市場眼光。無論你是否爲開源項目做奉獻,或者承擔本地社區組織的一個無償的項目,你都將獲得技術能力和自信。另外,你的私人項目也向你潛在的僱主證明了你是一個不會停止主動學習的人。因爲熱愛而寫代碼的另一個好處就是你很容易依靠自己去解決許多問題。你不能把困難拋給別人,你會停止一遇到問題就立即向別人尋求幫助。提示:不要只選擇你有把握的私人項目,你需要一些無把握的嘗試。但是你的確可能在面臨最終期限到來的時候不想失敗。

  7.儘可能與其他開發者親密地合作

   傾聽他人是合作的基本原則。無論你是組隊編程還是參加***馬拉松,或者就是參加一個編程人聯合會,比如Vermont編程人聯合會。當你爲一個開源項目無私貢獻的時候,你要注意來自用戶和其他開發者的反饋意見。你在這些評論中看到那些共性了嗎?其實你這是很幸運地遇到了可以信任的私人顧問,他們能在你需要的代碼技術和職業選擇的一系列問題上給你指導。不要浪費這些機會。

  8.你學的是技術,而不是工具

   編程語言、工具和方法論千帆過境,數不勝數。這就是爲什麼你在語言、框架上的經驗要儘可能地多。你必須集中精力在編程的基礎上,因爲基礎基本不變;你還要把注意力放在構建而不是編寫上。任何時候,你堅信只有一條正確的道路通向真理,那麼你就該自我反省一下了。教條會阻礙你學習新的知識,使你變得不愛改變。道理怎麼講都講不完,但是自我提升的核心要點就是你知道在哪裏止步。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章