技術とかの雑なToday I Learnedメモ

設計に悩みすぎる前に手を動かす話の記事を読んだ

設計に悩みすぎる前に手を動かす話の記事

設計に悩みすぎる前に手を動かしてみる話

読んだ。

設計を考えながらデザインドキュメントを書いていたら細部の粗が見えてきて無限に悩み続けてしまった。考えなきゃいけないことがどんどん膨らんでいって、いつまでも実装に手を付けられなかった。

これめちゃくちゃ分かる、というか現在進行系で自分がそういう感じで「実装の遅さ」に悩んでいるので、この記事を読めて本当によかったと思う。

正確には違うことに悩んでいるのかもしれないけど、コードを書き始める前に「設計」とか「必要な情報」とかを集めたり考えたり書き出したりするのに必死で、でもいざコードを書くぞとなったときに細かい部分がすごく気になってしまって全然手が動かなくて、どうしよう……みたいなことが今まで何度もあったし最近もよくある。

「設計に悩み始めたらとりあえず手を動かす」

これを行う理由を具体的に上げてくれている。

  • コードを書き始めさえしてしまえば速が出てやり遂げる力がアップする
  • 実装方針が明らかだとしても実際に実装するまでは脳内のワーキングメモリに乗り続ける ← めっちゃくちゃ分かる
    • 実装してしまえばその部分は考えなくてもいい
    • 考えるべき部分を減らせる
  • 実装済みの部分に関してはコンパイラやテストによるフィードバックイテレーションを回せる
    • 実装していない部分に関しては机上の空論だし、実装している部分に関しては事実そこにあるものからより具体的なフィードバックを得られる
  • 不完全でも動くものを実装することで時間と精神に余裕が生まれる ← これめちゃくちゃ大切だと思う

詳細な設計やドキュメントを軽視しているわけではない

もちろんこれらは実装をする上で大きな助けとなるものだし可能な限り早い段階で明文化されるべきだが実装開始をブロックするものではない。なるほど。

めちゃくちゃためになった

これ読んで本当によかった。

自分が悩んでいてどうしようという気持ちが強かったので、それを解決するためのクリティカルな解決策が書いてあったと感じる。

少し大げさな話になるが、「完璧主義」みたいな心構えが邪魔している気がしている。

自分は別に完璧主義者ではないと常々思っていたがどうやら全てがそうではないにしろその気質があるかもしれないと感じている。本質ではない細部に謎のこだわりがあったりするが、そういうところに思いを馳せすぎて本質の部分が未完成だったり時間がかかりすぎる傾向があるんだと感じている。

昔はより顕著だったが最近は落ち着いてきたと思っていたが無意識にそういう気質が出ているのかもしれない。

「設計が大事!」という話に影響されて設計を完璧にこなそうとして実装に全然手がつけられない、みたいなことに近いと思う。

なので「とにかく書き始める」「書き始めて気づいたことをどんどんドキュメントに落としていけばいい」「一度で完璧なコードを書こうとしなくていい」「ドキュメントは完全でなくていい」みたいなことを常に意識して実装を進める経験を積んで、それができてきたら無意識にそういう状態になれるところまで持っていきたい。

「手を動かして初めて分かること」が自分の思っている以上にたくさんあって、それを得られないまま設計やドキュメンテーションで長い時間悩み続けるのはもったいないと思った。

今の自分は実装し始めてから悩めばいいことを実装前に悩んでいるんだと思う。トライアンドエラーを繰り返すことで色々な情報を得ていく感触をもっと掴みたい。

この記事を読んで得たものをすぐにでも実践で利用していきたい。本当に読めてよかった。