文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

「独学でプログラミングを勉強しても実務に通用しにくい理由」を読んだ感想

なんか難しく考え過ぎなんじゃないかな〜、と思ったり、思わなかったり。


f:id:treeapps:20170104173704p:plain

こちらの記事を読みました。

主さんの意見としては以下のようですね。
1.独学では妥協をいくらでもできる
2.興味の範囲内のことしかやらない。
3.自分の実力に合わせた実装しかしなくなる

この意見への批判とかではないですが、私の見解では大分異なります。

treeが思う独学が実務に通用しにくい理由


通用しますよ。余裕で。

これでは話がこれで終わってしまうので、もう少し詳しく書きます。

何故通用するのか

皆どうやってプログラムを学んだのか

日本は他の教育先進国と違ってITはゴミ扱いされ、義務教育の間は実践で使えるレベルのIT教育は行われません。従ってITの専門学校で学ぶか独学以外に習得する道がありません。

そうなんです。結局大部分の人間は独学で学んでいるのです。だから通用します。

現場の人間はそんなに有能なのか

以外な事に、現場の人間にもゴミのような産廃プログラムを量産するクズ野郎のような人(自分とか)が沢山います。学生さんが想像しているような凄いコードは滅多にお目にかかれません。それどころか、


このコード書いたクソ野郎!絶対に◯してやる!

と怒り狂う程のゴミコードだらけです。

私の感覚では、派遣社員やフリーランスで、


俺はすぐ次の職場に移るから後の事なんて知らね〜〜〜〜wwww

動きゃいいんだよ動けばwwwwww

という事を口に出して言ってしまう程のゴミクズがそういう糞コードを量産する場合がほとんどです。

ではプログラム以外で通用しにくい部分はあるか?

あります
私が新人のプログラマーを見てていつも思うことがあります。
それは、

チームで開発した経験が無い・浅い

事です。
幸い私が属しているベンチャー企業ではかなり優秀な新人が来ます。昔勤めていた業務系SI企業の7〜8年戦士レベルの新人がきます。

しかし、彼らは「複数人、所謂チームでの開発経験が皆無である」ということが言えます。
チームで開発すると、当然人間と人間のやりとりが発生します。そこには人間の感情や複雑な事情が絡んできます。


おいやるお!!てめえのコードはぬるぽだらけだぞ!!!

てめえの頭はハッピーセットかよ!!!!


え?ヌルチェックとかって呼び元でやるんじゃないんですか?


は?いつそんな話したよ!?

お前なんで皆が困る事すんの!?お前だけが仕事してるんじゃないんだぞ!?

みたいなやりとりが発生する事もしばしば。
(ツールでそういう事が起きないようにする等はまた別の話でお願いします)
自分以外が自分のコードを参照する事を想定したプログラムや設計ができない場合がほとんどです。なので、いざコードを書かせても全然力を発揮できていません。

いつもの調子でコードを書いていると、他人にとってはそれが不快になっている事があります。例えば、スケジュールの前半はいつもだらだらしてしまうけど、終盤になると急に残業したり徹夜したり本気出し始めるような人がいると、周りは不快になり、そのうち喧嘩になります。周りの人も人間ですから、自分が不快に思われたり、他人を不快に思ったりする訳です。


新人の方はこういったチーム開発で起きる、人間と人間との間を調整する能力が皆無なのです。例えば「要件がこうだから、こういう設計にしないとダメだな。すると◯◯さんと◯◯さんにこういう方向で設計してもらわないとダメだな」といった、人間と人間の間の情報等の共有や調整する能力がありません。プログラミングは仕様等の調整後に行われるので、そもそもプログラミングの工程に辿り着かなかったり、せっかく書いたコードが認識違いによって無駄になってしまったりして、「独学プログラミングってやっぱ通用しないのかなあ・・・」と思ってしまうかもしれません。本当は彼らのコードは十分現場で通用してるのです。

しかし、社員ですら調整力を持った人は少ないので、難易度が高く、ハードルが高いスキルであるといえます。つまり調整能力を学生時代に培う事ができれば、大抵の企業に余裕で採用されると思われます。

こういうスキルは世間ではコミュニケーションスキルとかいう曖昧であやふやで脆弱な、人によって意味合いが変わるような言葉で片付けられてしまう事がほとんどです。(私はコミュニケーション能力という言葉が死ぬほど嫌い)しかし、「学生時代にコミュニケーション能力を高めるため努力しました!」なんて言われても「はあ?」って思います。「君の言ってるコミュニケーションって一体何?ウェーイwwwな人の事?」と。更に「具体的にこういう人達とこういう事でこういう調整をしたりした、と言えてない時点で君コミュニケーション能力無くない?」と言われてしまうかもしれません。

以上のことから、プログラミングの勉強だけでなく、チームでの開発を学生時代に経験できると最高だと思います。チーム開発を経験する事で、人間同士の感情等がぶつかる事で嫌な事や困る事を沢山経験できて、それを乗り越える能力を身につける事ができるのが理想ですね。

雑感

独学プログラミングは十分通用する。通用しないのはチーム開発等の人間と人間の間で発生する物事を調整する能力。

極端な話、趣味プログラミングだって十分通用すると思ってます。私は。