これからのエンジニアのあり方についてChatGPTに聞いてみた
聞いてみようと思った経緯
エンジニアというのは猫の手も借りたいというほど多忙で、基本的にはリソースとの戦いだと思っているので、工数というものは単純に考えると減れば減るほど良いとなるはず。
そして仮にリソース(お金なり、時間なり)が浮くようなことがあれば別の工程に回されるはず。
ChatGPTさんが私達のお仕事(作業)を削減しまくって、めちゃくちゃリソースが浮いたとしても、
そこらへんには「やりたいこと」「やった方がいいこと」というのがゴロゴロ転がっていると思う。
問題は…
1.削減された作業に従事していたり、これから従事しようとしている人たちの
「これまでの努力は何だったんだ」というお気持ち。
2.浮いたリソースを再配分するときに、その配分先をどうやって選ぶか。
の2点なのかと思う。1についてはヨシヨシしてあげるしかない(自分への慰め)。
ということで、2についてChatGPTさんに聞いてみようと思った。
問
現在、コーディング作業しかできないプログラマがいます。
ChatGPTのせいでそのプログラマの仕事がなくなってしまうか、そのプログラマの給与が大きく下がってしまいそうです。そのプログラマは今後どのようなスキルを身につけるべきですか?
答
ChatGPTのような自然言語処理技術がますます進化するにつれて、プログラマのコーディング作業に対する需要は徐々に減少する可能性があります。そのため、現在、コーディング作業しかできないプログラマは、自分自身のスキルをアップグレードする必要があります。
以下は、そのプログラマが今後習得すべきスキルのいくつかです。
1.ソフトウェアアーキテクチャの理解: コードを書く前に、ソフトウェアアーキテクチャの設計を理解する必要があります。ソフトウェアアーキテクチャの理解は、プログラムを効率的に書くために必要な基礎です。
2.ソフトウェア開発ライフサイクルの理解: ソフトウェア開発ライフサイクルは、プログラマがプロジェクトを管理し、テスト、デプロイ、保守を行うための重要なフレームワークです。プログラマは、ライフサイクルの各段階を理解し、プロジェクトを正しく管理できるようにする必要があります。
3.データ構造とアルゴリズムの理解: データ構造とアルゴリズムの理解は、コードの効率性を高めるために必要な基礎です。プログラマは、適切なデータ構造とアルゴリズムを選択し、問題を解決するための効率的なコードを書く必要があります。
4.ソフトスキルの習得: コーディング以外のスキルを習得することは、プログラマにとってますます重要になっています。プログラマは、コミュニケーションスキル、プロジェクトマネジメントスキル、チームビルディングスキルなどを習得し、効果的に協力し、チーム内での作業に貢献することができます。
5.他のプログラミング言語の習得: コーディング作業に特化したプログラマは、新しいプログラミング言語を学ぶことで、より多様なプロジェクトに取り組むことができます。例えば、Python、Java、C ++など、異なるプログラミング言語を習得することは、プログラマのスキルセットを拡大し、より多くの仕事に応募することができます。また、異なるプログラミング言語を習得することで、コードをより効率的に書くことができるため、プログラム開発プロセスを迅速化することができます。
6.AI、機械学習、データサイエンスの理解: ChatGPTのような自然言語処理技術は、AIと機械学習の分野で重要な役割を果たしています。プログラマは、AI、機械学習、データサイエンスの分野においてもスキルを習得し、ChatGPTなどの技術を理解することが重要です。
プログラマは、上記のスキルを身につけることで、コーディング作業だけではなく、より高度なタスクやマネジメントタスクにも対応できるようになります。これにより、プログラマはより多様な仕事に応募でき、将来的にはChatGPTのようなテクノロジーの進化にも対応できるようになります。
※この質問の前に下記のような質問を投げかけて、コーディング作業が減るという文脈を作っています。
ChatGPTがプログラミングのコードを出力してくれることで、プログラマの仕事の大部分をChatGPTに任せることができるようになりました。
ChatGPTを使用するプログラマにとって、これから先の未来ではどのようなスキルが重要になってきますか。
設計とかマネジメント頑張れってこと??
問
なるほど。中長期的な視野を持った場合、コーディング作業から離れて、他のスキルを磨いていく必要があるという理解で合っていますか?
答
はい、その通りです。中長期的な視野を持っている場合、コーディング作業だけにとどまらず、より高度なタスクやマネジメントタスクにも対応できるようになる必要があります。これにより、プログラマはより多様な仕事に応募でき、将来的にはChatGPTのようなテクノロジーの進化にも対応できるようになります。また、AIや機械学習、データサイエンスの分野にもスキルを習得することで、プログラマはより高いレベルでのプログラミング作業に取り組むことができます。
「はい、その通りです」
そういうことらしいですよ!皆さん!
もう少し深堀りしてみました。
問
「より高度なタスクやマネジメントタスク」について更に詳しく教えて下さい。
答
プログラマがより高度なタスクに取り組むことは、コーディング作業だけではなく、より複雑で高度な問題を解決することを意味します。具体的には、以下のようなタスクがあります。
1.アルゴリズム設計: プログラマは、より複雑なアルゴリズムを設計することができます。これは、より高度な問題を解決するために必要です。たとえば、人工知能や機械学習のアルゴリズムを設計することができます。
2.システムアーキテクチャの設計: プログラマは、より複雑なシステムアーキテクチャを設計することができます。これは、大規模なソフトウェア開発プロジェクトの場合に特に重要です。システムアーキテクチャを設計することで、ソフトウェアの開発プロセスを最適化し、よりスケーラブルなソフトウェアを開発することができます。
3.プログラム管理: プログラマは、プログラムの開発プロセス全体を管理することができます。たとえば、開発の計画や進捗管理、品質管理などが含まれます。これは、より大規模なプロジェクトに適したスキルです。
4.チームマネジメント: プログラマは、チームを率いることができます。これには、開発チームの指導、メンバーの成長支援、コミュニケーションの改善などが含まれます。
以上のような高度なタスクに取り組むことで、プログラマはより高いレベルでのプログラミング作業に取り組むことができ、より多様な仕事に応募できるようになります。
平たく言うと上流側だったり、マネジメント側のことやれってことかな
コードを書く工数がめちゃくちゃ削減されたところで、やれることはたくさんあるだろ。
というのがChatGPTさんの答えのようです。
私も個人的に同意しますし、なんなら上流側やマネジメント側ではなく、もっと畑違いの
ビジネスサイドに寄っていっても良いわけですよね。
後進を育成したり、QOLを向上させたり、できることはたくさんあるはず。
正直なところ、勉強してきたことが機械で一発でポンと出来てしまう様子を目の当たりにして、
いたたまれない気持ちになってたんですが、無駄だったということは無いと思うので
前向きに捉えていきたいですね。