35年程式設計史沉澱下來的8條寶貴經驗,受益匪淺!
給自己設定一個提高開發技術的目標很容易,但是“想成為一名偉大的程式設計師”卻不是一個容易實現的目標。首先,說“我想變得更好”,是建立在你認識到“更好”的樣子基礎之上。另外,有太多的人追求進步而不知道如何去實現。
因此,分享八個可實際操作的指導方針,你可以把它們作為提高程式設計技能的流程圖。這些智慧都是伴隨著計算機35年的發展沉澱下來的。
1時刻提醒自己:學習
學習某件事的第一步是承認你不知道。這聽起來很正常,但經驗豐富的程式設計師還記得要真正讓自己承認這一點需要花多長時間。很多電腦科學專業的學生畢業的時候,都有一種很傲慢的態度,就是“我知道最好的”,但其實這只是一種虛張聲勢,他們不知道從哪裡來的自信,就好像他們什麼都知道,並且需要向每一位新同事強烈的證明這一點。
換句話說:你所謂的“我知道我在做什麼!”這種態度會妨礙你學習新的東西。
2不要試圖證明自己是正確的
要想成為優秀的人,你必須學會吃一塹長一智。但是千萬小心,經驗也可能教會我們重複一些不良行為,甚至也教會我們養成一些不好的習慣。我們都遇到過有8年經驗的程式設計師。對於他們來說,同樣的經歷,重複了8次。為了避免這種綜合症,看看你做的每一種事情,然後問自己:“我怎樣才能讓它變得更好?”
新手(以及很多經驗豐富的開發人員)會看著他們自己寫的程式碼,欣賞它的奇妙。他們編寫測試來證明他們寫的程式碼是可以執行的,而不是試圖讓它執行失敗。真正優秀的程式設計師會積極地尋找他們的錯誤在哪裡,因為他們知道終端使用者會發現這些遺漏的bug。
3“程式碼可以執行了”這個目標不是終點,而是起點
是的,你的第一步總是想寫出質量很高的程式碼,而且程式碼上面都寫滿了註釋。但是一般的程式設計師在這一點上就退出,然後繼續下一件事。
但是一旦“完成”就停止了這種思想就像是拍一張快照,然後期待它是一件藝術品一樣。偉大的程式設計師都知道第一次迭代只是一次迭代。它執行起來了,恭喜你!但你的工作還有很多。現在,使它變的更好。
其實這個過程就是在定義“更好”的含義。讓它變得更快能有什麼價值嗎?可重用更高有什麼好處嗎?更可靠嗎?答案隨著每個應用程式的不同而不同,但是過程都是一樣的。
4寫三次程式碼
好的程式設計師目標是寫出可以執行的軟體就可以了。偉大的程式設計師寫出來的軟體目標是執行得非常好。通過一次編寫這種情況幾乎不可能發生。最好的軟體通常被寫三次:
首先,編寫軟體以向你自己(或客戶)證明解決方案是可行的。其他人可能沒有意識到這只是一個概念驗證,但你確實這麼做了。
第二次可以讓它正常地執行。
第三次你能夠讓它平穩的執行。
當你看到最優秀的開發人員的工作時,這種級別的工作可能並不明顯。他們所做的一切看起來都很出色,但你沒有看到的是,即使是開發界的大腕兒,也可能在向其他人展示他們的軟體之前就已經拋棄了第一個和第二個版本。拋棄之前的程式碼並開始編寫另一個版本是一種強大的方式,可以將“更好地”融入到您的個人工作流程中。
如果沒有其他情況,通過“寫三次程式碼”可以告訴你解決問題的方法有多少種。而且它可以防止你陷入停滯不前的狀態。
5閱讀大量的程式碼
你可能希望我能夠引導這個建議,實際上,這也是提高程式設計技能的最常見和最有價值的建議。閱讀他人程式碼的原因也很重要,只是不是很明顯而已。
當閱讀其他人的程式碼時,你會看到其他人是如何解決程式設計問題的。但不要把它當成是文學作品,而是把它當成一種教訓和一種挑戰。想要變得更好,問問自己:
那塊程式碼我該怎麼寫呢?既然你已經看到了別人的解決方案,那你會有什麼思路呢?
我學到了什麼?我如何將這種技術應用到我過去編寫的程式碼中?(“我從來沒有想過可以使用遞迴下降處理那塊的邏輯”)。
我如何改進這段程式碼?如果這是一個開源專案,你對自己的解決方案更有信心,那就去做吧!
以作者的風格編寫程式碼。練習這個可以幫助你進入作者的思維,這可以提高你的同情心。
不要只是漫不經心地思考這些步驟。寫下你自己的答案,無論是在個人日誌、部落格、審查程式碼的過程中,還是與其他開發人員交流的論壇中。就像向朋友解釋問題可以幫助你解決問題一樣,記錄和分享你的分析可以幫助你理解為什麼你會以一種特定的方式對別人的程式碼做出反應。這是我之前提到的自省的一部分,幫助你冷靜地判斷你自己的優點和缺點。
警告:在不需要成為一名優秀程式設計師的情況下,很容易閱讀大量的程式碼,就像一個想要成為作家的人可以在不提高自己散文的情況下閱讀偉大的文學作品一樣。很多開發人員都在尋找開源或其他軟體來“找到答案”,而且很可能是複製和貼上程式碼來解決類似的問題。這樣做實際上會讓你成為一個更糟糕的程式設計師,因為你盲目地接受別人的智慧而不去審視它。(另外,它可能比夏季野餐還要麻煩,但因為你沒有花時間去理解它,你永遠不會意識到你就像是大自然的搬運工一樣,只是在做體力勞動。)
6不要把編寫程式碼僅僅看作是任務
從事個人程式設計專案有很多優勢。首先,它為你提供了一種學習工具以及學習技術的方法,而這些工具和技術在你當前的工作中是用不到的,但是這將使你在下一份工作中更有市場。無論你是為開源專案做貢獻,還是為當地社群組織做公益工作,你都能獲得技術技能和自信。(此外,你的個人專案向潛在僱主證明,你是一個從不停止學習的人。)
編寫程式碼的另一個好處是它強迫你自己去解決問題。你不能把這些難啃的問題留給別人,所以它會讓你過早地尋求幫助。
專業提示:不要只選擇那些你永遠不會失敗的個人專案。你需要失敗!但是你可能不想在工作中失敗,或者給你限定期限時你也不想失敗。
7盡一切可能做到與其他開發人員面對面的工作
傾聽別人的意見是很有幫助的。這可能意味著結對程式設計,或者參加黑客馬拉松,或者加入一個程式設計使用者組(比如Vermont Coders Connection)。當你為一個開源專案做貢獻時,要關注一下你從使用者和其他開發者得到的反饋意見。你在他們的批評中看到了什麼共同點?
這樣做你可能會很幸運地認識了一位可以完全信任的導師,無路是編碼技術還是職業決策,你都可以完全信任他。所以不要浪費這些機會。
8你是在學習技術,而不是在學如何使用工具
程式語言、工具和方法這些都只是一時的。這就是為什麼需要你在這麼多的語言和框架中儘可能多的獲得經驗。重點關注程式設計基礎,因為基礎永遠不會改變;更關注體系結構而不是如何程式設計。如果你覺得做某件事只有一種正確的方式,那可能是時候進行現實核查了。條條框框的限制會妨礙你學習新事物的能力,也會使你很難適應變化。
我可以繼續前進,但自我提升的關鍵原則是知道何時停止。
雲端計算免費課程火熱開講中,5天運維經典課程免費學,會雲端計算的運維人才到底需要掌握哪些技術,未來前景發展怎麼樣?跟隨行業大咖一起剖根究底,點選文末“閱讀原文”或長按下方二維碼即可報名免費課程!抓住免費學習的機會,逆襲2019~~
PS:記得查收小編送你的免費大禮包呦~
福利 | 一萬多套PPT模板等你免費來拿!無條件領取!
免費送 | 1000多套簡歷模板免費拿,附贈簡歷製作教程!
免費領 | 《Shell指令碼 100例》電子書免費拿,運維必備乾貨~
▼▼點選【閱讀原文】,5天運維免費課程,開講在即!
相關文章
- 知識沉澱 | 遊戲互動設計經驗分享遊戲
- 程式設計師的十年工作創業血淚史,萬字長文,仔細讀完,受益匪淺程式設計師創業
- 必看!機器學習中的12條寶貴經驗!機器學習
- 能讓你受益匪淺的10個css使用技巧CSS
- 幾類歷史資料沉澱的方案過渡
- 初學前端小白,如何撕去菜鳥標籤,這些學習經驗絕對讓你受益匪淺!前端
- 泡沫過後,沉澱下來的AI晶片將落在何處?AI晶片
- 分享 10 個我常逛的國外技術社群,真的受益匪淺!
- 5億個token之後,我們得出關於GPT的七條寶貴經驗GPT
- 沉澱自己(此文無價)
- 直播預告|多年終端安全沉澱,源自支付寶的全鏈路安全防護建設
- 出海休閒思考與沉澱
- 程式設計師的管理經驗程式設計師
- 程式碼編寫之道:十條經驗引領高效程式設計之旅程式設計
- 61條物件導向設計的經驗原則物件
- 8年沉澱、坐擁2000萬玩家,這個在海外爆紅的次時代MMO要來了
- 南大通用參加1024程式設計師節 沉澱自主智慧財產權 共建中國標準程式設計師
- 程式設計師面試經驗程式設計師面試
- 十年沉澱,重啟開發之路
- 清華辦 AI:除了洞見,更有沉澱AI
- 2018 沉澱 | 年終總結 | 掘金年度徵文
- 基於業務沉澱元件 manage-table元件
- 基於業務沉澱元件 => manage-table元件
- 來自萬智牌設計師的經驗分享:限制自己的設計
- 扎心!一個3年經驗的程式設計師經驗之談!程式設計師
- 遊戲中“血條”設計的進化史遊戲
- 計算機課程程式設計經驗分享計算機程式設計
- 10個程式設計好習慣:優秀程式設計師的經驗分享程式設計師
- 有哪些讓程式設計師受益終生的建議程式設計師
- 來自10位 IT 大牛的23條經驗教訓
- 給程式設計師的幾點程式設計經驗----《編寫高質量程式碼》程式設計師
- Go 併發程式設計中的經驗教訓Go程式設計
- 邦芒寶典:職場前輩的6條經驗之談
- Python語言程式設計 (第11期) 測驗8: 程式設計方法學Python程式設計
- 一個有40年編碼經驗的老外程式設計師的職業經驗程式設計師
- 7年沉澱之作--滴滴Logi日誌服務套件套件
- 有史以來最具影響力的 5 位程式設計師程式設計師
- 有經驗的程式設計師應該如何提升自己程式設計師