00:00
swat
naminami.fm、よろしくお願いします。
お願いします。
AI時代におけるエンジニア育成の課題提起
今日は、AIが来て育成どうしようかっていう話をできればなと思ってます。
swat
なんか、今こうやってますとかっていうわけでもなく、課題感をちょっとバラバラと話すことができたらなと思ってます。
まあ、起点としては、4月から新卒入社で入ってきた人もいて、改めて育成ってどうするのかなっていうのを、全然答えは出てないんですけど、思っていたので、そんな話ができたらいいなと思ってます。
お願いします。
お願いします。
かわいそうにね、最近、まあ最近というか、もうAIが出てきて、こう、技術力がなくてもというか、知ってなくてもアウトプット出せちゃう。
うっちー
こう、目的があって、まあ多分最初は抽象的だね。まあ要件というか、こんなことしたいっていうざっくりした要件がある状態から。
昔というか、AI出てくる前は自分で詳細化して、詳細化したものを自分で実装する。
その詳細化したものをコードで表現するにはどうやってやるのかっていうのは自分で考えていく必要があったんですけど、
そこをすべて飛ばせちゃうような、そもそも詳細化すらしなくてもいいような状態になってきていて、
エンジニアとしてのスキルみたいなところってどこに必要なのか。
たぶん人として成長していかないと、なんかずっとガチューンにアナ状態ではいけないっていうイメージはあるんですけど、
うっちー
どういう方向にスキルアップをしていけばいいのかっていうのが、まだわかってないっていうのがありますね。
ただ、何かしらのスキルアップが必要なのはわかるけど、具体的にみたいなところですね。
そうっすね。なんかAIを買ってもその力がついていけば問題ないと思うんですけど、
AIによるプロセス省略と学びの喪失
そこが見えないというか、力ついていかないんじゃないかみたいなところが結構言われてますよね。
プロセスが走られちゃうんですよね。結果だけ出てくるんで、その結果を出すためのプロセスって詰まるところだったりとか、
自分で考えるっていうのもそうだし、あるアプローチを試してうまくいかなかったことで、
うっちー
そのうまくいかなかったっていう学びを得られたりすると思うんですけど、
そういうプロセスがすべてすっ飛ばされて、あ、動いたみたいな。
言われてたこと、依頼されたことが解決したってなっちゃうと。
また同じやり方をコピーすればまた次のタスクはできるけど、
それって結局なんかAIに仕事をお願いしてるだけなんで、
機械的な作業ですよね、お願いするっていう作業が。
それをツールのAIの使い方を学んでもあんま楽しくないだろうし、
成長になってからツールの使い方は修縮するだろうけど、
替えがきかない方向なのかなと。替えがきかない?
作ったものがどう動いてるのかわかんないのもそうだし、
不具合があった時の原因調査も心配あるんですよね。
AI生成コードの将来的な問題と学びの機会
そのAIに投げれば、そのエラーコード投げればっていう話をあったりするけども、
なんだろうな、ちょっと悶々としていて。
そこらへんも多分去年1年ぐらいでかなりコーディング系のAIはもうぐっと性能が良くなって、
多分AIでこんなプロダクトができました、こんなことできましたみたいなのがバーッとあって、
あとSaaSSZみたいな話があって、内製でSaaSっぽいものはもう作れちゃうってなった中で、
swat
多分いろんなバイブコーディングで作られたアプリが去年で多分結構できたと思うんですよね。
で、今年とか来年になって、それが多分壊れ始めたりとか、
作った人がいなくなってみたいなところでなんかボロボロとなんか出てくるのか、
swat
もしくはその時のAIの能力でもうその不具合すら直せるようになっちゃうのか、
みたいな例なんか結構変わってきそうだなというか、答えが出てきそうなのかなってちょっと思ったりしましたね。
そこで学べればいいですかね、壊れた後に直すっていうところをやれば、
でも結局なんか直すのもAIにやらせたら学んでいけるんですかね。
そこで思うのは、今のアプリの作り方とか、
押さえておくべきポイントみたいなのを分かんないまま作る場合に、
swat
多分なんとなく動くものができるのはAIに指示出してできちゃう。
しかもなんかガチャ的な感覚で、1回目ミスっても2回3回回したら、
なんか動くものできたみたいな。
で、そこ時点は多分確かに学びはない、普通の使い方だけなんですけど、
それで壊れちゃった、変更しようと思ったら全然中身分かんなくなったってなって、
で、元のやつを直してもいいですし、多分作り直してもいいんだと思っていて、
swat
で、作り直すコストはほぼなくなっているので、今AIコーディングで、
作り直すときに改めて多分、どういう要件とかどういうとこを押さえなきゃいけなかった、
ログは出しとかなきゃいけないとか例外は握り潰しちゃいけないとか、
内部構造の不明瞭さと問題解決の難しさ
swat
っていうのを押さえた上で2度目作ったときに、そこでは学びがあるような気がするんですよね。
そこで学べれば良いのかもしれないですかね。
うっちー
仕組みが分からない状態で、例えばログが必要だったっていうのは、そう至るのか。
昔というか、AI出てくる前は内部を分かってるんで、内部の構造から予想される学びがあったじゃないですか。
で、AIが出てくると、内部が分からないアウトプットを作ってるんで、
検知できるのって、システムの外側から見た状態だけで判断すると思うんですね。
うっちー
例えばログが出てないと、システムの外にログが出てなくて、
あったときにシステムの状態が分からないからってなると思うんですけど、
それは確かにログが必要だからってなるけども、
内部が分からないことによって、そもそもどうしたら良いか分からない、
何か問題はあるのは分かるけど、
どういう方向に変更していいか分からないっていうのが何ないのかなっていうのが気になる。
うっちー
例えばエラーハンドリングとかはどうなんだろう。
エラーハンドリングしてなくて、エラーになって、
ログがむちゃくちゃ無いログになっちゃってる。
システム全体の可視化と全体像の理解の重要性
それ見ただけでは。
エラーの箇所は分かるけど、そもそもそこにデータが入ること自体がおかしいみたいな。
はい。
そこでエラーが発生した箇所よりもっと前に、
バリデーションとかでデータ弾かなきゃいけないのがあるけど、
そこに至るのかAIが勝手にやってくれるのか。
swat
そこらへんが今学んでいくところになっていくのかもしれないなと思いました。
インフラの監視とかモニタリング、今だとオブザーバビリティみたいな、
マイクロサービスとか複数のアプリをまたいだりとか複数のプロセスをまたいでいる処理。
どこでどうデータが書き換わってどういう経路で来ているのか、
どこで不具合があったのかみたいなところをどう可視化するか、
みたいなところの観点が今の話にしようかなと思っていて、
抽象度と具体性のバランス、上流工程の役割
この真ん中もあるんですけど、
システム全体のデータフローとかが正常に動いているのか、
swat
どこでおかしくなっているのかっていうのが分かるようになるような仕組みとかっていうのは
多分分かっていく必要があるし、ロードコードとかで一個のリポジトリの中だけごちゃごちゃさせても
多分すぐには解決に至らなくて、どういう場所で動かしてて、
どういうワークフローの中の一部のシステムなんだよっていうのを教えたりとかっていうのをやっていく必要があるので、
swat
てかつ理解している必要がある。
そういう観点をちょっと図のよりレイヤーが上の方の方に重点が行くのかなとかは思いますけど、
それがレイヤー低いところなしでいけるのかっていうのがちょっと分からないですね。
でもレイヤー低いところで言うと昔はOSOのシステムコールとかを知らないとみたいな。
電話のときの。
そこらへん知らなくてもコーディングできるようになってきたときに、
昔からやってる人はそこらへんを知らないと技術力があると言えないみたいになってたような気はしてて、
そんなことなかったみたいな。
それがアプリレベルに、アプリの中でどう実践してるのか知らなくていいけど、
アプリをつなげたときの全体のシステム構造とかキーチャー、データフローみたいなところが分かってれば、
中の実装はそんなに気にしなくてもいいとか言っていくのであればって感じですけど。
全職とかでSESとかやってると、コーディングしてる部隊というか、エンジニアと上流コーデで要件をしてる人と別れてたりするんですね。
コーディングから得られるドメイン知識と気づき
上流コーデやってる人ってあんまコーディングをやってない経験ないずっと上流コーデばっかやってるんで、
コーディングはできないけど、システムの外形的などう動くのか、データフローとか、
そういった上流上流というか抽象度高いものは理解してるけど、
具体のそれをどうやって行動に起こすかとかいったところは知らない状態だったんですね。
多分そうなってるのかもしれないですけど。
僕はその時にコーディングとかをやってて、両方上流もやってたんですけど、
上流だけ知ってて、抽象度高いとこだけを知ってても対応しきれないとか、
どうしたらいいかわかんないっていう、ちょっと今具体を思い出せないけど、経験があったから、
ちゃんと中身を理解してやれるようになりたいって思ってたんですよね。
意思決定と責任の重要性、AI時代の価値
だからそのイメージがあるんで、具体上流コーデだけはその要件だけちゃんと整理してできてればいいのかっていうところに疑問があるのは、
ありますね。なんか抵抗してたりする。なんかその上流コーデだけやってても不安なまま、
なんかあった時に対応できない。でもそれはあれか、人に、自分以外の人に頼まないと解決しないから不安なだけか。
AI使って自分で解決できるんだったら、不安はないのかもしれない。
なるほど。自分がSESとかの経験がないので、そこが勝手に分かれてるとこの経験としてはないんですけど、
そこで思うのは、コーディングしている中で気づくドメイン知識というか、上流というか設計だけからじゃ分からなくて、
実際にコーディングしてたら分かることって結構プロダクト開発においてもあるなって思っていて、
外部のシステム決済とかで使う時に思い立ってないパターンの状態遷移があったりとか、
一般の機能でもこのパターンだったらユーザーとか、
このパターンだと不正にポイントもらえちゃいますけどどうしますみたいなところとかが実装している中で分かるみたいなのが結構あるんで、
そこが実装を完全にAIに任せてしまって、本来だったらそこでやられたであろう気づきみたいなところが、
AIから上がってくるならいいんですけど、AIが言った通りのものしか作らない、これだけしか上手く作れないってなると、
複雑系における判断とAIの限界
そこの気づきっていうのが遅れちゃうというかフィードバックが遅れちゃって、
プロダクトに対する理解、ドメイン知識の修得みたいなのが遅れていくっていうのはなんかあるのかもなってちょっと思いました。
やっぱりなんかAIがやってくれるんだったらそう知らなくてもいいってなんだけど、
そうなったら結局文字を入力する係みたいな、文字入力するのか音声で入力するのか、
なんか伝言係になっちゃいますよね、きっと。
そうですね、そこらへん。
AIに慕えるみたいな。で、なんかそれはすごい楽しく、
それ多分、なんていうんですか、想像的な作業じゃなくて、機械的な作業なんで、
あんまり楽しくないから、そこをやっていく方向は違うなっていうのを、そこに抵抗したいのがあるんですよ。
でもその作業は別に雑務として、なんか全く違うところをやっていくってなるのかもしれないですけど。
うん。
あと、その、なんか導出できるというか、条件が決まっていて、そうしたらこれが最適だよねって決まったら、
まあそれはそれなんで、AIに判断させて進めてもらったらいいと思うんですけど、
なんか最適なものが一個だけってパターンはほぼない、実務だとあんまりないと思っているので、
なんか、AとBのどっちを選ぶみたいな、このチームでこのスキルセットがあって、
で、プロダクトの状況的にはスピードがすごい求められているとか、または安定性をすごい求められているみたいな、
中でじゃあどれ選ぶの?みたいなところの意思決定、決めていくっていうところが、今までも大事でしたけど、
まとめ:AI時代におけるエンジニアの悩み
これからはそれがより大事というか、決めた後に実際に動くものができるのはもう速度がかなり上がってしまったので、
何を決めるのか、その決めが本当に価値ある決めをして生きているのかみたいなところに価値が宿ってくる、中心がいくのかなとか思います。
なんかAIでもパラメーターを全て渡し切れれば、決断というかどれに選ぶみたいなことができるのかもしれないけど、
例えばビジネスとかで一番いいものが売れるわけではなかったりするから、そこって逆に人間が判断して、
本当は劣った決断判断だったけど、たまたま別要因、なんか考慮すらしてなかったことがたまたま聞いて上手くいったみたいなことってあると思ってて、
そういった部分も、まあでも別にAIがやればいいのか。
まあそこがどこまでいけるか、そういった。
なんか見えない見えないというか、本当全部を全てをパラメーターにして渡し切れば、それを全て考慮して判断してもらえることができると思うんで、
そこを人間が判断するってよりも、見えてないというか、その判断のミスというか、うまくいかないことも含めて判断した結果、運とかの要素も含めて、
うまくいく、うまくいかないってところをやっていくのかな。
それは人が判断するってことですか、人が責任を取るってことですか。
でも責任を取るみたいな方向に近しいかもしれない。
パラメーターって多分無限にあると思うんですよ。その判断に必要なパラメーターみたいなのって。
で、その全てを出し切るのって難しいと思うし、
そのバタフライエフェクト的な台風のとか天気の予報をするには、
パラメーターが無限にありすぎるんで複雑系で予想しきれないみたいな。
それを全部、そのパラメーターすべて出せれば、
すべてのことを未来は確定するみたいな、すべての方向になるんで。
なるというか、なんかそうじゃないのかもしれないですけど。
でもそのすべてのパラメーターを渡し切ることができない以上、
なんていうんですか、そのAIも判断間違えるじゃないですか。間違える可能性があるんで。
なんかそういったところは100%にならないとAI判断できませんってより、
今分かってるので、どっちもAもBも同じぐらい問題というか、
いいも悪いも50%50%だったら人間が適当に決めるみたいな、
気分で決めるみたいな部分が発生するかもしれない。
そうなるとどんなスキルを上げていくのか、スキルってわけじゃなくなってきます。
ただコインを投げるだけの人になっちゃう。
うん。
まあそんなとこです。
ちょっと今日は取り留めのない話でした。
AIでできていく性を悩んでます話でした。
はい。じゃあ今日はこれで終わりにします。
ありがとうございました。