適切な AI ツールを見つけることが重要です。各ツールには独自の対話方法があり、単体テストの自動作成、テスト データの生成、ドキュメントの作成など、さまざまな方法で各ツールを開発ワークフローに統合できます。
たとえば、GitHub Copilot やその他の AI コーディング アシスタントは、コーディング能力を強化し、コーディングの提案を提供してくれます。一方、ChatGPT と Google の Bard は、API (アプリケーション プログラミング インターフェイス) に関する質問に答えたり、コード スニペットを生成したりするために使用できる会話型 AI プログラマーに似ています。
**重要なのは実験することです。 AI ツールを試し、その仕組みを理解し、その出力の品質を考慮し、他の AI ツールにも寛容な心を持ち続けてください。 **エイブラハム氏は次のように述べています。「人工知能の分野は急速に変化しています。特定のツールを永久に使用することはできません。そのため、新しいツールに迅速に適応する必要があります。」
プログラマは ChatGPT の世界でどうやって生き残るのでしょうか?
出典: 神翻訳局
編集者注: ChatGPT の発表により、多数の人工知能コード生成アシスタントが市場に登場しました。生成型人工知能は注目を集めており、人間の生活のあらゆる側面に浸透していますが、AI は本当に人間のプログラマーに取って代わるのでしょうか?プログラム開発者にとって、ChatGPT の世界で生き残り、発展するにはどうすればよいでしょうか?この記事では、人間のプログラマーが生成 AI の先を行くのに役立つ 4 つのヒントを紹介します。この記事は翻訳されたものですが、あなたのインスピレーションになれば幸いです。
人工知能、特に大規模言語モデル (LLM) を利用した生成 AI は、プログラマー業界全体を破壊する可能性があります。しかし一部の専門家は、少なくともすぐにはAIが人間のプログラマーに取って代わることはないと考えている。
カリフォルニア大学デービス校の生体医工学博士であり、医療用人工知能研究センターである MedARC の CEO であるタニシュク・マシュー・アブラハム氏は、「自分自身の代わりに AI を使用する人々について心配する必要があります。」と述べています。
では、LLM コーディングの時代が近づくにつれて、ソフトウェア開発者はどのようにして自らの価値と有用性を高めることができるのでしょうか?ここでは、プログラマーが生成人工知能の時代を生き抜き、成功するためのヒントとコツをいくつか紹介します。
基本原則とベスト プラクティスを遵守します
多くの AI ベースのコーディング アシスタントはコードの作成やコードの生成を支援しますが、プログラミングを学習するための基本的な能力、つまりコードを読んで分析し、作成したコードが大規模システムにどのように適用されるかを理解する能力は依然として必要です。 **
「私は人工知能がソフトウェア開発者の生産性を大幅に向上できると信じていますが、ソフトウェア エンジニアリングはコードを生成するだけでなく、ユーザー要件の生成、デバッグとテストなども行います。」
**最も重要なプログラミング スキルの 1 つは、依然として人間のプログラマーの領域である、問題解決です。 ** 問題を分析し、それに対する適切な解決策を見つけることは、依然として高く評価されているコーディングスキルです。
「プログラミングには創造的な側面があり、問題解決のスキルは実際のプログラミング言語やツールよりも重要です。人工知能との比較に囚われないでください。人工知能は多かれ少なかれ、大規模な言語モデルの統計的な出力にすぎません。」開発者自身が行うこととモデルが出力するものには違いがあり、開発者としてはコードを書くこと以上のことが重要です」と Python Software Foundation の研究者であり、Explosion の共同創設者兼 CEO である Ines Montani 氏は述べています。
さらに、**優れたソフトウェア エンジニアリングの実践は、これまで以上に価値が高まっています。 **これらの実践には、システム設計とソフトウェア アーキテクチャの計画が含まれており、プログラマーは人工知能ツールを使用して、次にどのようなコードが必要になるかをより効果的に予測できます。
「プログラミング エンジニアは、コードのデータ構造、コードを整理するための適切な抽象化、さまざまなインターフェイスの要件を理解する必要があります。これらはすべてソフトウェア エンジニアリングの実践の中核であり、消えることはありません。これからもずっと。」
ニーズに合ったツールを見つけてください
適切な AI ツールを見つけることが重要です。各ツールには独自の対話方法があり、単体テストの自動作成、テスト データの生成、ドキュメントの作成など、さまざまな方法で各ツールを開発ワークフローに統合できます。
たとえば、GitHub Copilot やその他の AI コーディング アシスタントは、コーディング能力を強化し、コーディングの提案を提供してくれます。一方、ChatGPT と Google の Bard は、API (アプリケーション プログラミング インターフェイス) に関する質問に答えたり、コード スニペットを生成したりするために使用できる会話型 AI プログラマーに似ています。
**重要なのは実験することです。 AI ツールを試し、その仕組みを理解し、その出力の品質を考慮し、他の AI ツールにも寛容な心を持ち続けてください。 **エイブラハム氏は次のように述べています。「人工知能の分野は急速に変化しています。特定のツールを永久に使用することはできません。そのため、新しいツールに迅速に適応する必要があります。」
また、適切な使用例も考慮してください。生成型人工知能ツールは、新しいプログラミング言語を迅速に学習するのに役立ち、短期間でプロジェクトのプロトタイプを作成することもできます。
明確で正確な対話が不可欠です
AI コーディング アシスタントを使用する場合は、ニーズを詳しく説明し、反復プロセスとして考えてください。アブラハムは、アシスタントがコメントに基づいて要件を満たすコードを生成できるように、コードを説明するコメントを書くことを提案しています。
会話型 AI プログラマーの場合、プロンプトを最適に設定する方法を知る必要があり、そこでプロンプト エンジニアリングが役に立ちます。
エイブラハムは、思考連鎖を促す方法を使用することを提案しました。この方法には、実際には 「分割統治」 戦略が含まれます。つまり、問題を複数のステップに分解し、それを 1 つずつ解決することで、最終的に問題全体を解決します。 「モデルに一定時間内にあまりにも多くのことを実行するように要求すると、モデルはうまく機能しません。モデルがしなければならないのは、管理可能な情報の塊を処理し、管理可能なコードの塊を生成できるようにすることです」と同氏は述べた。
たとえば、AI プログラマーにプログラム全体を最初からコーディングするよう依頼するのではなく、プログラムが実行する必要があるすべてのタスクについてよく考えてください。 **これらのタスクをさらに分割するには、モデルがタスクごとに特定の関数を記述する必要があり、特定のタスクを達成するために必要な手順についてモデルを行ったり来たりする必要があります。 **
「あるテーマについての知識はあるが、経験はそれほど多くない、賢いインターンのようなものだと考えてください」とエイブラハムは言います。
チップエンジニアリングの精度と明瞭さは非常に重要です。エイブラハム氏は、「モデルに何を望んでいるのかを非常に明確に伝え、モデルに解決を求めている問題を正確に伝え、それを確実に実行する必要がある。」と述べました。
**人工知能と機械学習の基本概念を学び、大規模な言語モデルがどのように機能するか、およびその長所と短所を理解することも重要です。 **調査を行う必要がありますが、結果を判断するにはある程度の常識が不可欠です。
始めるのに役立つように、Abraham 氏は、ヒント ライブラリとツール、ヒント ガイド、ビデオ レッスンなどに関する章が含まれる OpenAI Cookbook を推奨しています。一方、Weisslingame 氏は、モデルと機械学習の基本について学ぶために、Illustrated Transformer を読むことを推奨しています。
批判的であり、リスクを認識する
ソフトウェア エンジニアは、大規模な言語モデルの出力に対して批判的である必要があります。これは、言語モデルが幻覚を起こし、架空のコード、不正確なコード、さらには誤ったコードを生成する傾向があるためです。 「AIが生成したコードをやみくもに使用すると行き止まりに陥りやすく、微妙なエラーを見つけるのが難しい」とワイスリンゲーム氏は言う。
「そのため、生成されたコードをチェックすることが重要です。作業が追加される一方で、生産性に良い影響を与える可能性があり、生産性に悪影響を与える可能性があります」とワイスリンゲーム氏は述べていますが、エイブラハム氏は、「場合によっては、コードを検証する方が、コードを作成するよりもはるかに簡単である」と主張しています。スクラッチでコードを生成し、検証して、既存のコードベースに統合する方がはるかに高速な方法です。」
これらのモデルの出力を分析して、次の質問をしてみましょう: **このモデルはどのデータでトレーニングされましたか?どのデータが除外され、どのデータが含まれませんでしたか?トレーニング データはどれくらい古いものですか?モデルはどのバージョンのプログラミング言語、ソフトウェア パッケージ、またはライブラリでトレーニングされましたか?これらの質問に対する答えは結果に影響を与え、より関連性の高い情報が得られる可能性があります。 **
開発者は、これらのモデルに独自のコードを入力することにも注意する必要があります。 Tabnine などの一部の企業は、プライバシーを確保しながら企業のコーディング パターンとスタイルを学習する、AI を活用したコーディング アシスタントのエンタープライズ バージョンを提供しています。
著作権も考慮すべき点ですが、これらのツールを使用して数行のコードを完成させたり、一般的で簡単なタスクのコードを生成したりする場合は、大きなコードの塊を生成する場合よりも著作権の問題はそれほど問題になりません。
「プログラマは、自分がやろうとしていることの創意工夫と、その創意工夫が環境にどれだけうまく適合するかをある程度認識する必要がある」とレサマ氏は言う。 「モデルによって生成されたコードに独自性がある場合、それをコードベースに組み込む前に、疑念を持って扱う必要があります。」
これらのモデルでは脆弱性を含むコードが生成される可能性があるため、より大きな懸念はコードのセキュリティです。 Weisslingame は、コード レビューや強力なテスト パイプラインなどのソフトウェア開発のベスト プラクティスが、このリスクを防ぐのに役立つと考えています。
「経験豊富なソフトウェア エンジニアが議論の対象にできることの 1 つは、コード内の最も一般的な脆弱性と、コードが脆弱になる最も一般的な方法です。彼らは、どこを調べるべきか、どの場所を調べるべきかについての直観を養うでしょう」とレサマ氏は語った。警戒心を引き起こします。将来的には、このようなテクノロジーはソフトウェア エンジニアリング ポートフォリオの中でさらに重要な部分になるでしょう。 」
プログラマーが生成型 AI の世界で生き残るためには、AI をツールとして捉え、ワークフローに統合する必要があります。その一方で、それらのツールの機会と限界を認識し、人間のコーディング能力に依存して成長し発展する必要があります。
翻訳者: アラオン_