當前位置: 華文問答 > 數碼

什麽才算是真正的編程能力?

2016-10-28數碼

懂得取舍。

在有限的時間內,幾乎沒有系統可以做到完美。要快,要安全,高並行,易擴充套件,效率高,容易讀,高內聚,低耦合...

大到一個網站,小到幾個 class,工程師都要清楚,要取什麽,舍什麽,這並不是那麽容易的事。我們都有自己的性格,有的求新,有的求穩,有的求快,但具體到一個專案時,知道如何取舍對這個專案最好,很重要。

學校裏的作業,沒人在意你是不是寫在一個大的main()裏面,能跑就行。但做專案的時候,太多的東西要考慮,有時候,寧可簡單易讀,也不用快那麽一點點;有時候,要做太多看不到的工作,卻絲毫馬虎不得;有時候,寫了不如不寫,留白也是一個學問。

曾經接手個專案,裏面幾乎所有的 class,每個都有interface,各種繼承,各種實作,理由是靈活性高,易擴充套件。真的易擴充套件嗎?

我不知道。沒多久,客戶的需求就改了,各種拎不清的繼承實作都化為烏有,一大半要重寫。

問題在哪裏?

不是編程不好,而是取舍的不好。在那個階段,為30%的需求,花200%的努力,追求設計的滴水不漏,卻舍棄快速實作,取得反饋的時機,這就是失誤。需求總會變,客戶看到越早,修改越早,影響越小。

很聰明的人,也可能做出很難用的系統,不一定是編程不好,可能是不願,或不屑於取舍。不同的階段,不同的專案,要取舍的東西也不同。編程只是手段,目的是解決問題,能力高不高,要看問題解決的好不好。不在於使用了什麽高端演算法,或是復雜的框架。

懂得如何取舍並不容易,需要對問題的深刻理解,對技術的胸有成竹,和身後無數個踩過的坑。但重要的是有取舍的意識,主動思考取舍什麽,這樣學的才會快。