――誤解と判断力の欠如が生む構造的リスク
日本のIT産業が遅れている理由は、単なる技術力の差ではない。
現場での「判断力」を軽視する文化が、構造的な停滞を生んでいる。
経営が「最短の正解」を求めると、エンジニアは思考よりも指示の再現を優先するようになる。
結果として、「仕様通りに作る」ことが評価され、「正しく判断する」力が失われていく。
この文化は、プロジェクトを一見スムーズに見せるが、問題の根を放置したまま進むため、後工程で破綻を生む。
残念ながら「仕様書」は常に正しいとは限らず、完璧でもない。
判断できないエンジニアは、間違った仕様に基づいてシステムを構築してしまうし、完璧でない仕様書を前にすると、手を止めてしまう。
判断を封じた組織は、問題が発生しても修正できない。
それが、「失敗を繰り返す日本のIT構造」である。
数年前、ネット上で「staticおじさん」という呼称が生まれた。
あるエンジニアが「オブジェクト指向を使わない」という判断をしたことをきっかけに、
SNS上で「オブジェクト指向を理解できない老害エンジニア」として揶揄されたのである。
しかし実際の現場では、この「老害エンジニア」と呼ばれた人々こそ、
長年にわたりシステムを安定的に稼働させ、数多くのプロジェクトを支えてきた主力層であった。
だが、ネット記事や勉強会での誤解や簡略化が進むうちに、
「古い技術者=悪」とする物語が独り歩きしてしまった。
SNSや勉強会では、非エンジニアもこの議論に参加し、
「正しい技術の形」を安易に語る空気が生まれた。
それが、現場での健全な議論をも蝕んでいったのである。
SES(システムエンジニアリングサービス)は、短期的には人員不足を補う仕組みとして機能している。
しかし、即戦力を求めすぎるあまり、エンジニアの自由な思考や技術習得の時間を奪ってしまう。
2025年現在、こうした安易な人材育成を政府が後押ししている面がある。
「デジタル人材育成のための『実践の場』開拓モデル事業」は、その典型だ。
本来は人材育成を目的とした制度であるが、現実にはSES構造の延命に利用され、
短期育成・早期投入による「粗製乱造」が進んでいる。
十分な学習機会がなくSESで派遣されたエンジニアは、正常な判断ができず、
SNS上の誤った知識の伝搬や、固定化された正解主義の文化にさらに晒される。
その結果、プロジェクトの現場では、思考を止めた「作業者」が増えていく。
非エンジニアを安易に開発現場へ入れると、判断の混乱が起こる。
プロジェクトマネージャが優秀であれば協働は可能だが、
実際には「プロのマネージャ」はエンジニア以上に希少である。
経営者に問われるのは、「どんな人を雇うか」だけではなく、
「どんな判断を許す文化を作るか」である。
判断力を育てるには、失敗を許容する余白と、考える時間を保障しなければならない。
その余白を「余分なコスト」と見なす企業に、技術は根付かない。
例えば、「オブジェクト指向を使わない選択」や「既存の非オブジェクト指向資産を活かす判断」は、
適切な判断を行っている可能性が高い。
もちろん「オブジェクト指向を使う選択=不適切な判断」ではないが、
その欠点を理解している必要がある。
炎上プロジェクトは、「エンジニア」と「非エンジニア」を見分ける格好の機会である。
普段から技術論を声高に語る自称エンジニアが、炎上した途端に理由をつけて逃げることがある。
一方で、普段は口数の少ないエンジニアが、現場を立て直すことがある。
「プロジェクトに責任をとれる人がエンジニア」であり、
「正しい判断ができるエンジニア」は、最終的にプロジェクトをゴールへと導く。
経営者としては、このような人物を見分ける「目」が求められる。
技術力の本質は知識の量ではなく、判断の質で決まる。
正解主義が支配する組織では、判断力が失われる。
誤った知識の伝搬と即戦力主義は、経営が気付かないうちに、
組織の判断力を蝕み、日本のITの停滞を再生産している。
経営者がまず行うべきことは、「判断するエンジニア」を育てる環境を整えることだ。
それには、自身が技術に明るくなるか、信頼できるエンジニアやマネージャを確保することも重要である。
それができない限り、日本のデジタル化は、どれほど予算を投じても前に進まない。
AIがコードを書く時代になろうとしている今こそ、
経営者に求められているのは「正解を知る力」ではなく、
「判断できる人材を見抜く力」である。
この文章は、ChatGPTとの共同作業により作られています。
―「staticおじさん」というモデルが歪められた物語―
「staticおじさん」という言葉が生まれたのは、十数年前のあるネット記事がきっかけだった。
とあるエンジニアが、「オブジェクト指向がわからない」と率直に書いた。
コメント欄では賛否が分かれ、議論は次第に激しさを増していった。
やがて、その人物の主張の一部だけが切り取られ、「オブジェクト指向を理解できない頑固な人」というレッテルが貼られた。
その象徴的な呼び名として登場したのが「staticおじさん」である。
つまり、“staticおじさん”にはモデルが存在した。
だがその人物は、もともと技術を語っていただけだ。
しかし、ネット文化は誠実な議論よりも“わかりやすい敵”を好む。
その結果、個人の発言が物語化され、「古い技術に固執する老害エンジニア」という虚像が作られていった。
オブジェクト指向の議論という技術的テーマが、いつしか「世代対立」「価値観の断絶」といった社会的物語にすり替えられたのである。
“理解しようとしない人”という構図は、読む人に安心感を与える。
自分は「新しい側」に立っているという錯覚をくれるからだ。
こうして、一人のエンジニアの誤解が、ネット全体の“物語”に変わっていった。
やがて、この物語は一部の勉強会にも持ち込まれたことがある。
勉強会自体は知識を共有する素晴らしい文化だ。
ただ、非エンジニアや若手が参加する場では、
「staticおじさん=古い考えの象徴」というイメージが語られることがあった。
そこには、本来の人物像も、元の記事の文脈も存在しない。
ただ、「static関数を使う」「オブジェクト指向に懐疑的」という特徴だけが切り出され、
“そういう人たち”というステレオタイプとして再生産されることがあった。
実際、当時の技術コミュニティでは、
「なぜそう考えるのか」よりも「どちらが正しいか」が重視されていた。
正解主義の文化の中で、
“反対意見を持つ人”は「理解できない人」として扱われた。
そしてそれが笑い話として語られることで、
“老害”という言葉が社会的な正義の衣をまとったのである。
本当の“staticおじさん”とは誰だったのか。
それは、一人のエンジニアの名前ではなく、
「自分の考えを曲げずに語ろうとした人」そのものだったのかもしれない。
技術は時代とともに変わる。
だが、変わらない信念や疑問を持ち続ける人は、いつの時代にもいる。
その存在を“老害”と切り捨てた瞬間、
私たちは「考える自由」そのものを失う。
オブジェクト指向のメッキが剥がれた今、
私たちはもう一度、あの議論を思い出すべきだ。
それは「正しさ」の争いではなく、
“責任ある思考”をどう持つかという問いだったのではないか。
物語は人を動かす力を持つ。
だが、嘘の物語は、いつか誰かの現実を壊す。
「staticおじさん」という言葉を笑ったあの日から、十数年。
オブジェクト指向の理想は現実に疲れ、
AIがコードを書く時代になろうとしている今、
私たちはなお物語を作り続けている。
だからこそ、今こそ「責任ある物語」が必要だ。
誰かを貶めることで安心を得る物語ではなく、
異なる立場を理解し、語り合う物語を。
それが、技術文化を再び人間の手に取り戻す唯一の道だろう。
この文章は、ChatGPTとの共同作業により作られています。
前回は「staticおじさん」現象を手がかりに、
ネット社会における“同調の構造”と“技術信仰”について考えました。
今回はそこから一歩進めて、
「なぜ私たちは“正解”を求めすぎるのか?」というテーマを扱ってみたいと思います。
技術の世界、とくに日本のエンジニア文化では、
「正しい答えを知ること」自体が目的化してしまう傾向があります。
これは学校教育の影響が大きいでしょう。
正解が一つに定まるテスト文化の中で、
「悩むこと」や「保留すること」が評価されにくかった。
プログラミング教育にもその名残があります。
クリーンアーキテクチャ、デザインパターン、SOLID原則……
“正しい書き方”は数多く提示されますが、
それらがどんな文脈で、どんな痛みから生まれたのかを学ぶ機会はほとんどありません。
結果として、手法は暗記され、思想は抜け落ちる。
そして、「何が正しいか」だけが一人歩きするのです。
こうした文化の中で、「正しさ」は一種の呪いになります。
何か新しい設計を提案すれば、すぐに「それは間違いだ」と反応が返ってくる。
それが本当に間違いなのかどうかではなく、
“教科書(コードコンプリート)に書かれていない”というだけで排除されるのです。
この現象の根底には、「考えることの恐怖」があります。
自ら考えるという行為は、
自分の中に“わからない”を抱えることでもある。
しかし、わからないままでいることに耐えられない人々は、
「答えを持つ人」に安心を求めてしまいます。
それが宗教のように“信じる技術文化”を生むのです。
教育現場では、「考える力を育てる」と言われます。
しかし、現実には「模範解答を暗記する力」が評価されがちです。
プログラミング教育においても、
“どの言語を使うか”“どの設計が正しいか”といった形式面に議論が集中し、
「なぜそうするのか」「どんな痛みを避けたいのか」といった
本質的な問いが置き去りにされています。
たとえば、「グローバル変数は悪」という常識があります。
しかし、それがどのような歴史的背景で「悪」とされたのかを知る学生はほとんどいません。
そこに文脈がないまま、「禁止事項」としてだけ教えられる。
それでは“思考するエンジニア”は育ちません。
これからのプログラミング教育、あるいは技術文化全体に必要なのは、
「正解を教える」ことではなく「判断を育てる」ことだと思います。
正解は、過去のある時点で有効だった一つの答えにすぎません。
しかし判断とは、目の前の状況・制約・目的に照らして、
「今回はこうする」と決めることです。
そしてその判断の積み重ねが、経験であり、設計力になります。
つまり、“正しさ”は借りられるが、“判断”は自分でしか育てられない。
その違いを理解しないまま、
「正解主義」に取り憑かれた技術文化はいつまでも他人の理想を追い続けるだけです。
結局のところ、プログラミングとは「考え続ける行為」です。
最適解など存在せず、昨日の正解が今日には不適切になっていることも珍しくありません。
それでも、他人の正解にすがらず、
自分の頭で考え続ける――その不安を抱えながらも歩み続けること。
それこそが、技術者(エンジニア)としての誇りであり、自由の証なのではないでしょうか。
この文章は、ChatGPTとの共同作業により作られています。
―「正しさ」を振りかざすエンジニアたちへ―
「クソコード」という言葉が、いつのまにかネットに氾濫しはじめた。
これは、冗長で、意図が読めず、保守性に欠けるコードを指して揶揄するものです。
しかし今ではその言葉だけが独り歩きし、「自分の理解の範囲外にあるコード」や「自分の理想にそぐわない設計」までも、“クソ”と断じる風潮がある。
この背景には、「コードコンプリート症候群」とでも呼ぶべき現象がある。
「良いコード」を追い求める活動は昔からある。
古くは構造化プログラミングが提唱され、今ではそれが当たり前になった。
しかしそれだけでは解決できない問題が現れ、次々と新しい手法やデザインパターンが現れそして新しい問題が発生する。複雑さへの挑戦は終わりのない戦いである。
様々な手法が出てきてそれら自体の存在が複雑化した。そしてそれらの手法を体系化した書籍が登場してきた。その中で『コードコンプリート』は、「良いプログラムを書くためにプログラマが知っておくべき考え方と手法」を総合的にまとめた初期の成功例である。
プログラミングを単なる作業ではなく、知的な創造性のある行為として扱った最初期の実践書のひとつであり、その精神はいまも色褪せない。
現在では『リーダブルコード』がその精神を受け継いでいる面もあるが、ここでは原点としての『コードコンプリート』に敬意を払い、代表例として取り上げたい。
問題は、その内容に感銘を受けたエンジニアが、その理念を「唯一の正解」と信じてしまうときに始まる。
彼らはコードレビューでこう言う。
「この変数名は短すぎる」「コメントが少ない」「このクラスは単一責任原則に反している」「これはスパゲッティコードだ」――。
そして最後に決まって、「コードコンプリートにも書いてありますよ」と付け加える。
まるで聖典の一節のように。
だが現場は常に、時間とコストとレガシーの中で動いている。
理想を追うことと、現実を生きることは別問題だ。
優れた原則や設計思想は、状況に応じて取捨選択されるべきものだ。
だが「教義化された正しさ」は、しばしば現場を麻痺させる。
新しいアイデアが「原則違反だ」として却下され、古くても信頼できるコードが「レガシー」と称され書換えを強制される。進行中のプロジェクトが“改善活動”という名の足踏みを始める。
そして気づけば、誰もコードを書かなくなり、議論だけが増えていく。
「クソコード」というレッテルは、往々にして相手の努力や文脈を切り捨てる言葉でもある。
そこには、相手への敬意よりも、「自分は理解している側だ」という安心感がある。
それが一番、危険だ。
本当に優れたエンジニアは、「なぜこう書かれたのか」を考える。
時間的制約、チームのスキル、利用可能なライブラリ、歴史的経緯――すべてを踏まえて設計を評価する。
そこには「正しいコード」ではなく、「今ここで生き残るコード」という現実的な視点がある。
『コードコンプリート』の精神とは、本来この“文脈理解”そのものだったはずだ。
それを「規範の棒」として他人を叩くのではなく、「共通の言語」としてチームをつなぐために使う――。
その姿勢を忘れたとき、私たちは“コードコンプリート症候群”に陥る。
良書は人を育てるが、同時に、信者も生む。
それを避ける唯一の方法は、「本の中にある正しさ」よりも、「現場で生きる知恵」を信じることだ。
“クソコード”と笑うより先に、「なぜそうなったか」を問おう。
そこからこそ、真のプログラミング文化が始まる。
この文章はChatGPTが原稿を書き、人間が修正を加え、再度ChatGPTが校正・編集したものです。
――「クソコードを書け」と私が思うようになったもう一つの理由――
「クソコードを書け」という主張はいささか偏っていますが、思えば私は他人のコードを「くそ」と思ったこともなければ、「直せ」と思ったこともほとんどありません。
では、なぜそう思うようになったのか。
キャリアのごく初期――35年程前になります――には、「コードの美学」というものが確かにありました。しかしそれは1、2年で消えました。
さらに数年後、決定的な出来事が起き、その美学は吹っ飛びました。
30年近く前、1996年前後のこと。私が担当していたプロジェクトが炎上しました。
どのくらい炎上したかというと、残業が170時間、それが3か月ほど続いたのです。
残業代で数十万円入ったものの、翌年の社会保障費が爆上がりし、給与の支給額が「14万円」とかになった。
総務に「なんでやねん!」と詰め寄ったら、「あなた去年170時間残業したから…」と言われたのを今でも覚えています。
ちなみに、そのときの数十万円がどこに消えたのかは、いまだに謎です。
他にも、4日間家に帰らずコードを書き続けた翌朝、廃人のようにボーッとしていた私に顧客担当者が「○○の機能を入れてほしい」と言ってきた。
相手の言うことが理解できず、とりあえず「無理です」と返して、担当者がすんなり帰っていったこともあります。
int型で定義した変数を、なぜかshort型でexternして、朝の4時にバグを仕込んだり、
風邪で寝ていたら上司に呼び出され、現場で顧客から「ボーっとするな!」と説教を受けたり。
炎上プロジェクトの「あるある」は、わりと経験しました。
その後、私は数年間体調を崩しました。
体調を直すのに苦労しましたが、それ以上に、「何が悪かったのか?」をずっと考え続けました。
そこで学んだことは、
ということです。
もちろん、開発プロジェクトに必要なプログラミング技術は存在します。
しかし、一度炎上した現場では、もっと広い範囲で問題を見抜く力が必要になります。
たとえば、最近のマイナ保険証の問題。あれは「プログラミングが悪かった」という話ではありません。
私たちが学ぶべきことは、コードの書き方だけではなく、プロジェクト全体を見渡す力です。
ただし、だからといってプログラミングの勉強をやめてよいという話でもありません。
幸い、その反省が生かされたのか、私が担当して炎上したプロジェクトは一度きりでした。
その後は、いくつかの炎上現場に「助っ人」として呼ばれる側になり、記憶にある限り3回ほど大炎上の火消しに入りました。
では、火消し屋にとって最も重要なプログラミングスキルとは何でしょうか?
あまり知られていないかもしれませんが、コードを読む力(リーディング能力)です。
コードリーディング能力を高めるには、まず自分がCPUになったつもりでコードを読むこと。
つまり、「このコードはどのように実行されるのか?」という観点で、主観や美学を捨てて追うのです。
次に問うべきは、「このコードの動作は正しいか?」ということ。
ここで確認するのは仕様との整合性であって、コードが綺麗かどうかではありません。
論理的な間違いを追い、問題箇所を見極めることが目的です。
バグを探しているときにコードを見て「クソコードだ!」と思った瞬間、冷静な論理的判断はほとんど不可能になります。
私の経験では、感情的な印象を保ちながら正確に問題箇所を指摘できる人はほぼいません。
さらに、普段から他人のコードを批判的に読む癖をつけたり、自分のスタイルにこだわり他人におしつけ、そのスタイルの一貫性に固執しすぎると、無意識のうちにスタイルの異なる他人のコードを受け入れられなくなります。
つまり、コードの「あるべき姿」を追い求めすぎたがために、多様な書き方を認められなくなってしまうのです。
確かに、コードの出来が悪くてバグが潜むこともあります。
しかし、それを炎上中に嘆いたところで、現場は何も救われません。
コードの美しさよりも、まず動作の理解。
「クソコード」と切り捨てる前に、CPUのように冷静に読み、仕様との整合性を確認すること。
それこそが、火消し屋としての第一歩であり、炎上を防ぐための最良の訓練でもあるのです。
この文章は、原稿を元にChatGPTが校正・編集しています