[心得] (轉)軟體開發六年後我改變想法的事情

軟工

57351


看到不錯的文章 翻譯分享一下

原文:
https://chriskiehl.com/article/thoughts-after-6-years


翻譯:

軟體開發六年後我改變想法的事情:

- 如果你的隊友經驗參差不齊,Typed languages 是比較好的選擇

- Standups 會議以注意新人來說是有用的

- Sprint retrospectives 如果拿來做真正的流程修正(course correction)是有用的;
而不是一些敏捷/scum master 拿來浪費大家時間的

- 軟體架構比啥都重要。有好的抽象再爛的實作都不太會弄髒 code base;爛抽象或
missing layer 可以讓 code base 變成一坨屎。

- java 沒那麼爛

- Clever code 通常不是什麼好 code;清晰好讀(Clarity)的 code 最重要

- 爛 code 可以被以任何方式寫出來 (in any paradigm)

- 所謂的 best practices 是要看上下文,並非通用解。盲目追求會讓你看起來像白癡

- 在你不需要時硬去設計一個 scalable system,你就是爛工程師

- Static analysis 有用

- DRY(dont repeat yourself) 是為了避免特定問題,並不是最終追求目標。

- 一般來說 RDBMS > NoSql

- Functional programming 是另一個工具,不是萬用解/靈丹


一路走來堅持的觀念

- YAGNI, SOLID, DRY 請按造這個順序
- YAGNI:You aren't gonna need it
- SOLID: 某個 OO 原則(單一功能、開閉原則、里氏替換、介面隔離、依賴反轉)
- DRY: dont repeat yourself

- 紙筆是最好的開發工具但很少人用

- 用乾淨/可讀(purity)為代價換取實用性是個好方法

- 狂導入額外的技術不是好方向

- 直接跟客戶/需求端理解需求會比較快又精確

- "scalable"這個詞在碼農中有股神秘的力量,僅僅這個字可以讓他們陷入瘋狂,然後僅
僅為了這個字可以做出瘋狂的設計

有點難翻XD 原文:

The word "scalable" has a mystical and stupefying power
over the mind of the software engineer.

Its mere utterance can whip them into a depraved frenzy.
Grim actions have been justified using this word.

- 雖然叫工程師,但其實很多決策都是跟風(cargo-cult),並不是有嚴謹的分析、資料數
據佐證

- 大概九成的 PM 明天消失對你都沒影響,甚至效率還會變好

- 當我做了一百場面試後: 面試方法徹底崩壞,我也不知道怎麼做更好


沒變的觀念

- 會刁 code style, linting rules 或枝微末節的都怪咖

- Code coverage 跟 code 品質完全沒差

- Monoliths (大概指微服務的反面)系統在大部分情境都是很好的

- TDD 主義者(purists)是最糟糕的存在,他們的腦不能理解現實中存在不同的 workflows

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.73.26.66 (日本) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1630417545.A.965.html
bjk1樓大部分都認同,感謝分享 08/31 21:52
kvjo2樓大部分認同 看你PM價值 低價值PM如此 08/31 21:59
kvjo3樓vaulable的PM 明天消失 好像很清淨 過幾天就知道.更排山倒海 08/31 21:59
gn018383354樓….有些結論太武斷 08/31 22:25
他個人心得而已 每個人待過的 Team/遇過的人/做過的事不同會有不一樣的體悟吧
enthos5樓不同意紙筆。我說心眼(半小時全盲打)易於專心,但難練 08/31 22:30
yamakazi6樓Issue tracker很重要 08/31 22:33
viper97097樓九成的PM明天消失對你都沒影響www 08/31 22:35
jack02048樓GO是怪咖語言 08/31 23:06
amiwry9樓感謝翻譯 08/31 23:31
shooter55510樓等你出名後 就能把這些拿來出書了 08/31 23:37
MOONY13511樓TDD為什麼這麼容易被唾棄啊 08/31 23:55
TDD 在適當時機用不錯吧 如果是狂熱到無論如何都要 TDD就過頭
k90042112樓能多解釋java沒那模爛這點嗎? 09/01 00:13
原作沒解釋,以下個人觀點 不過入門語言若是如 Python 等更簡便的語言,通常會覺得 java 很冗吧 不過在現實世界,Java 就是一個語言界 toyota 在效能/物件導向/JVM (開發者不用管理記憶體)中取得平衡, 各種 Solution 都很成熟,生態圈也廣 只是在 oracle 官司爭議後又變臭了
ian9091113樓感謝翻譯 09/01 00:15
RunRun556614樓最後的 Code coverage 是指 Test Coverage 嗎 09/01 00:27
應該是
jete15樓第一點跟刁linting是怪咖有矛盾啊 09/01 00:57
umum2916樓有些偏頗+1 直接面對客戶會變成沒防火牆 客戶會不斷改需求 09/01 01:03
umum2917樓好的PM/scrum master是會帶著整個團隊往前衝 09/01 01:03
umum2918樓其他大致同意 面試真的沒有最客觀的方法 09/01 01:05
好的 PM 真的工作起來很爽
em123419樓PM那個一定是沒遇過都扛屎缺的PM 沒了屎缺大家分了 09/01 01:17
taipoo20樓謝謝翻譯 09/01 01:34
rotalume21樓樓樓上,所以原文說九成沒有說全部啊XD 09/01 02:24
pttassassin22樓好奇TDD有啥特別的問題嗎 09/01 03:44
ga01307723樓不錯啊 09/01 03:55
fantasychese24樓問題不是TDD是purist吧 任何xxx purist都要小心 09/01 04:14
deangood0125樓看到Sprint retrospectives 馬上點about 嗯... 果然 09/01 04:26
deangood0126樓是Amazon的員工 覺得看看就好 09/01 04:26
matyih27樓6年的L5 看看就好 09/01 05:02
rtoday28樓看看就好+1 09/01 05:17
WaterLengend29樓PM那個實在有夠中肯 09/01 05:53
nanashi0730樓部份認同 09/01 06:23
更多心得
[心得] 日本遊戲業新鮮人面試心得
[心得] AppWorks School 轉職心得 Data Engineer
[心得]24 家公司數位產品經理 PM 面試心得
[心得] 代po 北美Google general SWE面試心得
[心得] 2021面試心得分享
[心得] 2021研替面試心得(群暉、創未來、NV)
[心得] 人生的路上推一把
[心得] 2021前端面試心得