現在のブログ
ゲーム開発ブログ (2025年~) Gamedev Blog (2025~)
レガシーブログ
テクノロジーブログ (2018~2024年) リリースノート (2023~2025年) MeatBSD (2024年)
【スキル】独学 vs 大学学位
此の記事はちょっとデリケートな内容に成るかもしんので、大学学位をお持ちで傷つき易い方は、今直ぐ此処から離れて下さい。
でないと一日が台無しに成りますよ。
あたしの記事に共通するテーマは、持っているツールが少ない程、プログラマーとして優れた存在に成るという事です。
此れは実践だけでなく、理論にも当てはまります。
背景
あたし自身は大学学位を持っていません。
中学校を中退し、15歳で働き始めました。
最初の会社は、3年間研修をしてから専門学校に通わせて学位を取得させ、其の後正社員として雇用する事を約束してくれました。
全て約束通り進みました。
但し、会社はあたしを実際に研修してくれなかった点だけが違いました。
実務プロジェクトを渡すだけで、其れ以外は完全に放任主義でした。
助けを求めると、マニュアルを読め、ネットで調べろ、又は邪魔する等言われるだけでした。
普通なら怒って辞める所だと思いますよね?
然し、そうは成りませんでした。
代わりに、自分で適切なツールを探し、マニュアルを読んで使い方を学び、其れを実行に移しました。
結果として、彼らは実際に私を訓練してくれていたのです。
プログラマーの様に考える力を。只、其れを直接教えてくれたわけではないだけです!
2007年、あたしは病院の患者記録を管理し、緊急通報が入ったら報告するウェブベースのプロジェクトを任されました。
緊急通報のためにはパフォーマンスを、患者データの為にはセキュリティを意識する必要がありました。
色々調べた結果、当時最も一般的だったウェブ開発スタックであるApache、PHP、MySQL、Linuxを選びました。
Apache、PHP、MySQLのマニュアルを読み込みました。
Linuxのマニュアルは必要ありませんでした。
既に10年間使っていたからです。
そして、3台のモニター付きPCで作業を始めました。
1画面でコード、1画面でブラウザ、もう1画面でマニュアルです。
4ヶ月後、徹底的なテストを含めて完成したシステムを納品出来ました。
会社は製品を届けられて喜び、病院はすぐに使える製品を得て喜びました。
其の後もプロジェクトをこなし、PHPとMySQLの腕がどんどん上がっていきました。
2012年、会社が全額負担してくれた2年間の専門学校を卒業し(借金もローンもなし)、ウェブとは関係のない新しいプロジェクトに配属されました。
具体的には、ある有名大学の監視カメラを監視・管理するツールでした。
今回はクライアント用のデスクトップアプリケーションとサーバーサイドのプロジェクトでした。
其の為、PHPは使えません。
当時知っていた他の言語はC++、C#、Javaの3つだけでした。
其々調べた結果、Javaは.jarファイルにコンパイルされたファイルを実行する方法を分からず、C#は当時Windows専用だったので最初から候補外でした。
しかも両方とも巨大なIDEが必要で、スクリーンショットを見ただけで何が何だか分かりませんでした。
C++は文法が複雑でしたが、コンパイルしたコードを実行出来、Linuxでも動かせ、IDEも不要だったのでC++に決定しました。
PHPの時よりずっと難しかったですが、マニュアルと創造的な思考でやり遂げ、低レベルな概念も沢山学びました。
C++はゲーム開発への入り口にもなりました。
上記のプロジェクトが終わった直後から、サイドでゲーム開発を始めました。
皮肉な事に、其の頃からWindowsをよく使う様に成り、Unityと其の中のC#を使う様に成りました(当時はWindows限定でした)。
同時にC++でOpenGLも学びました。
Unityでかなり進んだ物の、C++程楽しくなかったからです。
1年後、Wii UとNintendo 3DS向けのゲーム開発に携わる様に成りました。
学位なしの人 vs 学位ありの人
此処までの話の要点は、あたしには学位がなかった為、誰にも全てを教えてもらう事が出来なかったという事です。
其れが強制的に自分の道を切り開かせ、学位保有者では決して思いつかない様な創造的な問題解決を可能にしました。
此れが今のあたしの思考法、中央集権的なソリューションに頼らず、自分でやり遂げる、の基盤になっています。
だからこそ、あたしはAWS、Cloudflare、Ruby on Rails、Javascript/NodeJS、vibe コーディング、クラウドストレージ、其の他凡ゆる流行を拒否してきました。
ブロックチェーンは採用しましたが、寄付の受け取りやサービス支払い手段としてだけで、其れ以上の用途はありません。
職場で直接見てきた事ですが、学位保有者と話すと、外見以外の違いが殆どありません。
スキルレベルも、好きな言語も、フレームワークも、パフォーマンスやセキュリティへの理解(どちらも保母ゼロ)も、更には政治的見解まで同じです!
プログラミングリーダーとして彼らにソフトウェアを作らせると、あたしが通ったプロセスを一切踏みません。
代わりに、学校で教わったフレームワークを選び、初期化し、必要な依存関係をインポートし、ネットからコードをコピペするだけです。
其処であたしは「此のログイン画面はサーバー側でどう動いているか?」や「フォームに入力された情報が本当に有効かどうかをどうやって確認する?」といった質問をします。
返ってくる答えは「分からない」か、非常に愚かな物でした。
殆どの場合は「分からない」でした。
分かった場合でも完全に間違っていて、セッションとクッキーの区別すらつかない人もいました。
中には自分がどちらを使っているかも分からず、「ユーザーがユーザー名とパスワードを入力してログインをクリックしたら、ぽんっとログインされる」という程度の答えしか出ない人もいました。
あたしが期待する答えは「ユーザーがユーザー名とパスワードを入力してログインをクリック → サーバーがDBにユーザーが存在するか、空欄でないか、パスワードが一致するかを確認 → トークンを生成したクッキーを設定し、有効期限などを付与 → ダッシュボードにリダイレクト」といった物でしたが、そんな答えは一度も返ってきませんでした。
本物の知識を聞いたのは、既に長年の経験がある年配の人か、全てを独学で学んだ人だけでした。
確かに彼らは動く物は作れますが、何故動くのか、どう動いているのか、サーバーが何をしているのかを理解していません。
何故其れが危険か?
数ヶ月後、彼らが作った物が動かなくなり、顧客が大規模なダウンタイムに激怒しました。
あたしは学位保有者に出来るだけ早く直す様指示しました。
何時間経っても解決せず、理由を聞くと「別のpackageが見つからない」と言うのです。
「packageって何?」と聞くと、彼らはあたしが其れを知らない事に呆れました。
実は彼らが使っていたNPMの依存関係が、依存関係の依存関係の更に依存関係で使っていたleft-padが11行削除されたせいで、全体が崩壊したのでした。
あたしはJavaScriptに殆ど経験がなかったのに、10分で直せました。
結論として、学位のないあたし達は自分で物事を考え、創造的に解決します。
一方、学位保有者は教師から与えられた指示に従うだけです。
創造性も批判的思考もなく、「此のツールを使えば終わり」という考え方です。
其の結果、今のプログラマーの世代は実際にプログラミングが出来ず、只パーツを貼り合わせる事しか出来ないのです。
考え方の違い
正しいマインドセットは「此のプログラミング言語、此のターゲットプラットフォーム、此のグラフィックスAPIがある。どうやってこれらを使って画面にピクセルを描画しようか?」です。
所が今は「此のゲームエンジンが全プラットフォーム対応している。エディターをどう使いこなそうか、もっとツールを追加しようか?」となっています。
ウェブ開発者なら「此の言語、此のデータベース、此のHTTPサーバーがある。どうやってページにデータを表示しようか?」に対して「此のパッケージマネージャーと此のフレームワークがある。もっと依存関係を追加しようか?」です。
此れが正式な教育を受けていない人と、4年間の大学課程を修了した人の大きな違いです。
教育背景に関係なく経験豊富なプログラマーは、直ぐに前者が健全で後者が不健全だと分かります。
問題は「どうやってプログラミングするか」ではなく「此の言語/ツール/フレームワーク/エンジンをどう使うか」になってしまっています。
フレームワーク、エンジン、ツール、IDE、そして多くのプログラミング言語は、特定のワークフローを前提に設計されています。
違うワークフローを持っていると、其れらを使えません。
だからこそあたしはC言語、C++、PHP、Go言語、アセンブリ言語が得意に成りました。
C言語、C++、アセンブリ言語はエコシステムになろうとしない最後の一般的な言語です(只C++20以降、C++コミュニティも少し其の方向に進んでいる様です)。
PHPとGo言語はエコシステムがオプションです。
但し2012年以降にPHPを始めた人の多くは強く推しており、2017年以降の人はフレームワークやComposerなしでPHPを書ける事を知らない様です。
Go開発者はエコシステムから比較的自由ですが、Gin(Go言語のフレームワーク)やGorilla、Fiber(ルーター依存)が必要なGo求人が増えているのは懸念材料です。
エコシステム思考がGo言語にも押しつけられつつある様です。
個々の開発者ではなく、企業によってです。
求人サイトを見れば、PHPは「Laravel」「CakePHP」「Symfony」と同義、C++は「Unreal Engine」や「Qt」、Javaは「Spring Framework」、Javascriptは「Node.js」「React」等無数のフレームワーク、Pythonは「Django」と同義になっています。
C#も当初から「.NET Framework」と同義で、此の有害なトレンドを始めたのはC#だと言えるでしょう。
プログラミング言語以外でも、AWS、Cloudflare、Docker/Kubernetesが必要ないインフラ求人は殆どありません。
知識やスキルではなく、肥大化が評価されているのが明らかです。
C言語とアセンブリ言語だけが求人市場でエコシステムなしで生き残っていますが、何故かPythonと一緒に括られる事が多いです。
RustやZigの求人は、大規模なメインストリームフレームワークが出来るまで出てこないでしょう。
それらの言語自体が既にエコシステム的な性質を持っているのにです。
此の肥大化重視が、現在のプログラマーが不満を抱える原因です。
本来面白い事や実際の問題解決ではなく、不要な複雑さとツールとの戦いに時間を費やしているからです。
此のウェブサイト自体は「Little Beast」というPHPフレームワークで動いていますが、其れはあたしが此のサイト専用に自分で書いた物です。
だからこそ何をしているか、どう動いているかを完全に把握しており、決して肥大化していません。
だからこそあたしはLittle Beastを「反フレームワーク」と呼んでいます!
企業が逆の事をする理由
更に驚くべきは、求人市場が其れを奨励している点です。
長年の経験があるあたし達は大量に落とされ、学位保有者は大手企業に保母問題なく、しかも高い給料で採用されます。
馬鹿げていますが、純粋に企業側の視点では理解出来ます。
人事担当者は多くの場合プログラマーではなく、只のサラリーマンです。
管理者は部下が予測可能で置き換え可能である事を好みます。
数百人の候補者と同じスキルを持っていれば、半分の給料で同じスキルを持つ人に簡単に置き換えられます。
学校は従順さを教える場所です。
従順な社員は言われた事を疑問を持たずに実行し、快適ゾーンから出ず、別の領域や言語を試す事すらしません。
週末に既知のツールでプログラミングする事すら!
実は今勤めている会社で私を採用してくれた人事責任者はプログラマーでもあり、テックリードでもあります。
彼がいなければ、あたしは採用されていなかったでしょう!
振り返ると、あたしが働いた全ての会社で、人事担当者はプログラマーかシステム管理者でした。
普通のサラリーマンが人事だった場合は、直ぐに落とされ、面接1回で終わるか、招待すらされませんでした。
一方、独学のスキルを持つ人は長期的に最も価値がありますが、採用コストが高く、一度コードが本番に入ると置き換えが難しく、時には不可能です。
経営者は其れが嫌いです。
高額な給料を払い続けなければ成りませんが、同時に最も多くの収益をもたらすのも其の人だからです。
076スタジオでは違います。
スポンサーも投資家もおらず、あたしの給料を貯金する以外に収入源がない為、ゲームはあたし一人で作っています。
以上