一度AI駆動開発から離れよう。異動してAI時代の「コピペエンジニア」に堕ちた恐怖。
私の背景
私は大学院卒業後3年ほどIoT系のエンジニアとして組み込みSW開発およびデータ分析を担当していました。企画提案から設計、開発、テスト、保守まで幅広くこなすエンジニアでした。この度web系へと転身を実現し、tsでのフロントバック、CDKなどをスクラムで開発することになりました。社内異動と言うやつです。
異動先は商用でSaaSを開発しているチームで、非常に勉強熱心な技術リーダーの方がチームを率いて開発していました。
僕は異動に先駆けてtsの言語仕様は勉強してから異動しました。
最初に感じたこと
よめない...!!
かけない..!!
組み込みのときには感じたことはありませんでした。Cは手続き型で何をやっているのかが理解しやすいと感じていましたし、OSの中身まで見たりSDKを修正したりして開発していました。それなりに理解できていました。
しかし、webにきて全然読めないのです。
厳密にはそのコード自体は読めるのです。なぜこうなっているのかがわかりません。
言語仕様ではなく、設計に使っている思想と関連したライブラリの理解が大きな障壁でした。
(それと同時に、なんでこんなハイコンテキストなプロジェクトになっているの?という気持ちも少なからずもっていました。みんなこれについてきているのすごいよ)
内容が理解できない(理解するために理解しないといけない思想が多い。)
・ドメイン駆動
・テスト駆動
・ スペック駆動
・ ヘキサゴナルアーキテクチャ
・ 良いテストはなにか?
・ DI (依存性注入)
このあたりを理解しないと、どこに何が書いてあるのかがわかりませんし、なぜこんな書き方になっているのかが全然理解できません。
また、疎結合なヘキサゴナルアーキテクチャとDDDは手続き型に慣れた自分にとってはかなりソースコードが追いにくくなっていました。
そのため、既存のコードを紐解いて理解することもかなり難しかったです。
見つけたと思ったら知識が足りなくて理解できない
アーキテクチャがきれいに責務を分担してくださっていました。お陰でデータの流れを追うのは手間で、サービス全体が見えてきません。
これらを紐解くうちに以下のような部分に当たりました。
・ zod (バリデーション)の使い方
・オブジェクト志向
・ DB(ORMの使い方)
・ クラウドの挙動(AWS自体の理解が必要)
・ 認証
・ 用語
- エンティティ、モデル、サービス、クラス、DTO、UseCase....
理解している時間がない(締切があるので、PRは出さなければいけない)
スクラムで開発しており、チームで工数見積したあとに分担するため、開発にかけることができる時間は駆け出しの僕とベテランの先輩で同じです。
その結果AIフル活用が始まります。
割り当てられたタスクがあれば、関連する部分のみを明確にし、その一部分のみの理解に務めます。
体系的に勉強している時間はないので、そのプロジェクト内の近い機能や近い実装を探して参考にします。
それらをAIを使って自分のタスクに適用してPRを通していきます。
これ、見覚えありませんか...?コピペエンジニアです。
もう絶滅してしまった、qiitaやstackoverflowをみてそれらを貼り付けて組み合わせるだけのエンジニアもどきです。
僕の、AI時代のコピペエンジニア生活が始まりました。
かなり苦しかったです。C言語時代はメモリ、レジスタなどを理解していないとそもそもコードはかけないので当然理解したうえで書いていました。
一方で、転身してからはコピペエンジニアになってしまったような感覚に陥りました。
もやっとして開発が進みますし、成長の実感からは程遠いです。
AI時代も勉強は必須
周りの先輩からはAIの力があるので、勉強するべき内容は変わるはずだとコメントを貰っていましたが、僕はそれにはかなり懐疑的です。
商売の面では、商用開発をするに当たっては、エンジニアはその内容を理解していないと、トラブルがあったときの責任を取れないですし、障害対応も遅れますし、開発も遅いです。
自分自身にとっては、理解できない者が動いているこの気持ち悪さと、それを続けることによる成長率の鈍化が受け入れられないです。
年末なので、ここ数ヶ月の体験をこのようにまとめつつ、来年にはしっかり理解するぞと勉強の年末年始を過ごしています。
それでは、みなさま良いお年を
Discussion