軟件開發10年學會的一些東西
不要只會一種語言
很多人對于一門編程語言的喜愛程度往往超過他們自己的認知,有時候,他們會用一門編程語言來解決所有問題,然而現實世界中,每個語言都有自己的最佳應用場景。
我們都聽過這樣一句話,當你手中有一個錘子,你看什么都像釘子。當你只會一種語言的時候,你的思維往往也被局限了,而這是會影響你的編程思維的。
vim永遠都值得你學的編輯器
對于編輯器之前我并沒有特殊喜好,我用過ide,也用過sublime,atom,vscode,然而最后我還是更喜歡使用vim。
每當看到那些在vim下快速編程的大神們,你會感覺到編程原來可以如此拉風。
我喜歡vim的速度,它能夠讓我的思想和編程速度相匹配,當你的編程速度無法跟上思想的時候,你可以嘗試下vim,一旦你體會到它的精髓,一定會愛上它。
算法和數據結構是你的基本功
在我高中的時候,我的化學老師就曾對我講過,學習任何東西都要把基礎打牢,為了打好基礎,你可能需要練習無數遍。
對于編程來說,算法和數據結構就是我們的基本功。你需要時不時地就溫習它們。現在很多面試者抱怨手寫紅黑樹太難,然而這些都是作為一個程序員必備的基本功,就和相聲的報菜名一樣,你可能不需要每天練習,但是無論何時,當你被問起它的時候,你都能夠把它手寫出來。
技術永遠是解決問題的
技術的發展永遠伴隨著問題的產生,正是一個個問題的解決提升了技術的發展。
你永遠不要抱怨問題有多么難處理,技術就是為了解決問題的。你可以抱怨需求的不合理性,但是永遠記住,解決問題才是你應該去做的,而解決問題的同時,就是你能力提升的過程。
你還應該記住,解決問題的速度越快,越有利于產品的發展。
平衡優化和速度
程序員對自己的代碼都有嚴格的潔癖,他們希望可以寫出完美的代碼,然而現實中,沒有十全十美的代碼,只有bug百出的代碼。
很多人喜歡寫出符合規范的代碼,喜歡通過tdd來驅動開發來減少錯誤,然而現實中你會發現,很多情況下為了開發的進度,所有的規范都可以被拋棄,唯一的規范就是在最短的時間完成產品的功能。
產品沒有完美,只有相對完美,我們也不可能一開始就設計出或者寫出相對完美的代碼,我們只能通過不斷完善才能讓代碼更優。重構和改進是你可以提升代碼質量的第二次機會。
項目進度永遠無法精準評估
無論你是團隊工作,還是你單打獨斗,你都無法精準預測項目的最終進度。
有些看似簡單的問題,但是卻可能產生意外的困擾,你可能需要花費額外的精力來處理它。而有些你預測的困難問題,可能比你實際想象的還要困難。
有時候你完成項目的90%,卻發現最后的10%卻花費了你90%的時間。
軟件開發中各種險象環生,你需要時刻提高警惕,每一次順利完成項目你都要謝天謝地,因為你已經足夠幸運。
當你認為可能產生問題的地方一定會產生問題
你是否有過這樣的經歷,你認為某個地方的代碼可能有問題,但是測試的時候就是沒有發現,當你項目上線的時候,它就會完全暴露出來。
代碼正常運行是最基本的要求,而bug也總是產生在意外的情況下。
沒有人可以考慮到所有可能發生的意外,我們只能總結前人留下的經驗,避免犯那些重復的錯誤。
總結
軟件開發它是一種職業,需要我們有工匠精神,專注,創新是我們需要時刻牢記的。
不斷學習,十年磨一劍,記住,你寫得最好的代碼永遠是下一次。