エンジニアとして意識していること
## 全体的に考えていること
- 短期のスピードも出しつつ、中長期で詰まない & スピードを落とさないようにする
- エンジニアとして言いたくないことランキング個人的1位「それはできません」
- 短期視点のみで作ると後になって「その仕様は実装できません...」「実装するなら先に直さないとなので時間かかっちゃいます...」と言わないといけなくなってしまう
- ただし先を考えすぎるとオーバーエンジニアリングになったり作り込みすぎて時間がかかりすぎたりするので、両方を実現する方法を考える
- トレードオフではない。短期も中長期も両方実現する方法を模索する。大変だけど頑張る。
## 企画・デザインフェーズ
- やりたいことをどうすれば実現できるかを考える
- 一見無茶振りに聞こえることでも仕様を調整すれば実現できることがある
- そのためにまずは施策の背景・目的・ターゲットなどをできるだけ理解する必要がある
- どこは削れなくてどこは諦められるのかがわからないと話せない
- エンジニアができないと言うとそれはもうできないのでできるだけできないと言わなくて済む方法を考える
- 提供価値が同じで実装やメンテが楽な方法を考えて提案する
- 中長期で詰まないために同じ価値を提供しながらよりよい実装をする
- 話を聞きながら実装するなら何が必要か・どこを変更する必要があるかをできるだけ具体的にイメージする
- 作り出してから気付いたでは遅いのでこのタイミングでできるだけ想像してコメントする
- 仕様を変えたりデザインを変えることでエンジニア的にいい感じにできるところがあれば提案する
- 基本的に[[機能・仕様は少ない方が良い]]ので不要なものは積極的に削る
- もちろん提供価値が変わらないという条件のもとで
- 将来の発展の方向性とそれを実施する可能性がどれぐらいあるのかを把握する
- 将来の施策のスピードを落とさないため
- どれぐらいの拡張の可能性があるかわからないと中長期も見据えてうまく設計できないので
- 特に可能性がどれぐらいあるのかを見極めるのが大事
- 可能性の高いものは準備した方が良いし、低いものであれば気にしない方が良い
- 全てを考慮して作ることはできないので取捨選択のために可能性がどれぐらいあるのかを見極める
- 企画の人の言うことを信じすぎない
- 絶対やると言ってもやらないことも往々にしてある
- けど企画の人もその時は本当にやると思っているので嘘をついている訳ではないしその人に罪はない
- 逆に将来これを追加することはないというものを把握する・握る
- この可能性が消えたら設計楽になるな〜みたいなところがあれば「将来こういう仕様が増えると対応できないんですけどそれで作って大丈夫ですか...?」というコミュニケーションを取る
- まぁどれだけ話しててもやらないと話してたことを将来やることになったりするんだけどね...
- これも企画の人は本当にやらないつもりだったので誰も悪くない
- やらないって言ってたじゃん!とか言い出すと企画の人が全部その可能性もありますね〜と言うようになってしまうのでお互い本音で話せる関係を作っておくことが大事
## 開発フェーズ
- 目の前の必要なものと今後の拡張性を意識して設計する
- これは難しいし奥が深いので別途まとめる
- [[ボーイスカウトルール]]