technicalsuwako.moe/src/blog/rice-productive.md

7.0 KiB

title: 【プログラミング】生産力を増大する方法 author: 凛 date: 2024-01-04 tags: jp,blog,linux,bsd,セキュリティー,デジタル自主,ソフトウェア,メール,プライバシー

かつて、ハッカー達は非常に生産的でした。
例えば、ケン・トンプソンさん、デニス・リッチーさん、とブライアン・カーニハンさんは2年でUNIXを作りました。
しかし、現在では29人の人々が15年間Waylandを作っていますが、まだ本番環境には適していません。
何故でしょうか。

今日のハッカーはもはや生産的ではありません。
あたしは16年間ハッカーであり、その理由を説明します。

1. プログラミングはもはや楽しくない

あたしがプログラミングを始めた時、空のテキストエディタを開き、自分の好きな様にコードを書き、コンパイルし、それが商業的に出荷可能な製品でした。
今日でもそれは可能ですが、2014年以降に始めたすべてのコーダーは、端末で「Hello World」を表示するだけの為に60の依存関係と300の異なるクラスを入り、複雑すぎるフレームワークを使います。
貴方がそれを使わないと、貴方を素人だと思うでしょう。
あたしは、そう思う人が素人だと思います。
自身のソースコードを開くたびに、それをより良くする事にワクワクします。
SucklessやOpenBSDチームによって作られたソースコードを開くたびに、編集する事にワクワクします。
しかし、ほとんどの現代の開発者によって作られたソースコードを開くたびに、悲しく、怒り、そして惨めになります。

今日のコードはあちこちに散らばっています。
今日のコードはもはや価値ある製品を作る事ではなく、永遠に同じコードベースに閉じ込められ、自殺したくなる様にする事です。

2. 技術は間違った方向に進んでいる

多くの人々は技術が前進していると主張していますが、その「前進」の方向が何であるかは誰も知りません。
あたし達は50年前よりも優れたハードウェアを持っていますが、今日のソフトウェアはどんどん遅くなっています。
我々は、卒業直後の若いコーダーを引き付ける為に人気のプログラムに複雑さを加えすぎており、彼らは大学でVisual Studio Code、React、Laravelのような不必要に複雑なプログラムの使用を学び、CI、Scrum、Agile、パッケージマネージャ、フレームワーク、Electron、Microsoft Office、IntelliJ、VS Code等の生産性を阻害する不要な事を気にする本物のプログラマーについて教えられています。
あたしは高校中退ですが、Neovim、Git、そしてCやGoのような本物のプログラミング言語を使用しています。
それ以外は何も使いません!
そして、まだ完成していないプログラムを除いて、たった1年で11のプログラムを作りました。
これらのプログラムの殆どは1日未満で作成されました。
いくつかはPHPから書き直され、他は時間をかけて徐々に更新され、続ける理由が見つからなかった数個は諦めました。
現在、C、SDL、OpenGL、OpenALで3Dゲームを作成しており、2日後には機能的なプロトタイプが出来ました。

商業ゲーム開発で逆の事が起こっているのは、この業界だけです。
Unityとの論争の後、より多くのゲーム開発者が独自のゲームエンジンを書き始め、カスタムエンジンで同じくらい、またはそれ以上に生産的になり、カスタムエンジンははるかに軽量なので、より高品質なゲームを作る事が出来る事に気づきました。

3. プログラミングにおける政治性

幸いな事に、日本では殆どのハッカーが政治から自由ですが、海外では「CODE_OF_CONDUCT.md」を持たないプロジェクトを見つけるのが非常に難しくなっています。
これは、良いコードを殆ど貢献しない精神的に問題のある人々を快適にする為に、才能を追い出す様に設計されています。
しかし、殆どのオープンソースプロジェクトは海外の物であり、政治に重点を置き過ぎている為、言ってはいけない言葉が多く、世界の50億人のうち2人を不快にする可能性がある事を事前に知っておかなければならず、特定の代名詞を使用する様に強制されますが、これはソフトウェア開発には属していません。
日本のソフトウェア開発者は政治を気にしないにも関わらず、国内のハッカー文化には残念ながらこの影響が及んでおり、より国際化した日本の「現代的」な開発者が海外の「現代的」な開発者の影響を受けています。

4. 先輩が後輩に間違った方法を教える

あたしが以前言った様に、シンプルなテキストエディタ、バージョンコントロールと、コンパイラだけが良いソフトウェアを作る為に必要です。
しかし、若い開発者には必要のない様々なツールの使用が教えられています。
これはストレスを増やし、非生産的になるだけです。
BRIKの「フロントエンドエンジニアになるためのロードマップ」がその一例です。
あたしは「インターネットの基本を習得」、「HTML/CSS/JavaScriptの習得」、「バージョンコントロールの習得」と、「Webセキュリティ知識の習得」が必要だとは思いますが、それ以降は全く不要で、5番から19番を無視すれば、ずっと優れた生産性の高いフロントエンド開発者になれます。
それら全てを学ばなければならないなら、良いソフトウェアを作る事には関心がなく、短期的な利益のみを目的とする悪い会社で働いているという事です。

古いUNIXコミュニティでは、削除出来る機能を常に探していましたが、現代の開発者は追加出来る機能を常に探しています。
誰が最も生産的で、長期的に最もお金を稼いでおり、製品が最も安定しているかを見れば、UNIXの古参者達が正しい事は明らかです。

あたしは現代の産業を憎んでこの記事を書いたのではなく、常に一部である事を愛してきた産業の状態について心配しているからです。

以上