業界で6年過ごしたあと、考えが変わったソフトウェア開発トピック
(chriskiehl.com)考えが変わったこと: 昔は反発していたが、今は信じるようになったこと
- 経験レベルがさまざまな人たちで構成されたチームでは、型付き言語のほうが良い
- スタンドアップミーティングは新人の様子を見るのに有用
- スプリントレトロスペクティブには有用なものと有用でないものがある(アジャイル/スクラムマスターが全員の時間を無駄にすること)
- ソフトウェアアーキテクチャは何よりも重要。良い抽象化の悪い実装はコードベースを傷つけない。悪い抽象化や欠けたレイヤーのせいで、あらゆるものが悪くなる
- Java はそれほど悪い言語ではない
- 気の利いたコードはたいてい良いコードではない。明確さが何よりも優先
- どんなパラダイムでもまずいコードは書ける
- 「ベストプラクティス」は状況ごとに異なり、何にでも適用できるわけではない。盲目的に従えば愚かになる
- 必要もないのにスケーラブルなシステムを設計すると、悪いエンジニアになる
- 静的解析は有用
- DRY は最終目標ではなく、特定の問題を避けるためのもの
- 一般的には RDBMS > NoSQL
- 関数型プログラミングは万能薬ではなく、別のツールにすぎない
途中で自分が支持した意見:
- YAGNI > SOLID > DRY : この順番
→ You Aren't Gonna Need It : XP の原則のひとつ
→ SOLID : オブジェクト指向設計の5大原則
Single Responsibility
Open-Closed
Liskov Substitution
Interface Segregation
Dependency Inversion
→ DRY : Don't Repeat Yourself - 鉛筆と紙は、あまり使われていない最高のプログラミングツール
- 実用性を得るために純粋性を手放すのは、一般的には良い選択
- 技術をさらに増やすことは良い選択ではない
- 顧客と直接話せば、より少ない時間で、より正確に、問題についてより多くを知ることができる
- 「Scalable」という言葉には、ソフトウェアエンジニアの心に神秘的で人を驚かせる力がある。少し口にするだけで、彼らを堕落した狂乱へと陥らせる。この言葉を使うことで、容赦ない行動が正当化される
- 「エンジニア」と呼ばれてはいるものの、ほとんどの意思決定は、それを支える分析・データ・数字のないカーゴカルトにすぎない
→ カーゴカルト: 技術的に進んだ誰か(社会/祖先)が船や飛行機で特別な積み荷を運んできてくれると信じて待つ風習 - 90%、あるいは93%のプロジェクトマネージャーは、効果や効率の面で利益がないので、明日にでもいなくなってもよい
- 100回の面接を終えてみると、面接のやり方は完全に壊れている。自分にもこれを改善する方法はわからない
変わらなかった昔からの意見:
- コードスタイル、リンティングルール、そのほかの些細なことを強調する人たちは狂った変人だ
- コードカバレッジはコード品質とはまったく関係がない
- モノリスはたいていの状況でかなり良い
- TDD 純粋主義者は最悪。彼らのか弱い小さな心は、別のワークフローが存在するという事実を処理できない
- 10年目になったとき、何がさらに変わったりひっくり返ったりしたのか見てみよう
9件のコメント
一つひとつ共感できる文章ですね。何事も完璧にできるという理想主義から、実用主義へと変わっていくように思います。
TDDの重要性を理解した時から、プログラマー ...
面接が壊れているという意見は相変わらず出ていますね。私自身、コーディングテストを受けろと言われたら自信がなくて……
こういう記事もありました。『HARD CODE』という本に出てくる内容だそうです。
https://johngrib.github.io/wiki/better-interview/
6年でこれに気づいたんですか? ふふふ、すごいですね。
6年で悟りを開いて仏になったんですね!
Hacker News では、ほかの開発者や20年以上のキャリアを持つエンジニアたちも集まって、追加コメントを書いていますね。
https://news.ycombinator.com/item?id=25887373
最初のコメントからかなり強烈ですね(笑)。一つひとつ見ていけば例外的な状況もあるはずですし、何であれ盲信してしまうのは危険な気がします
型チェックだけで解決できるバグがかなり多いので、今後も継続的に提起される話題なのだと思います。型を安全に扱う方法も、引き続き改善されていく途中ですしね。
(とはいえ、TypeScript はちょっと難しいですね ;_;)