關於程式設計,理應傳授的10件事

2021-05-27 09:33:52 字數 1827 閱讀 9221

我依然記得當我完成學業時,我是多麼的天真。那時我深信自己已經準備好進入任何一家軟體公司,並開始成為乙個頂級的開發人員。顯然,開始工作後沒多久我就意識到,還有很多事是我所不了解的。

在不斷吸取經驗的同時,我一直在努力學習那些我從來沒有學過的,但卻是成為優秀的開發人員所應了解的基本知識。以下是我希望自己能在學校就學到的10件事。

1.我們總是錯的

開發人員有著相當大的自我意識,包含了一些其他的非技術性缺陷,這也正是為什麼我們很難發現我們做錯了什麼。我看到過很多無休止的設計討論,開發人員不斷地發表自己的想法……呵呵!猜猜怎樣……我們都錯了,唯一的區別就是我們犯錯的離譜程度不同。

理解並接受這個事實非常重要,我們只有這樣做了,才能敞開心胸去聽聽別人的意見,採用他們的想法,來得出乙個更好的解決辦法。

2.事情若有可能出錯,就一定會出錯

也就是說「希望驅動開發(hope driven development)」,如果你對於某些事並不確定,如果你發現自己使用了「應該」這個詞,那你就麻煩了。

而這只有乙個解決方案,盡己所能去保證它不會出錯,這可能意味著你需要編寫乙個測試、除錯並驗證需求……

3. 所有的**都爛

在我抱怨那些我碰到過的**十年之久後,我得出了乙個精闢的結論,所有的(包括我自己寫的)**,都爛。當然,爛還是有等級之分的,但即便是我見過寫得最好的**,也是難以讀懂的。

這並不意味著把你的**寫得更好是沒有意義的,恰恰相反,最好和最壞的**還是有天壤之別的。

4. 錯誤(bug)總會存在

永遠存在!問題只在於要發現它困難與否。

5. 客戶最大

許多客戶並不在乎你在方案中使用了哪些技術,應用程式需不需要做更多的事……或通俗上說,你是否使用了好的實踐方案。

也因為我可以想象,要是我只說了前面那一段,我會收到多少惡評,讓我說得更清楚些……我想說的是,我們永遠不應該忘記客戶的立場,有時候,開發人員為了最佳實踐而在專案工程中過度堅持採用(某些)技術,但要記住,若這些技術無法給客戶帶來價值,那就放棄吧!

6. 紙上談兵是行不通的

我曾認為,我可以在前期就把我的整個設計置於紙上,然後只要將缺漏處填上就好,但這樣根本行不通。

軟體開發是複雜的,若不親手去碰碰看,很難看到所有的實際層面以及它們之間的關係。因此,在前期保持規劃與設計是很有用的,但不要過度堅持,也不要把設計圖表當作合約固守。

7. 少即是多

或者,你可能知道更好的說法是:「keep it ******, stupid!」(保持簡單,kiss設計原則)。所以,如果沒有必要的就捨棄吧!因為要記住:「事情若有可能出錯,就一定會出錯。」 (編註:除了kiss原則之外,此文還介紹了其他一些軟體設計原則。)

8. 編寫**只是我們所做工作的20%而已

請準備好,花80%的時間用於思考、除錯、測試、開會、談話……而所有的其他活動都是非常重要的,所以若要成為乙個優秀的軟體開發人員,你必須培養廣泛而全面的技巧(skill),而不僅僅是技術(technical)。

9. 客戶永遠不知道他/她想要的是什麼!

客戶若有需求,或是想法,但是他們不知道詳細情況……軟體開發要做的工作就是,發現細節並去除所有的不確定性,將這些需求轉換成客戶想要乙個應用程式。

10. 已經有人做過了

所以不要再重新發明wheel,用谷歌找找看,或者更好的方法是,請教你的同事,很多時候他們可能都已經做了相同、或非常類似的事情。

原文出自:******goodsoftware.com

關於程式設計,大學沒有傳授的10件事

我依然記得當我完成學業時,我是多麼的天真。那時我深信自己已經準備好進入任何一家軟體公司,並開始成為乙個頂級的開發人員。顯然,開始工作後沒多久我就意識到,還有很多事是我所不了解的。在不斷吸取經驗的同時,我一直在努力學習那些我從來沒有學過的,但卻是成為優秀的開發人員所應了解的基本知識。以下是我希望自己能...

關於程式設計,大學沒有傳授的10件事

我依然記得當我完成學業時,我是多麼的天真。那時我深信自己已經準備好進入任何一家軟體公司,並開始成為乙個頂級的開發人員。顯然,開始工作後沒多久我就意識到,還有很多事是我所不了解的。在不斷吸取經驗的同時,我一直在努力學習那些我從來沒有學過的,但卻是成為優秀的開發人員所應了解的基本知識。以下是我希望自己能...

關於程式設計,大學沒有傳授的10件事

我依然記得當我完成學業時,我是多麼的天真。那時我深信自己已經準備好進入任何一家軟體公司,並開始成為乙個頂級的開發人員。顯然,開始工作後沒多久我就意識到,還有很多事是我所不了解的。在不斷吸取經驗的同時,我一直在努力學習那些我從來沒有學過的,但卻是成為優秀的開發人員所應了解的基本知識。以下是我希望自己能...