はじめに
いつも楽しみにしている fukabori.fm のPodcastで 131. AIコーディングの現在地 w/ twada 回を聴いていて、もう少し具体的に深掘りして自分の成長に繋げたいなと思う部分があったので、整理してみる。
ジュニアエンジニアが今後どのようにスキルを磨いていくか
1:06:10辺りから該当する話が始まります。
ここでは、シニアエンジニアとジュニアエンジニアの違いの一つとして「設計判断力」の有無を挙げている。
AIエージェント登場前のシニアエンジニアはこのスキルを、自身が設計+実装したものを自身でメンテナンスし、その過程で得た失敗や成功などの「しっぺ返し」で鍛えてきたそう。 またその「しっぺ返し」は、約半年程度かけて受けることが多かったそうだ。
ただしAIエージェントの活用で、この期間を約1週間程度に短くできる可能性があるそう。(1週間が大事ではなく、圧倒的に短くできるがポイント)
これにより自身の設計判断した答え合わせの回数が増えることで、飛躍的に鍛えるスピードが向上させることが期待できると考えられる。 ここで強く意識したいのは、AIの提案を鵜呑みにせず一緒に考え、自分で意思決定した結果で痛い目を見て、経験を意図的に積むこと。
ここまで話を聞いて自分は、以下の疑問を持った。
- AIエージェントのお陰で具体的に「何が」短くなったのか
- そして、どう上手くしっぺ返しをくらえるか
ここからは、上記の疑問を少し整理していこうと思う。
AIエージェントのお陰で具体的に「何が」短くなったのか
まずはAIエージェント登場前の開発サイクルを確認してみる。
ここでは前提として個人開発に焦点を絞るので、本当にざっくりとした工程で分類。
1. 要件整理 2. 設計 3. 実装 4. 運用
この工程を繰り返す中で、具体的には「2. 設計」「3. 実装」辺りで機能要件系や変更に対するコストのしっぺ返し、「4. 運用」で非機能要件系のしっぺ返しがくるようなイメージ。
ではここからAIエージェントを登場させる。
今回のPodcast内でいくつかAIエージェント登場による変化を話していた。
上記の工程に影響がありそうな話をまとめ、どのように影響を与えたのか整理してみる。
- 設計フェーズ
- 議論相手としての活用
- 膨大な知識量を持つため、様々な観点から提案が可能に
- 語彙を通じた設計意図の伝達
- こと細やかにコンテキストや解決手段を与えるのではなく、該当語彙(Kent BeckのTidingやt-wadaのTDDなど)を与えることで適切な設計意図の伝達が可能に
- 議論相手としての活用
- 実装フェーズ
- 高速な実装コード生成
- こちらは想定通り
- 高速なテストコード生成
- 実はこちらも多大な影響を与えている
- ドキュメント作成
- 一例として、英語でのドキュメント生成に一役買っているそう
- 高速な実装コード生成
ここまで整理すると、AIエージェントによって「何が」短くなったのか見えてきそう。
つまりAIエージェント前後での変化は、以下の通りかなと考えた。
- 設計フェーズ
- 前
- 自身が扱える(理解している)設計の知識を元に考える
- 扱えない(理解していない)設計の知識は、事前に蓄える(手を動かして経験し、理解する)必要がある
- 後
- 自身が扱えない(理解していない)設計の案を提示してもらい、様々な観点から比較が可能に
- 扱えない(理解していない)設計は、自身の文脈にあったサンプル実装を並列で生成させ、手元で比較することが可能に
- 該当語彙を用いて、素早くより適切な設計を提案可能に
- 前
- 実装フェーズ
- 前
- シンプルに自分の手を動かして実装
- 後
- AIエージェントに実装してもらう
- 前
「何が」の部分には、まず「実装」が入りそう。そして「設計の壁打ちや提案、比較検証」も入るかなと考えた。
なので、この部分がAIエージェントによって短くなったと理解した。
そして、どう上手くしっぺ返しをくらえるか
自分はここがモヤモヤを持った部分。どうやったら上手くしっぺ返しをくらえるかイメージできなかったので整理してみる。
先ほどのフェーズで一番大事なのは恐らく「設計フェーズ」だと考えている。
それは、上手にしっぺ返しをくらうには「自分で意思決定」する必要があるからだ。
ただしこの意思決定を自分のものにするには、「理解」が非常に重要だと思う。
だが、AIエージェントを使って設計案の提示やサンプル実装を生成させたところで、本当に理解して自分で意思決定できたと言えるのだろうか?
自分はそう思えなかった。AIにマイクロサービスにしましょうとか言われても、今この瞬間に自分で意思決定をしないといけない時に、今から理解しますはちょっと違うと思う。(練習なら別)
もちろん自分の使い方が悪いというのもあると思うが、自分で手を動かさずに理解ができるのだろうか?と。
また、これはAI時代には古い考えなのかも、と不安になることもあったが今のところこの考えはあまり変わってない。
なので、どう上手くしっぺ返しをくらえるかは「ある程度理解している設計を自分で意思決定し、簡単な実装は任せ、設計判断などにFBが返ってくる部分の実装は自分で行うこと」を意識して、自分で手を動かして理解+試行錯誤できるかどうかかなと考えた。
どんな設計判断力を鍛えたいかなどスコープを定義していないので、何にでも当てはまることではないと思うが、基本はこんなイメージ。
そして次はどうやってこの「ある程度理解している設計」を手札に用意できるかが、大事なポイントになると考えている。
Podcastでは「AIと一緒に考える」とあるが、その為の土台を作るイメージ。
こちらもさっきの話と繋がるが、その土台を作るには「AIを使いながら、自分で手を動かしてある程度理解をする」ことが大事なのかなと考えた。
終わりに
Podcastの内容を自分で理解しようとすると、以下のキーワードが必要だと考えた。
- 自分で手を動かして理解し、AIと一緒に考える土台を整える
- まずはAIと一緒でもいいので、対象の理解から
- 設計判断などにFBが返ってくる部分の実装は自分で行う
- 設計判断によるしっぺ返しを肌身で感じるなら、自分で実装を行う
- 変更やテストがし辛いなど設計判断のしっぺ返しをくらうイメージ
これらのキーワードを取り入れたサイクルは以下のようになり、これが高速道路を走りしっぺ返しを上手にくらう方法なのかなと。
- 自分で設計判断できる最低限の理解をする
- AIと一緒に手札にある設計で考える
- 自分で設計判断をする
- 簡単な実装を任せ、設計判断などにFBが返ってくる部分の実装は自分で行う
- 次の要件を整理し、AIと一緒に手札の中から設計判断をする(先ほどの設計判断のしっぺ返しをくらうイメージ)
- 実装 ...繰り返す
モヤモヤしていたのは、どうやってAIが出す設計案を適切に自分で意思決定ししっぺ返しを高速に受けれるようになるのかイメージできなかった為。
そしてその解決策は、手を動かして先にある程度理解するに落ち着いた。
正解を見つけたとは思ってないが、一旦こんな整理で。