你當前所在位置:首頁 > IT技術探討 > 程序員最重要的技能,大多數人都忽略了!

程序員最重要的技能,大多數人都忽略了!

作為一名程序員,最重要的技能是什么?很多人第一時間想到的答案是“編寫代碼”。誠然,編寫代碼程序員你職業中最重要的部分。但今天我要說的程序員最重要的技能絕不是編寫代碼,如果你不掌握這項技能,寫代碼將會變成你所有痛苦的來源。


程序員最重要的技能


在你的編程生涯中,你不可避免的地將會處理各種關于不同類型代碼的請求。而每個請求都可能會迫使你做出一些艱難的決定。


然而,這里有一個問題:你是否應該編寫向你請求的所有代碼?這個問題給我們引入了一個程序員所能學到最重要的技能:



“知道什么時候不編碼可能是程序員所能學到最重要的技能。”


——《可讀代碼的藝術》



然而,對編寫代碼這件事過于興奮就會讓我們變得盲目。這種情緒會讓我們忽視了一些重要的事實,而這些事實可能導致更大的問題,讓我們在未來不得不再去解決這些更嚴重的問題。



一、那么,我們往往容易忽略哪些重要的事實呢?


你寫的每一行代碼都是:


1、必須被其他程序員閱讀和理解的代碼

2、必須被測試和調試的代碼

3、會增加軟件缺陷的代碼

4、可能會在將來引入新 bug 的代碼


二、怎么知道什么時候不應該編碼呢?


1、了解軟件的用途及其核心定義,這是知道什么時候不應該編寫代碼的第一步。


請容許我舉一個例子。假設,你的軟件只有一個目的:管理電子郵件。基于這個目的,發送和接收電子郵件是該軟件項目的兩個基本功能。你就不應該期待這個軟件同時也能管理你的待辦事項清單,難道不是這樣嗎?


因此,你應該拒絕與此核心定義無關的任何可能的特性請求。在這種時候,可以確切地肯定你明白什么時候不應該編寫代碼。


2、永遠不要隨意擴展軟件的用途。


一旦知道了什么內容對你的項目是必不可少的,那么在下一次評估所有可能出現的代碼請求時,你會意識到這一點。你將清晰地知道編寫代碼的需求是什么。這個系統應該實現哪些特性?哪些代碼值得編寫?于是,你可以勇敢地去質疑一切,因為你確切地明白那些不必要的代碼是如何拖垮你的項目的。



三、知道什么時候不應該編碼可以使你的代碼庫更小。


當你啟動一個新項目時,一開始系統里只有兩三個源文件。一切看起來都那么簡單明了。而編譯和運行代碼僅僅需要幾秒鐘。這時,你完全清楚在哪里可以找到你想要的東西。


然后,隨著項目的增長,將會有越來越多的源文件填滿你的目錄。其中每個代碼文件動輒就包含數百行代碼。為了更好地組織這些代碼,你很快就需要設立多個目錄。記住哪個函數調用其他函數變得比以前更加困難,而追蹤 bug 需要付出更多的工作量。管理這個項目變得越來越困難,于是,你需要更多的程序員來幫忙。然后,溝通開銷隨著程序員數量的增加而急劇增加。你的項目會變得越來越慢。


最后,這個項目變得非常龐大。添加新特性變為一種痛苦。因為即使是很小的改變也需要花上幾個小時。修復當前的 bug 總是會引入新的 bug。你的項目開始趕不上最后期限……


現在,這個項目對你來說是一場折磨。為什么會變成這樣?


這都是因為你不明白什么時候不應該編碼。于是你對所有可能的特性請求都毫不猶豫地“是”。你是盲目的。編寫那些不必要的新代碼會讓你忽略軟件最必不可少的核心內容。


這聽起來就像恐怖電影一樣,是嗎?


但如果你一直對每件事都說“是”,這種恐怖的情況就會發生。你需要知道什么時候不需要編碼,并從項目中刪除所有不必要的代碼。這將讓你的工作變得更容易,并使你的軟件的壽命更持久。



“我生產效率最高的一天就是扔掉了 1000 行代碼。”


——Ken Thompson



我知道,要明白什么時候不需要編寫代碼,這點做起來是很難的。即使是高級程序員來說也并不容易。也許,我在這篇文章中所寫的東西對于初級程序員來說很難理解,但我認為本文的敘述方式還是能讓人理解這些要點的。



請繼續編碼吧,但要知道什么時候需要對編碼說“不”。

課程預約

极速1分彩_Welcome