你的代碼水平停留在幾年前?

互聯網是一個飛速發展的領域,程序員如果跟不上時代很容易被淘汰。


你的代碼水平停留在幾年前?


作者 | channingbreeze



你的代碼水平停留在幾年前?


到底該學什麼技術?


我相信每個程序員都有一段迷茫期,技術發展這麼快,到底應該學習什麼技術?

剛開始學javaweb的時候,我們都學過SSH,但是現在再來看,Struts基本白學了,Hibernate差不多也沒用了,只有Spring是收益最高的。

我相信很多學Web編程的人還學過VBScript,現在來看基本也沒有什麼用了。

與此同時,我們還要學習很多新技術。

運維人員以前只要會點Linux shell就行,現在必須會Docker、K8s。前端人員以前會點JQuery就行,現在必須會Node、React等。

互聯網發展的淘汰的速度如此之快,我們昨天還在拼命學習的東西,今天就沒人用了,那麼到底應該學什麼?怎麼學習?

你的代碼水平停留在幾年前?


談談我的幾個觀點。


你的代碼水平停留在幾年前?


第一、顛覆性技術出現,一定要跟進。不一定要精通,但是基本的瞭解一定要有。

比如最近出現的區塊鏈、AI這種新的領域,還有在老的領域中的新技術,比如前端的Webpack、MVVM,後端的Spring Cloud、Docker、K8s等。你需要去了解這些技術,並且弄明白它為什麼火,而其他技術為什麼沒落了。

第二、不要只關注共性,主要研究新技術獨特之處。比如很多學後端的是C出身,後來學習Java,這時候應該把重點放在虛擬機,接口上面,而不是數據類型,控制語句等。

再學習Node的時候,應該注重單線程模型,回調處理。再學習Go的時候,注重Goroutine併發。如果學了4種語言,都只能寫點Helloworld、ifelse,其實和只學一種沒有區別。

第三、基礎知識要深入研究。第二條講的是學習新技術的時候,要研究新技術的特別之處,但是並不意味著,基礎就不需要研究。相反,很多地方都用到的基礎知識,一定要刨根問底。

比如我們在寫Web前端、Web後端、配置Nginx時,都繞不開Http和Https協議。所以Http和Https作為幾項技術基礎就有必要深入研究。

但是懂得很多語言,知道很多技術,不一定能寫出高水平代碼。


你的代碼水平停留在幾年前?


代碼水平如何衡量?


我很多時候都在想什麼樣的代碼是好代碼,什麼樣的系統是好的系統。

一個完全沒有Bug的系統是不存在的。我想一個好的系統是可調試的,可擴展的,可配置的,好的代碼是可讀的,魯棒性強的,松耦合的,可測試的,可以快速定位的。

可以運行,沒有故障的系統肯定是好的系統。但是沒有故障幾乎是不可能的,我覺得好系統的另一個指標就是出故障了能夠快速找到問題代碼,並且能夠快速進行故障恢復。

而我們在設計系統或者寫代碼的時候就要考慮這些因素。好的代碼其實很多時候,就取決於寫代碼那個人的代碼素養。


你的代碼水平停留在幾年前?


什麼是代碼素養?


很簡單的一個數學問題,4的平方根是多少?有多少人會回答2呢?

寫代碼也是一樣,很多人都只會考慮一種情況,這其實不是智商也不是能力問題,只是考慮問題的時候是否嚴謹。

而當你告訴他這個地方需要判空,那個地方需要加try catch的時候,他往往不以為然,覺得這只是一時沒考慮到而已。

很不幸,這種素養很難短時間內養成,而這種沒有代碼素養的人,寫大項目或者複雜系統,寫出來的代碼將是災難。


你的代碼水平停留在幾年前?


就像一堆沙子,你把水倒進去,你根本不知道哪裡在漏水,但是到處都在漏水,水一下子就沒了,你只能推翻重寫。而好的代碼應該像一塊鐵板,水倒上去滴水不漏。

代碼素養只能靠平時慢慢積累,多看別人是怎麼處理細節的,自己寫完代碼後多想想TestCase,多多測試。

代碼水平絕對不是會多少種語言,會多少個框架。而是你在寫代碼的時候的種種思考,對細節的處理,對各種情況的判斷,代碼的清晰程度等等。

所以,你的代碼水平有提升嗎?


分享到:


相關文章: