10,000 小时编程反思
1人們眼中的天才之所以卓越非凡,并非天資超人一等,而是付出了持續(xù)不斷的努力。要成為某個(gè)領(lǐng)域的專家,需要10000小時(shí)(1.1415525年)
>>>>
一萬小時(shí)定律是作家Malcolm Gladwell在《異類》一書中指出的定律。“人們眼中的天才之所以卓越非凡,并非天資超人一等,而是付出了持續(xù)不斷的努力。要成為某個(gè)領(lǐng)域的專家,需要10000小時(shí)(1.1415525年),按比例計(jì)算就是:如果每天工作八個(gè)小時(shí),一周工作五天,那么成為一個(gè)領(lǐng)域的專家至少需要五年。
Matt Rickard 有15 年的編程經(jīng)驗(yàn),曾在谷歌 Kubernetes 和私募股權(quán)公司 Blackstone 擔(dān)任專業(yè)軟件工程師。在此之前,他大學(xué)的大部分時(shí)間都在圖書館為自己的項(xiàng)目編寫程序,他曾經(jīng)做過各種各樣的事情——在 RuneScape 上運(yùn)行一個(gè)僵尸網(wǎng)絡(luò),為 iPhone 編寫一個(gè)拉丁語翻譯應(yīng)用程序(這樣Matt Rickard可以在拉丁語考試中做得更好),編寫自己配置語言,創(chuàng)建一個(gè)網(wǎng)絡(luò)剪輯器,或者讓我的桌面活躍起來。
Matt Rickard介紹自己最近的工作與分布式系統(tǒng)相關(guān),他曾經(jīng)編寫過許多關(guān)于技術(shù)棧的代碼,使用過 PHP, JavaScript, Go, Ruby, Python, C#, Java, Swift等編程語言,涉獵過前端、后端、移動(dòng)端、內(nèi)核、云、運(yùn)維等技術(shù)領(lǐng)域。他還曾參與過像 Kubernetes 這樣的大型開源項(xiàng)目,并維護(hù)過子項(xiàng)目。
在這一萬小時(shí)的編程訓(xùn)練中,Matt Rickard對(duì)編程產(chǎn)生31條思考。這里只是對(duì)純編碼的思考,不會(huì)涉及到如何成為一名高級(jí)技術(shù)經(jīng)理,如何在職場(chǎng)上獲得快速晉升等方面的建議,這些非常重要,但并不是本文的主題。
?1. 尋找答案的最佳途徑是瀏覽源代碼,而不是網(wǎng)站上尋找;
?2. 在許多情況下,您正在從事的工作在互聯(lián)網(wǎng)上沒有答案。意味著問題很困難或很重要,兩者兼而有之;
?3. 盡可能多地刪除代碼;(Delete as much code as you can)
?4. 語法糖通常是不友好的;
?5. 簡(jiǎn)單也意味著困難;
?6. 熟悉各種各樣的工具,并知道使用哪些工具來完成工作;
?7. 了解最常用的內(nèi)部結(jié)構(gòu),知道常用的內(nèi)部代碼協(xié)作工具,如 git 和 bash(可以擺脫大部分低質(zhì)的 git rebase 或 merge);
?8. 為重復(fù)性的工作構(gòu)建自動(dòng)化工具;
?9. 只從最好的資料中學(xué)習(xí),Matt Rickard舉例學(xué)習(xí)Go語言時(shí),閱讀了標(biāo)準(zhǔn)的Go語言標(biāo)準(zhǔn)庫;
?10. 如果代碼看起來很丑,那很可能是一個(gè)可怕的錯(cuò)誤;
?11. 如果編寫的不是文檔字符串的注釋,需要思考應(yīng)該對(duì)代碼進(jìn)行重構(gòu);
?12. 編寫程序員要知其然知其所以然。據(jù)Matt Rickard的經(jīng)驗(yàn),最好的工程師都會(huì)知曉程序在各個(gè)環(huán)境下的運(yùn)行機(jī)制;
?13. 上述規(guī)則也適用于構(gòu)建Pipeline ;
?14. 謹(jǐn)慎地使用他人的代碼;
?15. 網(wǎng)上的大部分代碼都很糟糕,不一定適用于你,自己優(yōu)化的版本可能會(huì)更好更容易;
?16. 永遠(yuǎn)不要直接依賴可以輕松重寫的小型庫,也不要直接依賴本應(yīng)很小的大型庫;
?17. 學(xué)會(huì)打破規(guī)則;
?18. 將代碼組織成模塊、包和函數(shù)很重要;
?19. 大多數(shù)時(shí)候需要選擇最有效的工具,但也要選擇你所熟悉的;
?20. 避免圈復(fù)雜度;
?21. 避免深度嵌套條件;
?22. 正確命名變量,也是一門藝術(shù);
?23. 重視編譯器本身編譯錯(cuò)誤;
?24. 謹(jǐn)慎使用深?yuàn)W的編程語言特性;
?25. 技術(shù)的傳播并不均衡。例如,前端開發(fā)人員可以從低級(jí)工程師那里學(xué)到很多東西(尤其是現(xiàn)在一切都已編譯),同樣,JavaScript 開發(fā)人員也可以教授云工程師的 UX 和可用性功能;
?26. 學(xué)會(huì)用不同的眼光與方式看待世界;
?27. 有些程序員的效率是其他程序員的 10 倍;
?28. 成為 10 倍程序員和 10 倍員工之間沒有相關(guān)性(可能是負(fù)面的);
?29. 好的 API 易于使用且難以誤用;
?30. 配置周期從硬編碼值到環(huán)境變量、CLI 標(biāo)志、配置文件、模板化配置文件、DSL、通用 bash腳本,再到硬編碼值。知道你在這個(gè)[七邊形能力]的配置中的位置;
來源于Matt Rickard博客分享
?31. 所有抽象層都是可延展的。如果遇到基本的問題,有時(shí)答案就是往下再抽象一層,不要局限于表面。
?參考文章鏈接:
https://matt-rickard.com/reflections-on-10-000-hours-of-programming/
—版權(quán)聲明—
來源:CSDN,編輯:nhyilin
僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。
若有侵權(quán),請(qǐng)聯(lián)系微信號(hào):Eternalhui或nhyilin刪除或修改!
—THE END—
文章推薦
?概率論公式,你值得擁有
?最速降線
?小波變換通俗解釋
?微積分必背公式
?影響計(jì)算機(jī)算法世界的十位大師
?貝葉斯網(wǎng)絡(luò)
總結(jié)
以上是生活随笔為你收集整理的10,000 小时编程反思的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 收发一体超声波测距离传感器模块_芜湖低功
- 下一篇: 国基金评委:关键科学问题的凝练不到位,容