hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

ひどいソフトウェア作りたくなくて考えること

ソフトウェア作ってるとどうしようもないひどい状況になったり、知らないプロダクトを読んだらひどい状況になってたりすることがあって、どんなときにそういうことになるのか、必ずそうなるのか、そうなることを予見できないか、完成したソフトウェアを見てひどいかどうか判定できるか、とか気になってる。

  • 作ってる途中に気付けないものか 
  • 作る前に気づけることはあるか
  • ひどいのは分かってるけどやるしかないときにだけひどいものができるのか
  • 時間はあるけどやる気がないとそうなるのか
  • プライベートでなんかあるとそうなるのか
  • 書いてから時間が経つと大体のものはそうなるのか
  • コードは正しくて読者が使われてるパターンに理解がないだけなのか
  • パターンの使い方が変だと読めなくなるのか
  • 当時と環境、社会情勢や実行環境、データ量、などが変わってひどくなるのか
  • いい技術が発明される前なのでしかたないのか
  • いい技術が発明されたときにキャッチアップすべきかどうかの見極め
  • 作りかけで置いてあって負債とは認識されてたけど引き継がれていないとひどくなるのか
  • ドキュメントがあればよくなるのか
  • ユビキタス言語を話すチームが解散すると後から来たユビキタス言語知らない人が独学で理解するのは不可能なのか
  • 合わせ技でひどくなるのか
  • 程度の問題なのか
  • 程度は定量的に決められるのか
  • ひどさの定義について
  • 適切なソフトウェアのメトリクス測っていれば気づけるものなのか
  • そのメトリクスは既知のものなのか、まだ発見されてないけど実は何かあるのか、誰も気にしてないのか、研究中なのか
  • 客観的にひどいのか主観的に好みに合わないだけなのか
  • これまで動いてくれたソフトウェアに対する感謝の心を忘れてはならないのか
  • コードがピヨピヨしてるね
  • プロジェクトの初期は理想的な状態だったのか
  • プロジェクトの初期が理想的な状態ならそこまで戻して書き直せばよいのか
  • 設計からそもそも間違っているのか
  • どのレイヤがおかしいのか知る術はあるのか
  • 一部の機能だけがひどいのか全体的にひどいのか
  • コアドメインがひどいとき助かる余地はあるのか
  • コアドメイン以外なら柵で囲って触らないで、で済むのか
  • フルスクラッチしたほうが早いことはあるのか
  • 何やってるか理解できないものをフルスクラッチできるのか
  • ある程度の制約を設ければ決してひどいことにはならない、みたいな制約はないのか
  • 知られたフレームワークの最新を追いかけていればどれだけ改善されるのか
  • フレームワーク入れることで状況が悪化することはあるか
  • 良いフレームワークの見極め方
  • フレームワークから脱出した事例、手作業なのか、マイグレーションできるのか
  • プロジェクトを続ける期間によって差はあるか
  • プロジェクトの成長の規模を予想して最初から適切な複雑度で作ることはできるか
  • 期間によって差があるとしたら、サービス終了までの期間を予測できるか
  • 過去のデータから、コードが退役するまでの期間を予測するモデルを作れるか
  • 住宅のCMとか見てると100年安心とか言ってるけど自信はどこから来るのか
  • n年後も動かし続けるために必要なことは何か
とか気になってる。いくつかはさっと答えられそうだけど、答えられないこともありそう。