何故、学歴は重要なのか?(プログラミングと学歴)

プログラミング

こんにちは。九条です。

今回は学歴について、私の意見を述べます。

序論

学歴というと、学歴で実務能力が決まるわけではないので、社会に出てからは学歴だけあっても意味がないという意見をよく聞きます。

私も、学生時代はこれに賛成していました。

しかし、就職してから意見を大幅に改めるに至りました。

就職してからの実務経験を経て、私は学歴で実務能力が決まることは多々あると考えるようになりました。

もちろん、学歴が重要かどうかはその仕事の分野にもよります。この Web サイトは、第二のテーマとしてプログラミングを扱いますが、プログラマがまさに学歴が重要な分野です。

プログラミングに学歴が必要かどうかという点については、意見が大きく分かれています。

「プログラミング+学歴」で検索をかけると、プログラミングには学歴が必要無いという主張が目立ちます。

一方では、プログラマの業界は学歴社会なので、プログラマに成りたいなら、最低でも大学に行け!という意見もあります。

当然、私は後者の意見に賛成するのですが、何故、この意見に賛成するのかを説明します。

学歴が不要な業界

私は、「学歴で実務能力が決まることは多々ある」とは言いましたが、全ての業界でそれが成り立つとまでは考えていません。

例えば、本 Web サイトが第一のテーマとしている司法書士試験には学歴が必要ありません。また、私は司法書士の仕事はしていないため、はっきりとは言えないのですが、司法書士の実務にも学歴は必要無いと言われています。

(参考記事)司法書士試験に学歴は必要か?

新卒採用という不条理な仕組み

まず、学歴で実務能力が決まるかどうか以前の現実問題として、大卒以上でないとプログラマの求人はかなり限られてきます。

日本の企業社会には新卒採用という仕組みがあります。大学在学中に就職活動をすれば、実務能力が皆無でも、成長性を期待して採用して貰えるという仕組みです。

次の理由から、これは、かなり不条理に感じます。

  • 学業と就職活動を並行する必要が出てくるため、学業に支障が出る。
  • 大学を卒業しているならスキルは高いはずである。大卒をテコ入れして優遇する理由がない。
    むしろ、スキルの無い人を救済するような仕組みを政府は確立すべきである。
  • 新卒が優遇されることで、そうではない人の就職が相対的に不利になる。一度、フリーターのような非正規雇用の身分になると、正社員になりたくても這い上がるのが難しい。
  • 大学在学中に就職活動に失敗した場合は、その後の就職が極めて不利になる。就職活動のチャンスが巡ってくる時期がたまたま不景気だと、その後の職業生活が、本人に責任に帰することのできない事情で不利になる。(例えば、現在のコロナパンデミックがその例である。)
    これを回避するため、わざと留年するという生産性の無い馬鹿げた行為に及ぶ人もいる。

私の個人的な思想を言えば、そもそも新卒採用は廃止されるべきだと思います。

事実、日本以外の先進国に新卒採用という仕組みは存在しません。

ここで、私の経験談をお話しておきます。

新卒で面接を受けた会社で面接官と次のような会話をしました。


面接官「東京に就職しませんか?」

管理人「地元に愛着もありますし、貯金もしたいです。東京だと家賃が高いでしょう?」

面接官「社宅があります、安心してください。」


 

結局、私はこのお話を断って地元に就職したのですが、入社の直前になってとんでもないことが判明しました。

なんと、社宅は無かったのです。

この面接官は面接で嘘を吐いたのですが、余りに学生を舐めていると思いました。私は、地元に就職したので、直接的に被害を受けたわけではありませんが、我々は糞真面目に履歴書を書いているのに、ここで嘘を吐く面接官は許せない、と強い憤りを感じました。

ここで、私は内定を蹴ることも検討したのですが、この時期になると新卒採用は締め切られており、就職先がありません。

フリーターになる度胸もなかったので、泣く泣くこの会社に就職しました。しかし、その数年後に、結局、この面接官と折り合いが悪く、人間関係を理由に会社を辞めています。

私が法律を勉強しようと思った動機のひとつとしてこの体験を挙げることができます。この面接官に損害賠償を請求できないだろうか?と考えました。損害賠償が無理だとしても、この社会で生き残るには法律の知識が必要だと思いました。

こうしたことが起きてしまう原因は新卒採用という不条理な仕組みであり、私は新卒採用が我が国の諸悪の根源だと考えるに至りました。

今思えば、やはり勇気を出して内定を蹴っておくべきだったと思います。私は学生の時点でかなり高いプログラミングスキルを持っており、新卒という身分を捨てることになったとしても、採用してくれるところはあったはずです。

話が逸れました。

以上から、私は新卒採用という仕組みは社会にとって邪魔なものだと思うのですが、現実問題として現代の日本社会はそういう制度になっています。

現在、プログラマの求人のほとんどが、中途採用の場合は、実務経験があることを採用の条件にしています。しかし、新卒採用であれば、未経験者でも採用する企業が多いのです。

このことから言えることとして、プログラマに就職するならば、新卒で採用されるのが一番ハードルが低いということがあります。

そして、プログラマの新卒採用の求人は大卒以上を採用の条件としているところが多いのです。専門学校卒以上を採用の条件としている企業もありますが、学歴が低ければ低い程、選択肢は少なくなります。

学歴が高い人と低い人の違いは何か?

以上のお話は、新卒という身分のお話であり、実務能力の話ではありません。

ここからは、学歴で実務能力が決まると考える理由をお話します。

大学では4年生以上になると研究に着手するようになります。また、修士課程は勉強時間の大部分を研究に充てることになります。

研究というと、未経験者にはイメージが湧きにくいかもしれませんが、いわゆる「理系」の研究は次の手順で進みます。

  • アイディアを考える。
  • アイディアに関連した既存の論文を読み漁る。
  • 実験の目的を設定する。
  • 必要であれば、実験のための機材やソフトウェアを開発する。
  • 実験を行う。
  • 実験の結果を元に考察をする。
  • 以上を論文にまとめる。
  • 論文を学会で発表する。

ここで重要なのが、研究は次の文献や学識経験に基づいて行うということです。

  • 学校で習ったこと
  • 他の学者や学生が発表した論文
  • 実務で成功した手法を記載した専門書
  • (ソフトウェアを開発するのであれば)ベンダの公式のドキュメント

言い替えると、研究は科学的に進めるということです。

これらに基づかない研究、非科学的なものは、取るに足らないものとして扱われます。

学歴が高い人と低い人の決定的な違いは、この経験があるかどうかです。

何故、プログラミングに学歴は重要なのか?

プログラミングは科学に基づいて行うべき分野です。

先ほどもの述べた、次のような文献や学識経験に基づいて行うことで成果を出せる分野です。

  • 学校で習ったこと
  • 他の学者や学生が発表した論文
  • 実務で成功した手法を記載した専門書
  • (ソフトウェアを開発するのであれば)ベンダの公式のドキュメント

学歴が高い人は、これらの正しさを知っているため、これらを拠り所にして、プログラミングの実務でも科学的に正しい方法で進めることができます。

私は、実務経験がゼロの状態で、かなり難易度の高いプロジェクトを任されたことがあるのですが、これらを拠り所に仕事を進めたところ、プロジェクトを大成功させることができました。

プログラミングでは実務経験が重要と言われますが、これは嘘です。科学的に正しい方法を勉強しているかどうかと、それを実践できるかどうかで勝負が決まります。

※実務経験の重要性を強弁しようとする輩は、年功序列によって何らかの利益を得ており、年功序列を正当化したいがための主張であるというのが私の推測です。

周囲の人から「才能がある。」と言われることがあったのですが、才能と呼ばれているものの正体は、科学的に正しいことができているかどうかであり、その背景には学歴があります。私に言わせれば「才能がある。」という発言は滑稽でしかありません。

これで恐ろしいと思ったのは、学歴が低い人は、学歴が高いからこそをできることを、才能や魔法のようなものだと思い込んでしまう可能性があるということです。

※ただ、学歴が低くともこれができる人がいる可能性を全面的に否定することはしませんし、学歴が高くともできない人もいる可能性もあります。ここから先は、科学的思考ができる人、科学的思考ができない人、という言い方をすることにします。

では、科学的思考ができない人は何を拠り所にするのでしょうか?それは次のようなものです。

  • インターネットの情報の鵜呑み
  • 組織に根付いた非科学的な習慣
  • 先輩や上司の発言
  • 常識

インターネットの情報の鵜呑みとは、誰が書いたのかも分からない、もしかしたら素人が書いている可能性もあるプログラムをコピペした物をつぎはぎして納品してしまうことです。ある場面で正しいとしてもそれを別の場面にそのまま持って行ったとして正しいという保証はありません。当然、そんなものは動作しませんし、動作したとしても偶然でしかありません。

私もインターネット上のサンプルコードを参考にはしますが、必ず公式のドキュメントで裏付けを取ります。

組織に根付いた非科学的な習慣とは、「みんながやっていること」が科学的に間違っているパターンです。

この話は、プログラミングの専門的な話題なので興味がない方は飛ばしてください。


例えば、私の職場では変数名の先頭に glb_ と付ける習慣がありました。この名前の付け方は、C++ のもので、グローバル変数を変数名からすぐにわかるようにするものです。

しかし、私の職場では、明らかにグローバル変数で無いものに glb_ と付けられていたのです。これは明らかに非科学的な習慣です。これでは、プログラムを読む人を混乱させてしまいます。

そして、私の職場では、ほとんどの人が疑うことなく、この習慣に従っていました。

こういうことは C++ のきちんとした専門書を読んでいれば分かることであり、科学的思考ができる人は専門書を読んでいますので、組織に根付いた非科学的な習慣に流されなくなります。


 

先輩や上司の発言とは、上記のような科学的に間違ったことを、正しいものとして先輩や上司が発言してしまうことです。当然ながら先輩や上司の方が立場が強いため、面と向かって否定しにくくなりますが、科学的思考ができる人は、この場合でも断固とした対応をすることができます。

常識についてですが、科学では常識が正しいことの方が稀であることが多いです。例えば、納期に間に合いそうにない場合、人員を追加すれば間に合う可能性が出てくるという考え方は常識的ではありますが、これが間違っていることは「人月の神話」という専門書に記載されています。

科学的思考ができない人によくあることですが、ある手法があったとき、それに対してきちんとした理解が無いまま、批判してしまうということがあります。

例えば、リファクタリングは非常に誤解のある手法です。

リファクタリングは、「既に動いているプログラムを破壊するリスクの非常に高い手法であり、実務上での実用性は無い。」という意見が出てくることがあります。

実際にはリファクタリングはテスト駆動開発と並行して進めるものであり、安全を確保した上で行うものです。また、少しずつ段階を踏みながら既存のプログラムを変更する手法であり、プログラムを全く別のものに書き直すわけではありません。

これでは、リファクタリングの考案者(Martin Fowler 先生)が言ってもいないことを、言ったとでっちあげて批判していることになり、批判ではなく誹謗中傷になってしまいます。

これは、既に上げた「実務で成功した手法を記載した専門書」(Martin Fowler 先生の著書)を読めば必ず避けることができます。

極端な場合、科学的思考ができない人は、「学校で習ったこと」「他の学者や学生が発表した論文」「実務で成功した手法を記載した専門書」「ベンダの公式のドキュメント」を実務では役に立たない絵空事だと言い切ることがあります。これは科学を否定しようとしているのですから、実務では役に立たないという主張の方がよっぽど絵空事です。

こうした人たちは、科学や現実から目を背けて、オカルトを現実だと主張するのですから滑稽でしかありませんが、実際にそういう方は職場にいて、自覚無しに周囲の足を引っ張ります。

こうした非科学的なやり方が招く結果は、長時間残業、納期遅れ、品質の低い製品の納品、職業倫理の冒涜、業界全体の信用の低下であり、破滅的でしかありません。

アメリカのやり方

プログラミングに関する技術の多くが、アメリカで開発されて、日本はこの業界では、外国に大きく後れを取っています。

実は、アメリカは日本よりもはるかに学歴社会です。

アメリカではプログラマは修士以上ではないと採用しないと言われています。

プログラミングの実務に学歴が重要な役割を果たすことは明白であり、日本もこのやり方に従うことが後れを取り戻すために必要な事ではないかと思います。

最後に

私は、次の事柄を拠り所にしてプログラミングをすべきだと述べました。

  • 学校で習ったこと
  • 他の学者や学生が発表した論文
  • 実務で成功した手法を記載した専門書
  • (ソフトウェアを開発するのであれば)ベンダの公式のドキュメント

学歴と直接関係が無いので言及を避けましたが、これらとは別に「資格試験で勉強すること」も重要だと考えています。これについては次の記事で考察しています。

(参考記事)プログラミング脱初心者(上達)のためにすべき3つのこと

学歴が無くてもプログラマになれるという主張はあり、そういう主張を全面的に否定することはできません。確かに、学歴が無くても科学的思考ができる人は存在します。

ですが、それを持たずにプログラミングの業界に入ることは、丸腰、あるいはヒノキの棒切れ1本で戦場に行くようなものです。

科学的思考ができない人がプログラマになれたとしても、早々に業界から退場するリスクがあると思います。

なので、学歴を伴わずにプログラミングの業界に就職する人は、本記事で挙げたような科学的思考が自分にできるかどうかをよく考えた方が良いでしょう。


⇐管理人の Twitter を Follow したい方はこちら。


コメント

タイトルとURLをコピーしました