/note/tech

Yes, and...

要約:

■ 1. コンピュータプログラミングはAI時代においても有望なキャリアである

  • プログラミングの本質はコンピュータを用いた問題解決と複雑性の制御の2点であり、これらのスキルの価値はAIの登場によっても変わらない
  • 現在のプログラマー就職市場は厳しいが、これは一時的な状況であり循環的な市場変動の一部である

■ 2. ジュニアプログラマーはAIにコードを生成させるべきでない

  • AIがコードを生成できるとしても、自分でコードを書かなければコードを読む能力が養われない
  • コードを読めなければ「魔法使いの弟子の罠」に陥り、理解も制御もできないシステムを生み出す危険がある
  • コードを書く経験が、ソフトウェアアーキテクチャの直感を育む唯一の手段である

■ 3. AIへのコード生成依存はアセンブリから高水準言語への移行とは異なる

  • コンパイラは決定論的だが現在のLLMは非決定論的であり、同じプロンプトに対して同一の結果が保証されない
  • 高水準言語は偶発的複雑性を排除したが、LLMが生成するコードは不適切なアプローチや近道によって偶発的複雑性を増加させることがある

■ 4. AIは優秀なティーチングアシスタントとして機能する

  • AIはコード生成ツールとしてではなく、概念や技術の理解を深めるパートナーとして活用すべきである
  • 学習中に「詰まる」問題、特にツールチェーンなどの環境に起因する偶発的複雑性の解消に有効である
  • 筆者はAIをTAとして機能させるためのAGENTS.mdファイルを学生に提供している

■ 5. AIによるプログラミングの変化と今後重要性が増すスキル

  • コミュニケーション能力:
    • LLMおよび人間との明確な文章による思考・伝達能力の重要性が増す
    • 読書や記事執筆などがこのスキルの向上に寄与する
  • ビジネス理解:
    • プログラマーがビジネスや業務上の実問題を深く理解する能力の価値が高まる
    • AIの活用によりプログラマーはコア業務を維持しつつ現実問題の理解に時間を割けるようになる
  • ソフトウェアアーキテクチャ:
    • 大規模システムを効果的に設計し複雑性を制御する能力の重要性が増す
    • アーキテクチャのスキルは小規模なコードを書く経験の積み重ねによって習得されるものであり、AI依存による経験不足は将来のアーキテクト能力の低下につながる
  • LLMの効果的な活用:
    • 既存コードの分析・理解、大規模プロジェクトの思考整理、小規模コードの生成、正規表現やCSSなど書きたくないコードの生成、デモや探索的コードの生成、テストの提案といった用途に限定して使用する
    • フルソリューションの生成やAPIの設計にLLMを使用すべきでない

■ 6. 就職活動における実践的なアドバイス

  • オンライン求人サイトはほぼ効果がなく、特にジュニアには宝くじ的な存在である
  • 「4つのF」として家族・友人・友人の家族といった個人的なコネクションを活用すべきである
  • 100人以上の企業にはほぼ必ず何らかの開発部門が存在しており、コネのある企業への就職は競争優位をもたらす
  • コスタコ社員の親を持つ学生の例のように、非IT企業でもプログラミングスキルは大きな強みになる