HN 日本語サマリー

← 一覧へ戻る
キャリア

Yes, and

Yes, and (htmx.org)

64 pointsby Michelangelo1121 コメント

要約

AI時代におけるコンピュータプログラマーのキャリアについて、著者は「Yes, and…」と答えています。AIはコード生成を助けるが、問題解決能力や複雑性の制御といったプログラミングの本質は依然として重要であり、ジュニアプログラマーはコードを書く経験を積むべきだと主張しています。また、AIを効果的な学習支援ツールとして活用し、コミュニケーション能力やビジネス理解、システム設計といったスキルを磨くことの重要性を説いています。

全文翻訳

Yes, and… カーソン・グロス 2026年2月27日 私はモンタナ州立大学でコンピュータサイエンスを教えています。3人の息子がおり、彼らは皆、私がコンピュータプログラマーであることを知っており、少なくとも一人はこの分野に興味を示しています。私はコンピュータプログラミングを愛しており、その愛を息子たち、クラスの学生、そして聞いてくれる人々に伝えようとしています。最近、親戚、友人、学生からよく受ける質問は、「AIがあるのに、コンピュータプログラマーになることをまだ考えるべきか?」というものです。私の答えは「Yes, and…」です。 「Yes」 コンピュータプログラミングは、基本的に2つのことを行います。 コンピュータを使った問題解決 これらの問題を解決しながら複雑性を制御することを学ぶ AIツールが登場しても、コンピュータで問題を解決する方法や、それらの解決策の複雑性を制御する方法を知ることの価値が、今日よりも低くなる未来を想像するのは難しいです。そのため、AIの登場があっても、依然として実行可能なキャリアであり続けると思います。 「コードを書かなければならない」 とはいえ、AIはジュニアプログラマーにとって非常に危険だと考えています。なぜなら、多くの問題に対して効果的にコードを生成できるからです。ジュニアプログラマーがコードを書くことを学ばず、単に生成するだけでは、コードを書くことによって得られる、コードに対する本質的な理解の機会を奪うことになります。このため、私は学生に警告します。「はい、AIはこの課題のコードを生成できます。しかし、それに頼らないでください。あなた自身がコードを書かなければなりません。」コードを書かなければ、コードを効果的に読むことができなくなると説明しています。AIベースのコーディングの未来では、コードを読む能力は間違いなく価値がある、おそらくさらに価値があるでしょう。もしコードを読むことができなければ、「魔法使いの弟子」の罠に陥り、理解も制御もできないシステムを作り出すことになります。 コーディング → プロンプトは、アセンブリ → 高水準コーディングのようなものか? 高水準言語からAI生成コードへの移行は、アセンブリから高水準プログラミング言語への移行のようなものだと言う人もいます。私はこの比喩には同意しません。コンパイラは、現在のAIツールとは異なり、ほとんどの場合、決定論的です。高水準プログラミング言語の構文(forループやif文など)があれば、特定のコンピュータアーキテクチャに対して生成されるアセンブリコードがどのようになるかを、ある程度の確実性を持って言うことができます(少なくとも最適化前は)。現在のLLMベースのソリューションに対して、特定のプロンプトに対して同じことが言えるわけではありません。高水準プログラミング言語は、アセンブリ言語では不可能だった、最小限のテキストでコンピュータを使って問題に対する非常に仕様化されたソリューションを作成するための非常に良い方法です。それらは多くの偶発的な複雑性を排除し、(コードが適切に書かれていれば)ほとんど必要な複雑性だけを残しました。一方、LLM生成コードは、しばしば偶発的な複雑性を排除せず、実際には、問題に対する不適切なアプローチを選択したり、近道を使ったりすることで、かなりの偶発的な複雑性を追加することができます。コードを読むことができなければ、どうやってそれを判断できるでしょうか?そして、コードを読みたいのであれば、コードを書かなければなりません。 AIは素晴らしいTAになる 学生に伝えるもう一つのことは、AIは適切に使えば、非常に効果的なTA(Teaching Assistant)になるということです。コードジェネレーターとしてではなく、概念やテクニックを理解するためのパートナーとして使用すれば、知的発達に大きな boost を与えることができます。コンピュータプログラミングを学ぶ上で最も難しいことの一つは、「行き詰まる」ことです。トリックが見えなかったり、どこから始めれば良いのかさえよく分からなかったりします。さらに悪いのは、偶発的な複雑性によって行き詰まることです。特定のツールチェーンの操作方法が分からない、あるいはツールチェーンとは何かさえ分からない場合です。これはあなた自身の問題ではなく、あなたの環境の問題です。無駄に行き詰まることは、実際に学ぶための時間を奪い、しばしば人々をコンピュータサイエンスから遠ざけます。(私はバークレーでUnixを独学しようとして行き詰まり、それが私がコンピュータサイエンスプログラムを中退した理由の一つです。)AIは、これらの障害を乗り越えるのに役立ち、正しく使用されれば、素晴らしいTAになります。私は学生に提供するAGENTS.mdファイルを投稿しました。これは、コードジェネレーターではなく、素晴らしいTAのように振る舞うようにコーディングエージェントを設定するためのもので、この役割でAIを使用することを奨励しています。AIは、適切に使用される限り、コンピュータプログラマーとしてのあなたの能力の妨げになる必要はありません。 「そして…」 AIはコンピュータプログラミングを変えるだろうと私は思います。一部の人が考えるほど劇的ではないかもしれませんが、いくつかの根本的な方法で変わるでしょう。 生のコーディングは重要でなくなるかもしれない コーディングという行為の相対的な価値が失われるかもしれません。私はそれを残念に思います。私は通常、コーディングという行為が好きです。自分の(比喩的な)手で何かを動かすのは楽しいです。コードをうまく書くことには芸術性と満足感があり、それを行う際には多くの美的決定が伴います。しかし、生のコーディング能力は将来、重要でなくなる可能性が高いようです。これが相対的に重要でなくなるにつれて、他のスキルがより重要になると私には思えます。 コミュニケーションスキル 例えば、LLMと人間の両方と、明確に書き、考え、コミュニケーションする能力は、将来、はるかに重要になる可能性が高いです。多くのコンピュータプログラマーはもともと文学的な傾向を持っており、これは時間の経過とともに価値が増す可能性のあるスキルであり、取り組む価値があります。本を読んだり、エッセイやブログ記事を書いたりすることは、この点で役立つ活動のように思えます。 ビジネスの理解 もう一つ取り組めることは、精神的なエネルギーの一部をビジネス(または政府の役割など)をよりよく理解することに向けることです。コンピュータプログラミングはコンピュータを使った問題解決であり、ビジネスにはそれらの問題がたくさんあります。一部のビジネス関係者はAIを見て、「素晴らしい、プログラマーは不要だ!」と言うかもしれませんが、プログラマーが「素晴らしい、ビジネス関係者は不要だ!」と言うのと同じくらいもっともらしいように思えます。私はこれらの見方の両方が近視眼的だと思いますが、AIはプログラマーが、解決している現実世界の問題(ビジネス上の問題など)を理解することにもっと時間を投資しながら、根本的にプログラマーとして働き続ける能力を与えることができると私は思います。これはコミュニケーションスキルを向上させることとよく合致します。 システム「アーキテクチャリング」 多くのコンピュータプログラマーと同様に、私は「ソフトウェアアーキテクト」という言葉に対して両義的な感情を持っています。私は、アーキテクト・アストロノートが世界に多くの苦痛をもたらすのを見てきました。しかし、より良い言葉がないため、ソフトウェアアーキテクチャは時間の経過とともにますます重要なスキルになると私は考えています。それは、大規模なソフトウェアシステムを効果的に組織する能力、そして決定的に、それらのシステムの複雑性を制御する能力です。ジュニアにとってのこのことの難しい点は、伝統的に、より大きなソリューションをうまくアーキテクトする能力は、まず下手で、その後、時間の経過とともに、より効果的に小さなシステム部分を構築した経験から来るということです。私が会ったほとんどの悪いアーキテクトは、悪いコーダーであるか、単にコーディング経験がほとんどありませんでした。AIに「簡単な」部分のコードジェネレーターの役割を任せると、効果的なアーキテクトになるために必要な直感をどのように開発するのでしょうか?だからこそ、繰り返しますが、コードを書かなければならないのです。 LLMの効果的な使用 価値が増すと思われるもう一つのスキルは(明らかに)、LLMを効果的に使用する方法を知ることです。私は、現在、それが何を意味するのかをまだ理解している段階にあると考えています。また、その意味は経験レベルによって異なるとも考えています。 シニア AI以前の時代からの豊富な経験を持つシニアプログラマーは、LLMを効果的に使用する良い立場にいます。彼らは「良い」コードがどのようなものかを知っており、大規模なシステムを構築した経験があり、何が重要で何が重要でないかを知っています。シニアプログラマーの危険性は、プログラミングを完全にやめてしまい、脳の退化に苦しみ始めることです。特に危険なのは、プロンプトを送信し、待っている間に「永遠のスクロール」に引き込まれることです。どうやって知っているか私に聞いてください。私は通常、LLMを次のように使用しようとします。