心態和想法,是提高編程水平的關鍵


What is the single most effective thing you did to improve your programming skills?

  你是否有時候會覺得自己的技術水平停滯不前,想突破但又找不到門路?最近在stackexchange上看到了一個非常好的問答。有人問:你做過的最有效的提高你的編程水平的一件事情是什么?

回首作為一個程序員這些年來的生活和職業道路,我使用了很多種不同的方法來提高我的編程技能 —— 閱讀代碼,編寫程序,閱讀書籍,聽講座,看視頻,等等。

我的問題是:你做過的最有效的提高你的編程水平的一件事情是什么?對於那些想提高水平的程序員,你的建議又是什么?

我希望你們提供的答案是各種各樣的,並且不是那種“放之四海而皆准”的答案 —— 我希望得到適用於不同人的不同的答案。

  有很多人給出了自己的答案,這里挑選其中三種答案。

  回答一:學無止境

沒有特別的先后次序…

  • 和比自己更聰明的人一起工作
  • 永遠樂意聽取他人的意見,不管對方是低級水平,一般水平,資深,還是大師。職稱頭銜並不代表一切。
  • 學習其它的框架/語言,學習它們是的工作原理和思想,拿它們跟你已知的技術做比較。
  • 學習各種設計模式,最佳實踐理論,然后用它們檢查自己先前的知識,在需要的時候使用這些模式。
  • 結對編程

反對Joel說的一切。 

  回答二:成為多面手

爭取成為一個‘多面手萬事通’。

在我職業生涯的早期,我在一種數據庫和編程語言上是個專家。不幸的是,這種數據庫在“數據庫戰爭”中落敗了,我才發現我的職業道路…很窄。在此之后,我下定決心以后決不能把自己封在一個小空間里。我開始學習所有手頭上能接觸到的東西:Windows,Unix,C,C++,Java,C#,Perl,Python,Access,SQL Server,Oracle,Informix,MySQL,等等。不管什么樣的新的,不常見的工具或技術,我都成為“大拿” —— “去問克雷格(作者自己),他要是不會,他會去學會的。”結果,我做了各種各樣的項目,從為環境監測做嵌入式系統,到為導彈防御做命令和控制系統。

我在各種的公司里唯一遇到的問題是:它們堅持要把我固定在一個專門的研究方向內,而我的專門研究是要成為一個多面手。(也叫做學識淵博的人或多才多藝的人或多領域專家。)

有些事情需要留意 … 高科技界里知識的半衰期是多少?根據摩爾定律(Moore’s law):18-24月內,半數你學到的知識都會過時。錯誤的遵循這種規律的專家會輕易的在這種技術發展的壓力崩潰;一個多面手要做的事就是不斷的豐富自己的技能,並從應用這些技能的經歷中吸取教訓。

  回答三:不要跟臭棋簍子下棋

我一直認為自己在不錯的程序員中也算是個“灌籃高手”。直到有個家伙——我們叫他艾倫——被招進團隊。艾倫很顯然在很多方面都比我優秀。也比我年輕。他讓我認識到,在過去的這些年里,我沒有多少長進。我是一個特定技術方向的程序員,而且是水平一般。

這驚醒我應該自覺的不斷提高自己的水平,特別是我寫的代碼的水平。

艾倫引導我學會了很多東西。他告訴我,大部分我寫的代碼在今后的數年里都將一直維護和進行擴展,寫代碼時要將這點銘記在心。我應該為我的代碼寫自動測試程序。艾倫說代碼的開發一定不能停止在第一版上,應該不斷的重構,提煉,讓它達到完美。我發現,我對這些語言和工具的使用都還有還很大的改進空間。

從艾倫那我學到的最重要的一件事情是:永遠不要停止學習。

數年后,艾倫離開了公司。我的心里突然感覺空盪盪的。這些年與他為伴讓我在技能上提升到了一個全新的水平,我知道現在我比團隊里的其他人優秀很多。他們仍然寫着糟糕的代碼,犯着以前犯過的錯誤。我努力教育他們,但他們對此不感興趣。事實上,他們討厭有人這樣傲慢自大的指出他們犯的錯誤。

於是,幾個月后,我也離開這這個公司。我去了一個很小的公司,在一個很出色的團隊里工作。那里每個人都渴望學習更多知識,我喜歡這樣的。

我很幸運能遇到艾倫。沒有他,我也許現在仍然待在那家死氣沉沉的公司和那幫食古不化的家伙在一起,哪都去不了,想的全是自己的私利。

  這個討論在stackexchange網站上的地址是這里

  我覺得上面的回答都讓我有所收獲,很多時候我們需要一種覺悟,才能做得更好。希望上面的回答也能讓你有所覺悟,在以后的工作中做得更好。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com