工作六年后,對軟件開發(fā)的一些新觀點(diǎn)
一個(gè)人的智力是否屬于上乘,要看腦子里能否同時(shí)容納兩種相反的思想而無礙其處世行事;今天 pshu 翻譯了一位有 6 年工作經(jīng)驗(yàn)的軟件工程師的觀點(diǎn)。希望這些立場鮮明的觀點(diǎn)可以成為你提高大腦容量的素材。
原文地址 https://chriskiehl.com/article/thoughts-after-6-years 《Software development topics I've changed my mind on after 6 years in the industry》
以前懷疑但現(xiàn)在認(rèn)同的觀點(diǎn)
當(dāng)你需要和不同經(jīng)驗(yàn)的開發(fā)人員一起合作時(shí),使用強(qiáng)類型語言更適合一些(譯者注:如Typescript)
站立會議(晨會的一種形式)對幫助新人很有用
回顧會(scrum 開發(fā)模式中用來總結(jié)前一次迭代中得失的會議)還是有其存在意義的,因?yàn)樗軒兔ξ覀兗m正開發(fā)過程中的錯(cuò)誤;它并不是敏捷開發(fā)中 scrum master 想出來浪費(fèi)時(shí)間多余的會議。
軟件架構(gòu)很重要。一個(gè)好的抽象配上一個(gè)糟糕的實(shí)現(xiàn)不會對代碼造成多嚴(yán)重的影響;但是一個(gè)錯(cuò)誤的抽象和分層遺漏,就導(dǎo)致代碼很容易變爛。
Java 并不垃圾。
投機(jī)取巧、奇技淫巧的代碼不是好代碼;代碼的可讀性最重要。
不要迷信編程范式,任何編程范式中都可能寫出爛代碼。
所謂的“最佳實(shí)踐”都是有具體場景的,并不是萬金油。如果盲目地追求“最佳實(shí)踐”,那很有可能成為最佳笨蛋。
如果沒有必要,合格的工程師是不會主動(dòng)去設(shè)計(jì)一個(gè)可擴(kuò)展的系統(tǒng)。
代碼的靜態(tài)分析很有用(譯者注:比如 lint,但是糾結(jié)具體的規(guī)則,參見后面“始終認(rèn)同的觀點(diǎn)”的第一條)
DRY(Don’t Repeat yourself )只是用來規(guī)避一類特殊的問題,而不是一個(gè)目標(biāo)。
一般情況下,關(guān)系型數(shù)據(jù)庫(RDBMS)比非關(guān)系型數(shù)據(jù)庫(NoSQL)好。
函數(shù)式編程只是一個(gè)工具,不是靈丹妙藥
新學(xué)習(xí)到的觀點(diǎn)
編程時(shí)遵循的原則應(yīng)該按照以下順序:YAGNI, SOLID, DRY。
YAGNI:You aren't gonna need it, 不要去寫你目前不需要的功能,大部分預(yù)測未來是無效的;
SOLID:面向?qū)ο笤O(shè)計(jì)中的 5 個(gè)原則:
- Single-responsibility principle單一職責(zé)原則
 - Open–closed principle 對擴(kuò)展開放對修改掉封閉原則,也簡稱開閉原則
 - Liskov substitution principle 李氏替換原則
 - Interface segregation principle 接口隔離原則
 - Dependency inversion principle 依賴翻轉(zhuǎn)原則
 
DRY:Don't repeat yourself, 只做一次原則
如果你這三個(gè)縮寫都懂,那么可以嘗試用自己的想法和這個(gè)觀點(diǎn)PK下,如果這些名詞都不懂,最好空杯心態(tài)先接受學(xué)習(xí)下。
紙和筆仍舊是最好的編程工具,但他們?nèi)晕幢淮罅渴褂?/strong>
在純粹主義和實(shí)用主義之間做一個(gè)折中,通常都會是個(gè)好主意
增加更多的技術(shù)棧并不是一個(gè)好主意
直接和用戶溝通往往能花更少的時(shí)間并且更加準(zhǔn)確地了解問題。
“可擴(kuò)展性”這個(gè)詞在程序員心中是種神秘的迷信;只要提了這個(gè)詞就會驅(qū)使他們進(jìn)入癲狂的瘋狂狀態(tài);做再殘酷的事情好像都是合理的。
盡管戴著“工程師”這個(gè)高帽,但是他們大部分工程師決策都是盲目地使用現(xiàn)有的技術(shù)框架或者編程模式,不做任何技術(shù)分析和調(diào)研。
90%甚至 93%的項(xiàng)目經(jīng)理在項(xiàng)目中其實(shí)可有可無;即使明天他們突然消失了,也不會對項(xiàng)目有任何負(fù)面影響,甚至可能還能提高效率。
在進(jìn)行了 100 多場面試之后,我發(fā)現(xiàn)面試是完全沒有用的;但我也不知道如何更好地面試。
始終認(rèn)同的觀點(diǎn)
糾結(jié)于代碼風(fēng)格,lint規(guī)則和其他瑣事的人都是瘋子
代碼覆蓋率和代碼質(zhì)量之間沒有關(guān)系
單體倉庫在大多數(shù)情況下更好。
TDD純粹主義者最菜。他們脆弱的小腦袋里面容不下其他現(xiàn)存的工作方式。
在工作10年后,我們再看看這些看法有什么改變。
翻譯完。















 
 
 




 
 
 
 