単独で動作するコードを書けることは、もはやプログラミングを学んだ十分な証拠ではない。Udemyで65万人を超える受講生がコースを受講しているPython講師のArdit Sulceによれば、人工知能ツールがアプリケーションの大部分を生成できるようになったことで、重心はすべての行を書くことから、ツールが生成したものを理解し、レビューし、誤りを見つけ、システムの構成要素同士がどのようにつながっているかを知ることへ移っている。
この見解は、JetBrains BlogがSulceに行ったインタビューで示された。Sulceはプログラミング教育で10年に及ぶ経験を持ち、ドイツのUniversity of Münsterで地理技術の修士号を取得している。また、プログラミングとソフトウェア開発を学ぶために人工知能を個人教師として利用するプラットフォーム、ActiveSkill Devの創設者兼主任開発者でもある。
AIは教師の役割をなくすよりも、質問を変えた
Sulceによれば、学生から毎日届く質問の数は、生成AIが普及する前と比べて5分の1から10分の1に減少した。学生が問題に直面したとき、ディスカッションページに質問を投稿して教師やティーチングアシスタントを待つ代わりに、すぐに回答を得られるからだ。
しかし、彼の説明では、残った質問はより大きく、より判断に依存するものになった。どの道筋を選ぶべきか。そのプロジェクトはポートフォリオに含めるのに適しているか。学生が学んでいることは、より広い全体像の中でどのように位置づけられるのか。この観点から、教育コースの役割は特定の質問に答えることだけではなく、初心者が基本的な質問さえ知らない分野の中で、体系的な道筋を示すことにある。
学習者の期待も変化した。Pythonコースが言語と人工知能の関係を無視していると、彼らには古く見える。ツールを使ってコード記述を高速化し、言語モデル、エージェント、自動化に依存するアプリケーションを構築する方法を学びたいからだ。一方で、何をどの順番で学ぶべきかを定め、Sulceが人工知能ツールにとって依然として機械的に繰り返すのが難しいと考える動機と好奇心を与えるうえで、教師はなお重要である。
学習上の苦労はすべて同じではない
Sulceは、理解を深める努力と、時間を浪費する摩擦を区別している。ループがなぜもう1回実行されるのかを突き止めたり、プログラム内のデータの流れを追跡したりすることは、学習の一部になり得る。一方、壊れたドライバーのインストール、曖昧な設定エラー、現在の環境と互換性がなくなった古いレッスンといった問題は、明確な教育上の損失なしにAIへ委ねられる障害である。
この基準に従えば、初心者は次のように問うべきだ。この問題を解決することで、後から使える理解が得られるのか。それとも、単に開始地点へ戻るだけなのか。Sulceは、学習段階では手作業でコードを書くことが依然として重要だと強調している。変数、ループ、データフローについてのメンタルモデルを構築する助けになるからだ。一方、プロフェッショナルな仕事では、すべてのコードを手作業で書くことよりも、ツールが生成したものをレビューすることの重要性が低くなる可能性がある。
キャリアの初期にある開発者に必要な3つのスキル
- 自分で書いていないコードを読むこと:開発者はGitHubのリポジトリ、過去の自分のプロジェクト、エージェントの出力を読み、コードが正しいか、入力が変化しても適切であり続けるかを判断しなければならない。
- 必要なものを正確に表現すること:Sulceは、モデルへの良い依頼とは、コードが何をすべきか、何をすべきでないか、端のケースでどのように動作すべきかを定める仕様だと考えている。これは、かつて別の当事者が担うことの多かった要件という概念に近い。
- システムレベルで理解すること:コードの個々の部分を知るだけでは十分ではない。開発者はアプリケーションの構成要素と、それらがどのように相互接続されているかを理解する必要がある。このスキルによって、開発者はAIの出力に従属するのではなく、AIを監督する立場になれる。
このことは、学生や求職者の評価方法の変更につながる。アプリケーションを構築するよう求めるだけでなく、Sulceは、反復処理の境界に関するエラー、例外の暗黙的な握りつぶし、空の入力がある場合の誤った動作など、特定の問題を含むAI生成コードを提示し、その人が問題を発見して説明できるかを試すことを提案している。また、直接のデバッグセッションを行い、障害の範囲を絞り込む方法を観察することもできる。
コードから監督へ進む段階的な道筋
Sulceは学習を3段階に分けている。統合開発環境の中で小さな実際のプログラムを手作業で書くこと、より大きなプロジェクトへ移行しながら理解できないことを説明してもらう教師としてAIを使うこと、そして最終的に、学習者がレビューする一方でコードの一部をAIに書かせる仕事仲間としてAIを使うことである。
この段階的な進行では、プロジェクトの規模を少しずつ大きくしていく。スクリプトから、データベースを使うアプリケーションへ、次にユーザーを扱うプロジェクト、公開されたサービス、そしてAPIに接続するアプリケーションへと進む。実際には、この道筋は構文の知識とシステムの理解を結びつけている。何年もコードを書けばアーキテクチャ上の理解が自動的に現れると仮定しているのではない。
インタビューは、プロフェッショナルな開発環境の中で学ぶことが形式的な細部ではないと強調している。AIに依存するプロジェクトには、環境ファイル内のAPIキー、仮想環境、依存関係の競合、パッケージのバージョン間の違い、エージェントが作成または変更するファイルが含まれる。そのため、プロジェクトを実行し、変更をレビューし、障害を修正し、コードを安全に変更する能力こそが、学習者が本当にツールを監督しているのか、それともツールが生成したものを受け入れているだけなのかを決める。