ソフトウェア開発についての素質の問題について

あけましておめでとうございます。

 

「絶望的にプログラミングに向いていない人」問題が新年から話題になっていました。

 

お前は絶望的にプログラミングに向いてないから諦めて刺身にタンポポ乗せる仕事でもやってろ|古都こと|note

 

私がこれまで勤めてきた会社はわりとハイスペックな人が入社してくる感じなのでそこまで絶望的な人は来ません。たぶん外注さんとかにはヤバい人も居たのでしょうがそういう人は外注先のマネージャーに相談すればなんとかなります(これが外注さんに支払う人月単価と、その実担当者の給与との差がめちゃくちゃ大きくなる一つの要因なのですがそれは別の話)。

そんな中でもできる人できない人の差がでてくる世界はやっぱりあって、特に僕はUI関連の低レイヤのソフト開発を担当しているので、色とか座標というものの扱いに慣れているかというようなあたり、それからデザインに関するいろんなことについては、小さい頃からの物事への接し方や学習の仕方で歴然とした差がついており、やっぱり「こいつ向いてないよな」みたいな感じに思う人も多いです。

 

たとえば「(x,y,w,h)の長方形が2つあって重なっているかどうか判定する」みたいな場合に

 if ((x2 < x1 + w1) && (x1 < x2 + w2)) { /* Xについて判定したので次にYについても同様に判定する */ }

みたいな条件をすらすら書いたり読んだりできるかというような話。もちろん、そんなのはrect1.intersect(rect2)みたいな関数でなんとかなるのかもしれませんが、微妙に標準的な関数ではマッチしないような特殊なパターンでは自分である程度書ける実力が必要になります。もうちょっと捻って直線からの距離みたいなのが出てくることもあり、そういうところに行くと高校のとき数学が好きだったかどうかというところが大事になってきたりします。、円形や放射状に何かを配置するようなUIであれば三角関数を使う必要も出てくるでしょう。

 

ここまで挙げた話で「わかった数学大事なんだね」という話にとられちゃうとそれはそれで微妙で、隣のチームで音声関係をやっているところがあるのですが、そこでは数学も大事だけど、それに加えてちゃんと音についての知識があるかないか、アンプやイヤホンやスピーカーについて詳しいかどうかが求められたりしています。当然のことながらオーディオ機器や楽器に触ったことがない人と、学生時代からそういうものに親しんできた人の間では雲泥の差があるんだけど、そういう学生時代からの下積み経験は一般的な企業ではあまり考慮せず採用しておきながら「できる人材が増えない」とか言っているのを見ると、どういう状態になることを望んでいるのかわからなくなります。

 

 

僕らの会社にプログラミング未経験な人が入ってくるというのは、たとえて言えば、最近の音楽を作る制作集団に。これまで音楽を全然聴いてこなかったような人、音階が何なのかすら知らないような人が入ってくるというような感じでしょうか? 「ハイハットって何ですか?」っていうような。もちろんそんな人たちでも入社してから研修があって基礎は学べます。ただそれはプログラミングという部分の基礎なのであって、UIに必要な、色が何なのかとか座標がなんなのかというような知識ではないです。

 

しかもプログラミング未経験でソフトウェア業界に入ってきた人は(これはこれまでの印象ですが)、ソフトウェア開発の本筋と言われる「設計・コーディング・プログラミング言語」みたいなものには興味はあるけど、実際に設計に必要になる基本的な映像や音声に関する知識には興味がないような人が多いように思われます。そうするといくらCやC++を勉強しても、JavaScriptを勉強しても実際にモノを作る段になってモノに対する知識がなさすぎて設計できない、というような循環にハマってしまいます。それは、でも、ソフトウェア開発の素質がなかったわけではなく我々の世界には合ってなかったというだけの可能性があります。

 

こういうソフトウェア開発に必要な、プログラミング以外の知識はきっと多岐にわたっているのですが、分野別にそれを体系化して将来に残すような活動は、あまりできてません。さらにはいまの日本の組み込みソフトウェア業界はそんなことを会社に入ってからちゃんとできるほどの規模を維持できていないですし、(学生のうちに体系だったプログラムを若者が望んで受けてくれるほどには)将来を期待されてもないのです。このままでは、ジリ貧で終わってしまうか、どっかグローバルな存在に吸収されて日本からは(簡単なものを除いて)組み込みソフトを開発する力が失われてしまうのではないかと思っていますが、もしそれがみんなの望まない未来なのであれば、どうすればいいんでしょうね。せめて数式やベクトル・三角関数くらいはちゃんと万人が勉強できる状況を継続させるといいんですかね?