コンピューターサイエンスの学習は、職業エンジニアになることを阻害する
様々な考えがあるのは承知していますが、そもそも考えというものは全て様々ですので、その中の一つを表明する必要があります。
コンピューターサイエンスの学習が、駆け出しエンジニアの職業エンジニアになる過程で邪魔となるという話をいたします。邪魔をするということを具体的にいえば、職業エンジニアになるまでにかかる時間が長くなる、ということです。
なぜでしょうか。それはコンピューターサイエンスが楽しいものであるからです。楽しいというのとてもいいことですが、職業エンジニアが何故成立するのか、その原理と照らし合わせてみると、矛盾が生じてきます。矛盾には常に立ち向かう必要があります。
まずはプロフェッショナル、つまり職業としての活動というのは、どういう理由で成り立っているのか改めて考えてみる必要があります。
職業として成立するのは、お金を払ってでも他人に頼みたい面倒ごとがあるからです。幸運なことですが、プログラミングというのは、非常に面倒なので、他人にお金を払ってでもやって欲しい人が世の中に大量にいます。(ですから職業として成立しやすいわけです)反対に、サッカーそのものはお金を払ってでも他の人に頼みたいことではありませんので、職業とするのが非常に難しい領域といって差し支えないでしょう。お金を払ってでも他人に頼みたい面倒ごとを、引き受けることが仕事なのです。我々職業エンジニアの場合であれば、HTML と CSS を何千行も書いたり、保持すべき情報に合致したスキーマを設計してさらに保守する、ということは、普通は誰もやりたがらないのです。誰もやりたくないことを引き受ける。これが職業エンジニアの仕事なのです。
ですから、お金をもらわなくても自発的にやってしまう楽しいことというのは、頼みたい人があまりいないので、職業エンジニアに近づいてはいない、ということになります。コンピューターサイエンスの学習はこれに該当します。コンピューターサイエンスが楽しいものでないのであれば、フィーが発生もしないのに取り組んだりはしないでしょう。無料で自発的に行うことの大半は、面白いからやっているといっていいでしょう。プロサッカー選手でもないのにプロサッカー選手と同じく、サッカーをプレイするのは、それが楽しい行為だからです。これと同じことがコンピューターサイエンスにもいえます。これは非常に厳しい事実です。一般的に良いとされていた行為が、実は自分の甘えに起因していたかもしれないというのは、誰も認めたくはありません。
こういう反論が聞こえてきそうです。自分にとってコンピューターサイエンスの学習は辛いもので、楽しいものではない。だからこのケースには当てはまらないのではないか。より優秀なエンジニアになるために必要と聞いたので取り組んでいる。
確かに見慣れない用語を覚えたり、配列の中から該当する人間を早く探してくるアルゴリズムを構築したりと、全く楽しくなさそうですが(いやこれは私の個人的な見解ですがね)もう一度職業の原則に立ち返っていただきたいのです。コンピューターサイエンスの学習にお金を払ってくれる人はいるでしょうか?残念ながらいないのです。何度でも繰り返しますが、職業エンジニアになるためには、他人がやりたくない面倒事を対価を受け取って代理遂行することが絶対に必要なのです。コンピューターサイエンスの学習それ自体は、別に頼みたい面倒ごとではないのです。
ではなぜ楽しくもなく、お金をもらえないのに率先してやるのかといえば、おそらくは他人からの承認を求めているからです。学習という行為自体にその危険が常につきまとっています。この沼に足を絡めとられ、出てこられなくなった冒険者を私は何度も見てきました。何故そのピンチから彼らを救ってあげられなかったかといえば、そこまでこの沼が危険なものだとは自分でも思っていなかったらからです。以前は私も学習というのは無条件に肯定されるべきことで、率先して行うべきであると考えていました。しかし、学習という森に入ったまま、そこから出てこなかった人をそれなりの数見てきました。ちょうどブッタが苦行をした例の森のような感じです。カルマと向き合わずに、苦行に一生を絡めとられてしまい、森から出てくることがありません。それをみて私は考えを改めました。つまり、人生そのものと向き合わないといけないのです。生そのものに。職業エンジニアであれば仕事に向き合わないといけないのです。それ自体が修行であるべきなのです。生から切り離された特殊な環境で何かを突き詰めようとしても、方向が誤っています。方向が誤ったまま進めば、行き着く先も誤っています。森から出て、職業エンジニアとして何をする必要があるのか、もう一度考える必要があります。
学習という沼に沈む人は、元来真面目な人間であり、その資質は非常に良いものであることには間違いがありません。しかしその資質をどう使うかということはやはり検討が必要です。優れた資質をもって正しい道を進むことが必要です。
(コンピューターサイエンスの基礎知識が、クライアントの求めるエンジニアリングの下地になるという反論もありえるでしょう。しかし、下地にはならないことが既によく知られています。とくにあなたが実装するのは GAFA が使用する高耐性、高速な DB アルゴリズムの設計ではなく、多分商品一覧を綺麗に並べて、それをユーザーがクリックしたら Shopify の API を叩き、決済結果をユーザーにメールで通知することなのです。それにはコンピューターサイエンスは必要ありません。残念ながらあなたはこの手の仕事をあと五年はすることになります。それでもコンピューターサイエンスが下地に必要そうでしょうか?ピザ生地を作るのに、農学の知識は必要なさそうですが。)
Discussion
エンジニアではないですけど、コンピュータサイエンスが正義だと考えていたので、最後まで読んでしまいました。もう少しだけ森の中にいたいと思います。
基本的に、正しいものにすがりたいという考え方は、ある種の弱さから生まれるところがあるので、自分の目標にしっかり向き合い、進むべき道を自分で決める強さを持ってほしいと思います。
ありがとうございます。深いお言葉です...🙇🏻♂️
年収700万未満のSEと呼ばれる仕事を”職業エンジニア”と呼ぶならそうかもしれませんね。GAFAクラスやその他外資相手にするとCS(と英語)無いと門前払いされます。
自分で考え、自分がすべきことを、実行なさってください。
海外から発信されるIT技術、サービス、ライブラリーを使うだけの仕事で溢れたIT後進国の日本では確かに不要だとは思う。
日本が、世界が、というよりは、状況に合わせた取り組みをなさってください。