風雨20年 我所積累的20條程式設計經驗

2021-05-24 15:38:57 字數 1979 閱讀 6580

幾周前,布萊斯在網上發帖,漫談自己對程式設計工作的看法。在reddit上引起了廣泛討論。討論的焦點集中在程式設計師的等級——「優秀」、「良好」、「糟 糕」和「極差」。我發現,討論中一些用語十分不妥。"好"與"壞"都是道德評價,評價之後似乎便給人貼上了永久不變的標籤。

可以肯定的說,我曾被另乙個程式設計師稱作是 「極差」的程式設計師。我也承認,我確實寫過一些極差的**;但我也自認為曾寫過相當多的「好」**。

要評判很久以前寫出的**是優是劣很不容易,因為現在已經不知道當時為什麼編寫這些**,也不知道為誰編寫了這些**。

問問自己,現在正為誰編寫**?

為了按時交付任務

也許最常見的原因就是為了按時交付任務。走走捷徑,寧可複製貼上刪掉幾行**也不願意重構**,然後匆匆交工。我們都這麼做過,也都知道這是不妥的。

為了突出的考核結果

當管理者本身不懂**,卻有一套程式設計師「好壞」評價標準時,會出現什麼情況?程式設計師要理清這套標準並不困難,因為他們的特長就是解決難題,然後他們會努力完善自己,從而迎合評價標準。**行數、已解決bug數量、注釋的密度、**深度等都可能是衡量編碼人員的指標,但這些又都是相對標準,而不是絕對標準。也有些新穎的衡量手段(比如「已刪除**的行數」)。

為計算機編寫

從某種意義上來說,所有的程式都是為計算機編寫的,但計算機應當程式設計師最後才考慮的。計算機只注重語法,不注重注釋和變數名稱。大多數程式語言也不注 重間 距與**格式化。當然,你還是要選擇正確的演算法,但不要想著通過微小的優化來加速演算法。在for迴圈中,使用i++還是++i並不重要,編譯器和jits 會解決這些問題。在考慮優化演算法之前,還是應該先把**寫的清晰易懂。要知道編碼在使用通用模式時,計算機和編譯器執行的更快。

為了自己

雖然學習一門新的程式語言很有趣,不過如果你將整個公司架構都建立興趣之上是不切實際的。hacker news上曾有一則相關故事,lambda the ultimate**上還有更糟糕的案例。如果你是為自己寫**,你可以不加注釋,可以隨意使用糟糕的變數名,甚至使用其他「怪癖」,但這樣寫出來的怪異 **別人很難看明白。不過沒關係,因為每個人都會時不時想在某些事上找點漏洞出來。

為後來者程式設計

程式設計是把抽象觀念轉換成計算機可以理解的形式。即使是細微的抽象觀念,轉換成**也是很不簡單。因此很多軟體專案都衍生出了成千上萬甚至是上百萬行的**,相當於一本**書。通過有限的語法與其他人交流這些概念,大多數時候都注定失敗。

我所寫的最出色**就是我願意花時間來新增注釋、列出**流、甚至附上一些ascii文字圖的**。編寫過程專注於如何把自己抽象概念,與今後將有可 能讀到這些程式的、不幸的程式設計師進行傳遞和交流。我認為專注於這種交流,**會變得越來越好,因為你會更深入地思考抽象概念以及如何對正在做的事情分層, 而不是一味的編寫**和轉到下乙個程式塊。

注釋使**變得更好理解。每當你再次做某事的時候,總會比上一次更好。當你在編寫**和注釋時,就是將抽象概念向讀者解釋了兩遍。這會迫使你思考更 多。很多次我寫完乙個**以後都會對它寫乙個注釋。然後從頭修訂**,甚至改變了一些小地方,例如選擇更好的變數名稱,來更好的交流想法。

評價**/程式設計師

綜合前文所述,可以看出,程式設計人員孰優孰劣確實難以定奪。因為難以明確他們編寫**目的。你可以考評**,但你無法得知**編寫者當時的心理狀況。或 許那天是星期五,他急著要趕去維加斯度週末;也許是程式出了問題,他不得不採取緊急補救措施,但這些補救措施一用就是5年;也可能他原本就是個不合格的程 序員。

也許編**是一門藝術?

我不知道如何公正地考核程式設計人員,我想也沒幾個公司能做到。看看程式設計師的面試流程就清楚了,他們只不過坐在桌前被問幾個問題而已;根本沒有什麼標準測試能讓電腦科學專業的學生證明自己已經掌握了必要的技能。

程式設計工作帶有太多藝術色彩,所以不可能通過測試手段或者固定的考核標準來評價。

風雨20年 我所積累的20條程式設計經驗

原文作者喬納森 丹尼可 jonathan danylko 是一位自由職業的web架構師和程式設計師,程式設計經驗已超過20年,涉足領域有電子商務 生物技術 房地產 醫療 保險和公用事業。正如喬納森在文中所言,本文適合剛畢業的大學生和剛入門的程式設計師。如果你已是高階開發人員,或許你在本文中看到自己的...

風雨20年 我所積累的20條程式設計經驗

變化 13.經常檢查 在公司,你的 要經常檢查 包括自查和其他同事檢查 不要把別人的檢查,看成是對 風格的苛求。應該把它們看作是有建設性的批評。對個人來說,經常檢查你的 並且自問,我怎樣才能寫得更好呢?這會讓你加速你的成長,讓你成為乙個更優秀的程式設計師。14.回顧你的 在看到自己以前的 時,通常會...

風雨20年 我所積累的20條程式設計經驗

編者按 原文作者喬納森 丹尼可 jonathan danylko 是一位自由職業的web架構師和程式設計師,程式設計經驗已超過20年,涉足領域有電子商務 生物技術 房地產 醫療 保險和公用事業。正如喬納森在文中所言,本文適合剛畢業的大學生和剛入門的程式設計師。如果你已是高階開發人員,或許你能在本文中...