當前位置:編程學習大全網 - 編程語言 - 編程貴還是小提琴貴?

編程貴還是小提琴貴?

《CSDN》的編輯馬爾科姆·格拉德威爾曾在《局外人》中說,要真正掌握壹件事,需要10000小時的練習。本文作者格雷格·布爾馬什(Greg Bulmash)擁有40多年的編程經驗,編寫了10000小時的代碼,但他沒能成為壹名高級程序員。壹萬小時定律為什麽會失效?他分享了自己的壹些觀點。也許他的經歷能幫到妳。讓我們來看看。

原始鏈接:

本文由CSDN翻譯,轉載應註明出處。

譯者|張玉明編輯|屠敏

出品| csdn (ID: csdnnews)

馬爾科姆·格拉德威爾在《局外人》中說,真正掌握壹件事需要10000小時的練習。其實10000只是壹個大概的數字,這句話的意思已經被過分簡單化了。我斷斷續續地編程已經超過40年了。我可能寫了10000小時的代碼,但我連壹個優秀的程序員都沒有,更別說是編程大師了。

我認為有幾個原因。首先,在這10000小時裏,我主要學習了四種不同的編程語言和壹些其他的輔助語言。當我從壹種語言切換到另壹種語言時,我發現它們的壹些概念可以互換,壹些則完全不同。有趣的是,在這種語言中沒有意義的概念可能被用來構建它。

比如JavaScript沒有本地鏈表實現,但是如果在V8 GitHub庫的src目錄下搜索“鏈表”,會發現76 commit提到了它。即使他們不使用語言本身的C的鏈表,也會使用引擎下的C的鏈表。

每壹種語言都有自己的語法和特殊的實現方法,這些都是必須要學的,而不僅僅是概念。壹種語言的最佳實踐不壹定是另壹種語言的最佳實踐。我從來不花太多時間在編譯語言上,幾乎都是用解釋型語言,比如BASIC,PHP,JavaScript,Python。我學過C#和Java,用Rust做過Hello World,但是在Linux下從源代碼開始編譯對我來說非常困難,所以我壹般只是下載源代碼,按照教程裏的說明做,然後祈禱代碼能運行。

除了學習這些語言,我還學習了服務器技術和系統架構的基本概念,不是從編程的角度,而是從網絡管理員或者系統管理員的角度。而且無論是搭建大型網站,在Flash中創建矢量圖並渲染成位圖,還是學習通過AWS解決方案架構師助理的認證,我都做過很多次。但是我已經忘記了很多事情。我學過這些語言的框架和庫,比如JavaScript的React和JQuery,PHP的Laravel.....然後我就忘了很多,因為我學它們是為了完成壹個項目,然後就沒再用了。

即使妳寫了10000小時的代碼,也不代表妳可以輕松地在不同語言之間切換。當妳真正切換的時候,妳會發現10000小時並沒有那麽神奇,因為另壹個必然的原因:記憶力下降。就像我說的,如果我停止使用壹種語言,甚至只是暫時停止使用它的壹種功能,我會忘記它,就像我忘記“高中的西班牙語”壹樣。高中完成西班牙語三級,大學通過西班牙語四級,得了a,現在可能只記得不到10%。

比如我幾乎完全忘了如何用規則動詞連接過去式,更不用說不規則動詞了。但是因為我之前練的足夠多,知道自己的不足,所以可能會比剛開始學的人更快的恢復之前的知識。但可能需要幾個月的強化練習才能完全恢復。

十年前,我精通PHP,做過定制的MVC框架(別人創建的),用Doxygen映射類的繼承層次,用JQuery構建前端交互性。但是我七年前就不用PHP了,改用Node。現在,我花了5分鐘的時間糾正了壹些語法錯誤,才能夠在剛才提到的PHP副本中正確地編寫壹個Hello World。

去年,5438年6月+2月,我為freeCodeCamp的前端庫認證建立了5個React項目,但之後就沒有再編碼React項目了。過了兩個月,開始準備面試的時候,感覺自己像個新手壹樣反應不過來。如果我看到我自己的代碼,我可以很快理解它。但是因為很多東西只是我準備的輔助工具,我就全忘了,所以我需要回到文檔,重新開始壹個新的React項目,然後再開始工作。和壹個新手相比,我只是走得更快。

這就是新手和初學者的區別。壹萬個小時可以讓妳成為小提琴大師。但如果妳每500小時換壹次樂器,想成為整個交響樂團的主角,妳可能也不會更好。所以為了加強和拓展妳的技能,練習不僅要廣泛,而且要持續。

10000小時是什麽概念?就是五年每周工作40小時,兩年休假1周(節假日、病假、休假都在這兩周之內)。妳會發現有些工作需要三年框架內的五年經驗。五年似乎是成為專家所需的標準時間。因為對框架和這個簡化標準的無知,所以會出現邏輯矛盾,壹句話。

壹個專業開發人員在郵件和會議上要花多少工作時間?妳有多少時間真正去編碼,去思考編碼問題?我在微軟寫文檔的時候,我的經理說,無論如何,妳每天只花壹半左右的時間在實際生產上。剩下的時間會花在瑣事上,比如回復郵件、開會、匯報進度/狀態、在IM上回答隨機問題或者和別人聊天。......

所以我只花20%的時間寫代碼,因為另外80%的時間都在寫文檔和教程,也就是說我平均每天只寫壹個小時的代碼。我曾經是用瀏覽器裏的開發工具調試的天才,因為我在這方面經驗豐富,經常更新新版本。不過,雖然當時開發主機的快捷鍵我都爛熟於心,但離開微軟7年後基本都忘了。

事實上,從我進入開發者關系部開始,我每天花10-20%的時間寫代碼,剩下的時間寫教程,做會議講座和網絡研討會的文檔,制定建立和培養開發者社區的策略,制定展示新功能的最佳方式,和各種各樣的人打交道——產品經理、內部工程師、外部開發者、產品營銷經理、需求生成和社交媒體經理。

最後要記住的是,妳不會花壹萬個小時去學習新的東西。如果妳正在學習小提琴,妳可能會花數百個小時學習壹些初級作品。在妳學習新的東西之前,妳已經掌握了壹些初級的東西,並且在反復練習直至完善的過程中,

學到很多,用妳所學的去學習新的東西。所以這壹萬個小時大部分都是密集的。

編程中,多次做單頁應用就像寫壹樣。前幾次可以參考教程,但最後壹定要能不參考就寫出來。就像看音樂慢慢彈歡樂頌,然後記住怎麽彈,然後準備在演唱會上彈。

然而,當妳需要在截止日期前交付壹個項目時,妳有多長時間進行強化練習?很多公司都不會給妳時間去拓展技能,強化編碼,妳需要用額外的時間去完成。有的公司會給妳10%的時間或者20%的時間做獨立項目,但是很少有公司希望妳把這個時間花在簡單的練習上。

新的框架、新的最佳實踐、新的語言和新的模型正以越來越快的速度出現。在這種情況下,僅僅是在新的方面取得合格的成績,就會像和職業選手玩歡樂頌壹樣困難。

妳需要平衡強化和探索的時間,尤其是每天編碼不到50%的時候。妳必須通過練習不斷強化自己,建立妳的心理肌肉記憶,直到妳能在睡夢中解決它們。小提琴幾百年來沒有實質性的變化,但編程是不斷變化的。成為壹個特定語言的編程大師,意味著更長時間的堅持。妳得在工作時間之外做強化練習,完成任務,努力成為壹名優秀的程序員,或者跳槽到另壹家能給妳足夠時間練習的公司。

即使5年後或者10年後妳沒有成為壹個編程高手,也沒關系,因為做好壹萬個小時比看起來要難。

  • 上一篇:ktv燈光設計
  • 下一篇:什麽是量化投資交易策略
  • copyright 2024編程學習大全網