世界を動かす技術を、日本語で。

開発者のブロック

2025年8月23日原文(underlap.org)

概要

  • ソフトウェア開発者 にも「Writer’s block」に似た 開発者ブロック が発生
  • 新規プロジェクトや既存プロジェクトで異なる 原因 と対処法
  • 学習・休息・小さな成果 でブロックを解消
  • プロトタイプ作成やドキュメントの下書き 活用
  • 早期リリース・最適化の先送り も有効な戦略

ソフトウェア開発者のブロック:原因と乗り越え方

  • Writer’s block のように、ソフトウェア開発者も 開発者ブロック に悩む現象
  • 車輪が空転 し前進できない状態の比喩
  • ブロックの種類、原因、解決策を整理

新規プロジェクトでのブロック

  • 最高傑作 を目指す意識による 過剰な理想追求
  • テスト導入 (ユニット・統合・fuzzテスト)による作業量増加
  • ドキュメント充実 (README、ユーザーガイド、コミュニティ標準など)の負担
  • コーディング規範 (命名・モジュール化・再利用性)厳守への固執
  • 言語・ツール選定 にこだわりすぎて作業が進まない状態
  • バージョン管理・CI・クロスコンパイル などの初期設定過多
  • エラーハンドリング・診断・並行処理対策 の徹底により着手困難
  • これらのベストプラクティスが積み重なり 手が止まる現象

既存プロジェクトでのブロック

  • 新規参加者の圧倒感 :コードベースや慣習、言語への不慣れ
  • 長期関与者のモチベーション低下 や疲弊
  • 理解を急ぎすぎる ことによる混乱
  • 実装言語・独自規約 への戸惑い
  • オーバーワークやる気喪失 による停滞

ブロック解消の具体策

学習に時間をかける

  • ユーザー目線で動作確認 し全体像を把握
  • ドキュメント・テスト を読んで外部仕様を理解
  • ソースコード閲覧 で内部構造のモデル化
  • 質問を恐れず 他の開発者に相談
  • 新しい言語の基礎学習 を怠らない
  • 分からない機能は都度調査 し理解を深める

疲労の自覚と休息

  • 定期的な休憩や休暇 の重要性
  • 大型機能実装後は 小規模な作業(chore) でリフレッシュ
  • 技術的負債の返済 も気分転換に有効

小さな成果の積み重ね

  • 小さな機能やバグ修正 から着手
  • テストやドキュメントの改善 は後回しでもOK
  • 全てのベストプラクティスを一度に実践しない 柔軟性

プロトタイプ(スパイク)の活用

  • 短期間で動くものを作る ことに集中
  • ハッピーパス重視 で最低限のテストだけ追加
  • プロトタイプは別ブランチ管理 し、実装時は参考程度に留める
  • 依存関係の調査 にもプロトタイプは有効

ドキュメントは下書きから

  • フォーマットや完成度にこだわらず コードと一緒に管理
  • 設計理由や基本的な使い方 のみ記載
  • ユーザー増加後に本格的な整備

最適化は後回し

  • Michael A. Jacksonの最適化ルール :「やるな」「まだやるな」
  • 本当に問題が発生した時のみ最適化 を検討
  • プロファイリングでボトルネック特定 し、段階的に対応

早期リリースと頻繁な公開

  • 未完成・既知の課題があってもリリース
  • 進捗実感とユーザー・開発者からの早期フィードバック 獲得

優先順位の見極め(Yak shaving回避)

  • 依存ライブラリのドキュメント不足 に深入りしない
  • 最小限の個人メモ で済ませ、後で余裕ができたら貢献を検討
  • ツールの不具合対応も最小限 に留める

まとめと問いかけ

  • あなたも開発者ブロックに悩むことがあるか?
  • 解消法や工夫があればぜひ共有を
  • Hacker Newsの議論や便利ツール(git worktree)も参考

関連ツール・TIPS

  • git worktree :プロトタイプ用ブランチを別ディレクトリで同時に編集可能
  • 質問はスマートに :効率的な問題解決のためのスキル
  • 技術ブログやコミュニティでの情報交換 も有効

参考

  • Michael A. Jackson の最適化ルール
  • Hacker News での議論や関連ポスト
  • git worktree 活用例

Hackerたちの意見

この記事にはすごくいいアドバイスがたくさんあるね。私が20年のソフトウェア開発で学んだ一番のポイントは、体が休めと言ったら休むこと。やることリストにタスクがあったり、GitHubに新しい問題があったりしても、無理にプロジェクトを進めるのは絶対にダメ。気が乗らないなら、作業をやめちゃいな。

これは自分のサイドプロジェクトに取り組んでいる人にはいいアドバイスだと思う。でも…私は雇われてるんだけど?つまり、「休暇を取れ」ってことにはなるけど、単に働かなきゃいけない日にはあまり役に立たないアドバイスだよね。

ゴールデンルールなんてないよ。俺にとって、仕事も好奇心からの学びもストレスになる活動なんだ。爪を噛んだり、バルサルバ呼吸したり、肌荒れしたり…それを乗り越えて日々を繰り返すしかない。感情に頼ってたら、無目的な活動しかできないし。このネガティブな感情投資が、俺の能力を向上させる唯一の方法みたい。Ankiで学んだり、ピアノで曲を弾いたりしてると、習慣は6ヶ月の定期的な練習で止まることもある。でも、ストレスや怒りの境界にいると、なぜかそれが続くんだよね。

記事にはいいアドバイスがたくさんあって、ほとんどの開発者はある程度直感的に知ってると思う。ただ、問題なのは、企業文化がこれを無視しがちで、経験上とても厳しいってこと。常に期限通りにすべてを納品しなきゃいけないと、こういうアドバイスを実際に活用することができないんだ。たとえば、学ぶための時間を取るのは、マネージャーが許可してくれないとできないし、同僚(技術系も非技術系も)がそれを問題視しないことも必要だし、時間を取ることの代償がネガティブなパフォーマンスレビューにならないことが前提なんだ。

全体的に素晴らしいアドバイスだね。 > 学ぶには時間をかける でも、特にこれが目立つ。私たちはどんどん早くコードを出すように追い立てられている。AIがそのプロセスをさらに加速させている。新しいことを学びたいなら、スピードを落として、もっとやれ、もっと出せ、もっと稼げと迫る力に逆らわないといけない。AIツールを使っているなら、みんながやっていることとは逆のことをしてみて。生成されたコードを受け入れるたびに、すべての行をじっくり見て、明確な質問をして、代替の実装を求めて、トレードオフについて尋ねてみて。好奇心を持つことが大事だよ。これには時間がかかるけど、それがポイントなんだ。

早くリリースし、頻繁にリリースする これには賛成だな。できるだけ早く統合されたプロダクトを持つのが効果的だと思う、たとえそれがスタブの集まりでも。どんなに前もって計画を立てても、最終的なプロダクトがどうなるかはほとんど分からないから、できるだけ早く全体のシステムをテストして反復できることがすごく重要だよ。これが、私がテストハーネスをよく使う理由の一つでもあるんだ。[0] [0] https://littlegreenviper.com/testing-harness-vs-unit/

テストハーネスについてのリンク先の投稿、素晴らしいね!シェアしてくれてありがとう!

睡眠。脳にとって最高のサイドタスクだね。これ、何回経験したことか。機能やバグに悩んで、考え続けて、何時間も長所と短所を天秤にかける…後戻りするようなことは始めたくないから。疲れてるのに、明日のために決断を下すまでは寝たくない。今すぐ寝て。そうしたら、起きたときにはすぐに何をすべきか分かる。信じられないくらい、寝る前は見つけるのが難しかったのに。そしてそれを実行する。うまくいく。そして、睡眠が鍵だったって分かる。

あと、運動もね。睡眠はあなたを回復させる。運動はその火花だよ。

その通り。私ももう遅くまでコードを書くことはないよ。休息は必須だね。

睡眠と運動が大事だってのは同意だね。痛みや不眠で夜中に目が覚めて、すぐに寝られない人もいるし、運動が楽しくないほどの痛みや怪我を抱えてる人もいる。寝て運動しろって言うのは、ホームレスや飢えてる人に「街を出て、仕事を見つけて、いい夕食を食べて、家を買え」って言うようなもんだよ。聞こえはいいけど、頑張るけど、君のいる世界とは違うし、理解してないよね。

子供たちがもう少し協力してくれたらなぁ…。

Hacker Newsで議論の続きを見る