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















 
 
 




 
 
 
 