資格って役に立つのか議論
そもそも、エンジニアの資格は意味がない、役に立たないと言われる理由は、根っこを辿れば資格よりも経験の一点に集約されます。
砕いていえば、勉強して知識だけ付けるより、現場で手を動かした経験の方が役に立つ、ってことですね。
実際これはその通りで、例えばAWS全冠してます!という実務未経験の人より、AWSの設計から実装まで5年やってました!という人の方が評価は高いでしょう。
ただ、その経験の価値が今後揺らいでくるのでは?という疑問があります。
特に、ここ最近の、経験1~3年くらいのロー~ミドルレンジ層までについては顕著に出てくるのではないかと。
例えば、AWSプロジェクトのメンバーを探していて
- Aさん AWSのPJに3年参画、特に資格は無し
- Bさん AWSのPJに1年参画、AWS SAPを所持
となったら、AさんとBさんに経験年数で優劣を付けられなくなってくるかなと。
なぜなら、AIの台頭があるからですね。
AI時代に「経験年数」の価値はどうなるか
昨今のAIの発展速度はすさまじく、今や簡単なツールであればプロンプト1本で出力してもらえる時代です。
実際私も個人でAWSの開発を行う際、Lambdaの記述をAIに任せてみましたが、何度かプロンプトで指示・細部を修正すればほぼそのまま使えるものが出力されました。
同時に、AIに頼り切りで自走力の無いエンジニアを残念ながら見かけるようになっています。
-
AIが出力したものをそのままコピペし、説明ができない
-
レビューで突っ込まれたら「ChatGPTがこう言ってました」
-
AIに質問をしても、AIの回答を理解できず、AIの回答をさらにAIに聞くループに陥る
なんて、冗談のような話が本当にあります。私も現場で見てきました。
なので、経験3年のエンジニアを捕まえたと思ったら、AI丸投げで出来る作業しかしていなかった。
あるいは、AI丸投げの生成物を、何とかリーダーが巻き取って成り立たせていた。
と言うことも今後、起こり得るのではないでしょうか。
AI時代に「人間」の仕事はどうなるか
これはよく語られる話題ですね。
私個人の意見としてはAIにツッコミを入れるのが仕事になると思っています。
少々話がそれますが、AIと言えばIT以外の分野として、イラスト生成AIがよく話題になりますよね。
Twitterではコンビニや飲食店に掲示されたAI生成の料理の画像が使われているポップに、気持ち悪いという声をあげる人が居ます。
その中に、こんな声もありました。
AI生成イラストそのものよりも、これを見てゴーサインを出している(≒止める人が居ない)ことが怖い。
と。
これはITの世界でも他人ごとではないですよね?
AIの回答にツッコミを入れられるか
私がAWSで個人開発してる時に実際起きたことを、簡単な例え話にしてみます。
S3のCreateObjectイベント通知でLambdaを起動し、なんやかんや処理したものをS3に出力する、というシンプルなアーキテクチャを考えます。
S3はオブジェクト配置用と、生成物配置用で、input, outputとプレフィックスが分かれてるとしましょう。
Lambdaには当然、S3に関する権限をアタッチする必要がありますが、どんなロールを付与しますか?
AIが答えたのはこんな感じでした。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3ReadWrite",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "(S3バケットのARN)/*"
}
]
}
どうでしょう?ぶっちゃけこれでも動きます。
まあ、大抵の人はわざわざプレフィックスの話をしてたので察されてると思いますが…
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3Read",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "(S3バケットのARN)/input/*"
},
{
"Sid": "S3Write",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "(S3バケットのARN)/output/*"
}
]
}
はい、取得用のプレフィックスへGetObject、出力用のプレフィックスへPutObjectのみの権限を与え、S3のルートには何も付与しません。
AWSのベストプラクティスである最小権限の法則に則るのであればこちらの方がよいでしょう。
この程度は大雑把な現場であったり、個人開発レベルであればめんどくせーってことで最初の方の権限でもまあ許されちゃう、わりと重箱よりな内容だと思います。
なんなら色々アーキテクチャがゴチャゴチャしてて広い範囲の権限をアタッチしないといけない、みたいな現場事情もあったりしそうですね。
ただ、複数人の開発で、誰かが意図せずLambdaを書き換えて変な場所に出力物を出す用にしてしまったり、inputプレフィックスに出力してS3のイベント通知が無限に発射される状態になる可能性も0とは言えません。
人間はミスをする生き物なので、権限の段階で潰しておけるリスクは潰しておくべきです。
AIのラジコンになってしまってる人はこういう所、気付けないんじゃないでしょうか。
プロンプトが悪いのでは?
上では偉そうなことを語りましたが、これは私のプロンプトが悪かった可能性もあります。
当時のことは忘れてしまってますが、「LambdaにS3を使える権限を付与するロール作って」くらいで指示してたら、S3の中のプレフィックスのことまで察しろというのは無理がありますからね。
とはいえ、プレフィックス毎に権限を切り分けるという指示をAIに出せるのは、プレフィックス毎に権限を切り分けるべきという知識がある人にしかできません。(最近のAIはお節介焼きなので、聞き返してくるかもしれませんけどね)
そして、もしレビューを担当する人も同じだった場合、レビューをすり抜けてしまうかもしれません。
Lambdaの権限程度ならまだマシですが、例えばパブリックなEC2のSGが0.0.0.0/0をAllowしてたりしたら大事です。1
何がたちが悪いって、権限が広い方向に倒れていると動くことは動いちゃうんですよね。なので気付きにくい。
何より、FWの設定をパラメータシートに書いてくれ、と言われて、自信満々に0.0.0.0/0 Allowの書かれたシート出されたらどう思います?
その理由を聞いたら「AIがこれで動くって言ってました!」と返されたら?
…怖いですよね。
でも今AI開発が成り立ってるけど?
はい、私もエンジニアしてますが、2年前くらいから現場でもChatGPT使い始めてますし、最近では使わない現場の方が珍しいくらいかと思います。
コード丸ごと食わせていいから納期に間に合わせてくれって言われた時は引きましたけど
大抵何かしらのAIエージェントと契約してあり、それ使って開発することになりますね。
ただ、今現役でエンジニアやっててリーダーやマネジメントする立場の人って、AI無い時からエンジニアやって来てた人だと思うんですよ。
元々知識の土台があり、最悪AIが無くなっても、ググったり謎個人ブログから必要な情報をピックして、知識と組み合わせて正解に導ける人たち。
こういう人たち正しくAIを使えるし、新人がAI任せでポンコツな成果物を渡してきてもレビューで止められる。
少し上で話した「止める人」になれるわけですね。
だから、今はAI駆動開発というものがビジネスの場でも成り立っている。
じゃあ、今後AIに頼りっきりで、なんとなくAIに言われたままに3年、5年と過ごした人は、同じこと出来るんでしょうか?
AI時代だからこそ、AIに**「いや、ここはこうじゃないの?」と突っ込める知識**がより大事になるのではないでしょうか。
まあ、そのころにはAIがもっと発達して、本当に人間のレビュアーなんていらなくなってる可能性もありますけどね…
結局何が言いたいの?
エンジニアの経験を積むための経験をどこで積むのか問題が少しでも緩和されてほしい。
AI時代、この問題はむしろ厳しくなると正直思います。
ジュニアクラスのエンジニアがやるようなことは、AIにプロンプト投げれば済んでしまうことも多いはずなので。
採用する側だって、経験年数ベースで採った方が安心でしょうし、経験年数も知識もある人が居るならそれがベストです。
ただ、資格を取るために学習したエンジニアたちの努力が、経験年数というタグだけで、話も聞かれずに門前払いされてしまうのは悲しい。
AIに任せればなんとなく動くものは出来ちゃう時代に、あえて地道に自学自習できる人。
こういう人の価値は、今後上がってくるんじゃないか、上がって欲しいな。
推測と願望の半々を交えた気持ちで、書かせて頂きました。
-
Inspector有効化してたら警告出してくれるだろ?Configで自動修復しろ?その通りです。ただAIに本当にまかせっきりな人は、0.0.0.0/0をAllowしていることがどういうことかも気付けないのでは?とも思います。 ↩