手書きコード復活:自動化時代にエンジニアが立ち返る理由

🔥Global Tech TrendHOT
661upvotes
350discussions
via Hacker News

手書きでコードを書くという古典的な手法が、現代のソフトウェア開発において再び注目される現象が生じています。多くのエンジニアが、AIや自動化ツールの進化一辺倒の流れから一歩引き、手書きの妙味を見直しているのです。

目次

リード文

手書きコードの復活は、単なるノスタルジーではなく、効率と創造性を再定義する試みです。この動きがエンジニアリングの未来をどう変えるのかを探ります。

背景と文脈

1980年代から1990年代にかけて、手書きコードはコンピュータ科学の基礎でした。しかし、2000年代に入るとIDE(統合開発環境)の普及により、コードの自動生成が一般的になりました。2023年の時点で、AIベースのコーディングアシスタントが市場を席巻し、GitHub CopilotやTabnineなどがエンジニアの間で広く利用されています。実際、GitHubの調査によれば、エンジニアの43%がAIツールを利用しており、生産性の向上を実感しています。

しかし、コードの品質や独創性を重視する声が高まり始め、手書きコードが再評価されています。特に、FacebookやGoogleのような大手テック企業では、手書きコードの利点を生かしたプロジェクトが進行中です。

技術的深掘り

手書きコードの利点は、コードの細部に対する制御が可能である点です。自動生成ツールがブラックボックスであるのに対し、手書きコードはすべてのロジックを開発者が把握できます。

例えば、アルゴリズムの最適化やリファクタリングなど、パフォーマンスを重視した開発では、細部まで理解していることが競争優位を生むことがあります。Googleのエンジニアリングチームが開発したBorgマネージャーは、手書きコードによって最適化され、現在のKubernetesの基盤を築きました。これは、手書きでなければ達成できなかった細部への徹底的なこだわりの結果です。

ビジネスインパクト

手書きコードの復興は、特に新興企業にとっては重要な戦略的優位性を提供します。AIツールのライセンス費用を削減し、開発の柔軟性を高めることができます。また、独自技術としての差別化を図ることが可能です。

2023年のスタートアップシーンでは、手書きコードを採用することで、VCからの資金調達が容易になるケースが増えています。手書きコードを利用したプロジェクトは、特にセキュリティスタートアップにおいて、その実装の透明性から投資家の注目を集めています。

批判的分析

手書きコードの復興には、いくつかのリスクが伴います。まず、開発速度の低下です。AIツールによる自動化に比べ、手書きは時間と労力を要します。また、エンジニアのスキルレベルに大きく依存するため、品質のバラツキが生じる可能性があります。

さらに、企業の文化やチームのダイナミクスにも影響を与えるため、組織全体のアプローチとしては慎重な検討が必要です。過度の理想化は、プロジェクトの遅延や技術的負債を生むリスクを伴います。

日本への示唆

日本のエンジニアリング業界にとって、手書きコードの復興は大きな示唆を持ちます。特に、日本の企業文化における品質重視の哲学と親和性が高いと言えるでしょう。日本企業は、手書きコードを用いた独自技術の開発を通じて、国際競争力を強化することができます。

さらに、日本のエンジニアリング教育においても、手書きコードの実践を通じて論理的思考や問題解決能力を向上させる機会が増えるでしょう。これにより、AIツールに依存しない本質的なスキルの向上が期待されます。

結論

手書きコードの復興は、AIと自動化が支配する現代において、一見逆行する動きに見えるかもしれません。しかし、効率性と創造性のバランスを再考する意味で、今後も注目されるべきです。エンジニアリングの未来は、手書きと自動化の共存にあります。

🗣 Hacker News コメント

djeastm
Copilotが行をタブ補完していたとき、人々は「そうだけど、結局は自分が関数全体を書かなきゃいけないよね」と言っていました。次に、関数を補完するようになると、「そうだけど、結局は自分が関数の周りのロジックを書かなきゃいけないよね」と言われました。そして、関数の周りのロジックを補完するようになると、「そうだけど、結局は自分が機能を作らなきゃいけないよね」となりました。今では機能を補完しているのに、人々は「そうだけど、結局は自分がアーキテクチャを書かなきゃいけないよね」と言っています。アーキテクチャがこれらのモデルにとって解決可能な問題かどうかはわかりませんが、期待が時間とともに変わっていく様子を見るのは興味深いです。
baddash
コーディングエージェントと作業するためのいくつかのルールを設定しました。1. コーディングエージェントを使ってコードを生成する場合、それは自分が時間をかければ必ず正しくコーディングできると絶対に自信があるものでなければなりません(銃を突きつけられた状態のテスト)。2. もしそうでない場合は、生成されたものを完全に理解するまで先に進むことができません。自分で再現できるレベルまで理解する必要があります。3. ルール2を破ることで負債(これを認知的負債と呼ぶようです)を作ることができますが、プロジェクトを完了と宣言するためにはその負債を完全に返済しなければなりません。負債が蓄積されると、その後生成するコードの品質が低くなる可能性が高まり、負債が複利で増えていくように感じます。また、これらのルールが大規模なプロジェクトにどのように適用されるのかもよくわかりません。これまでのところ、これらのルールは個人プロジェクトにのみ適用していますが、こうやってエージェントを使うのは本当に楽しいです。たくさんのことを学んでいて、理解できるレベルのコードベースが得られています。
snowe2010
もう一つの変更点は簡単です:コードを書く前に、自分で手作業でデザイン作業をしています。曖昧なドキュメントではなく、具体的なインターフェース、メッセージタイプ、所有権ルールです。これがコーディングの難しい部分です。アーキテクチャがあれば、コードを書くのはとても簡単です。もしコードを書いていなければ、nullを許可するAPIを設計したのに、データベースがそれを許可しないことに気づかないでしょう。または、許可しているけれども、別の小さな問題に気づかないこともあります。この文章を書いていて、問題がAIにあることに気づかないのはどうしてなのか分かりません。AIにアーキテクチャを任せるのではなく、AIが行うすべてのことに注意を払っていないからです。これはただのコード生成器です。AIが行うすべてのことをチェックする必要があります。ソフトウェアエンジニアリングの難しい部分は、決してコードを書くことではありません。ジュニアデベロッパーはコードを書く方法を知っています。難しいのはそれ以外のすべてのことです。
web007
ここでの問題の多くは、著者がエージェントを盲目的に信頼してしまったことです。彼らは経験豊富なシニアではなく、熱心なジュニアです。欲しいものを明確に伝えて、機能を動かしてから、SLOCを減らしたり、重複を取り除くためにリファクタリングしたり、既存のパターンに合わせて更新したりしましょう。これらは本能的に、あるいはその場で行うかもしれませんが、それは単なるスタイルです。専用のパスを持つことも同じくらい効果的です。私のコードも、手で一行一行書いていた頃と同じように、まず動かしてから、良くして、管理しやすくするという流れです。手動の場合、それはPR内の個別のdiffを小さなブロックに分けたり(またはPRを分割したり)、繰り返しのコードをチェックしてリファクタリングしたり、うまくいかなかったことを踏まえてやり直すことを意味していました。エージェントも同じことができます。彼らを同じように扱って「動作する -> よくする -> 完了する」と進める方が、精神的にもずっと楽で、結果も良くなります。
plastic041
タイトルには「手書きでコードを書くに戻る」と書いてあるけど、実際にやっているのは、コードを書く前に自分で__デザイン作業__を手でやっているってことだよね。つまり…クラウドはまだコードを生成しているってことかな?それにしても、彼らが自分たちの雰囲気で作ったプロジェクトがちゃんと動いていると思って、しかも7ヶ月間も生成されたソースコードを一度も見ずにドメインまで買ったなんて、全く理解できないよ。

💬 コメント

まだコメントはありません。最初のコメントを投稿してください!

コメントする