【就職活動】社会人としてバリバリコードを書いたり勉強会で喋ったりして思ったこと


5aeea1845616c563c675a7c6424b9d21_s

大学の授業を改めたい
これが一番感じた事でした。

1年間がむしゃらに働いて新人ながら社内で同期に向けてJavaのお作法やサーブレットの作り方について勉強会を催す機会をもらったり、自分自身はじめて仕事としてコードを書いて先輩達にボロ雑巾のようになるまでがっちり絞られたりする中で「日本の大学のプログラミングの授業ってイケてないな」と感じました。あくまで社会人経験が1年程度のペーペーの戯言なので、賛否両論あるかと思いますが今だからこそ感じる事もあると思うので備忘録を兼ねてブログに記事を残したいなと思います。


僕とプログラミング
元々11歳から14歳の時にアメリカの中学に通っていた関係で、そこでHTMLおよびJavaScriptを用いたホームページのデザインを行う授業を受講しプログラミング(と、言うよりは当時はものづくり)に興味を持ちました。他には教師が作った特殊な言語を用いて”industrial technique”(日本で言う技術の授業)と言う授業ではエンジン制御のプログラムを書いて実際に車擬きを動かしたりして遊んだのが僕がプログラミングに興味を持ったキッカケでした。

大学に入ってからは情報系が強い大学だったので、プログラミングを学びたいと言う強い意志のもと、ホームページ作成をより極めたいと言う想いから入学当初はphpをゴリゴリ書いていました。しかし入学から3ヶ月アカペラにのめり込んでしまいプログラミングの勉強はきっぱりと辞め気付くと音楽の勉強をしていました。笑
phpは主にサークルでアンケート調査を実施したり、サークル員の名簿を作成するときに書かせてもらえていたので、なんだかんだそこで基礎になる部分はしっかりと勉強出来たのかなと思っております。

その後は就活期にphperと呼ばれ人権を剥奪されIT企業で働く事を否定され心が折れたので、新たにrubyの勉強を開始。当初はrailsを用いて何かwebサービスを作ろうと画策していたのですが、rubyでwebサービスを作ったのは社会人になってからでした。学生の時は卒業論文(小学校での英語教育の在り方について書きました)を書く際にデータの収集があまりにも面倒くさかったのでnokogiriを応用してスクレイピングの技術を用いて、自動的にインターネット上から必要なデータを収集しエクセル上にまとめてくれる便利なコードを書いたりしていました。主にrubyはデータ収集/解析に用いて自分が楽をするための道具になっていたような気がします。

社会人になってからは職場がJava天国なのでJavaJavaしています。


何故大学での授業がイケてないのか?
一応僕は大学で「Java」「C」「JavaScript」の授業を履修しました。
しかし今思うとどれも非常にイケて無い授業だったなと思います。

大学での授業は全て「技術ベース」なのです。
これって本当にコードを書く事を仕事にして行く上でイケて無いと思うんです。


じゃあ何故タイムマシンを作るのか?
人はタイムマシンを作る時は「過去に戻りたいから」または「未来へ行きたいから」タイムマシンを作るのだと思います。更にもっと言ってしまうと「過去に戻る事で自分がみた事の無い事実を知りたいから」または「未来に行くことでまだ見ぬ、もしくは今後まず見る事ができないであろう未来について知りたいから」タイムマシンを作るのだと思います。そうすると今度は「知る事で変えたい」とか色々「知ったから○○したい」と言う”WANT”が出てくるのだと思いますが…。

とりあえず「今自分が生きている時間とは異なる時間での情報を知りたいから」タイムマシンって欲しいんですよね。それで「自分自身が過去や未来へタイムスリップする」って言うのは「情報を知るための1つの手段」なわけであります。百聞は一見に如かずとも言うように実際に自分の目でみるのが一番確かですしね!その時に「タイムスリップ」と言う手段を実現するための技術が「タイムマシン」なわけであります。

「過去や未来へ行ける技術をもって何をつくろう?」

この考え方の気持ち悪さがわかりますか?
本来ならば思考プロセスに置いて一番最後に来るべきところがさも目的のように語られてしまっているのです。これが日本の大学でのプログラミングの授業での気持ち悪さだと僕は思っております。「過去や未来へ自在に行き来できる技術」を使いたいから「タイムマシンを作ろう!」って考える人って居ないでしょう?それと同じですよ。「人間が力を使わなくても大きな穴を掘れる技術」があるから「ブルドーザー」を作ろうにもならないでしょう?人間が力を使わずに大きな穴を掘りたいからブルドーザーの技術が生まれたんですよ。


“技術”が好きなのか”自己陶酔”が好きなのか
ものづくりの職場で働いていると「技術が好き」と言う言葉を口にする人が多いです。
※じゃなきゃ肩や腰や目や内蔵を悪くしやすいエンジニアなんて職は辞めた方が良い。

しかし1年間ものづくりの職場で働いたり、ものづくりをしている人達と触れ合って中で「本当に技術が好き」な人と、「技術を使っている自分が好きなだけ」の人がいるのではないかなと感じました。別に僕は後者を否定するつもりは無いのですが、「いやいやいや!君が好きなのは技術ではないでしょ!」と思うのであります。

例えば6人のチームでオフィスの片隅の島で開発を行っていたとします。ようやく開発が一段落し今度打ち上げをすることになりました。そこで新人のAさんはチームの予定を合わせるためにたった3分でアンケートフォームを実装し皆に投げました。コードも凄く綺麗でまるでお手本のよう!アンケートの画面も洗練されたデザインでカッコいいです!Aさんはなんて優秀な開発者なのでしょう!

とはならないでしょ!
こんなもの紙とペンをもって一人一人に予定を聴いて行った方が余程手間も時間も工数もかかりませんよ!本当に優秀な開発者ってコードを書かずに問題を解決してしまう人だと思うのです。webのアンケートが必要なのって、「とても紙とペンでは管理できない程の大人数」「参加者全員に口頭で確認がとれないケース(地方に散り散りになった同期との同窓会等)」でしょう?総勢600人の高校の同期での同窓会を行うので、出欠を管理するためにwebアンケートを作成しましたならまだわかります(それでも既にGoogleのフォーム等があるのだからそっち使えば良いと思いますが)。それでドヤ顔で技術が好きと言われても「いや!技術を使ってる自分が好きなんでしょ!」と思うのです。

逆にです。
僕は技術が好きな人って、今、このタイミングで、解決できない問題を解決するために新しい技術を考え続けている人なのではないかなと思うのです。何か明確な目的があって、その目的を達成するための手段を考えて、でもその手段を実行にうつすためには技術が不足している。そんな状況下で「われこそは!」と新しい技術を自分で産み出そうと試行錯誤している人こそ本当に技術が大好きな技術馬鹿なのではないかなと思うのです。

インターネットの時代ってものが生まれるスピードも普及するスピードも尋常じゃなく速いです。だからこそ大体の技術って呼ばれている技術ってもはや道具で、わざわざ自分がその技術を使わなくても既にその技術を使うための枠組みが丁寧に用意されていて、結局コードなんか書かなくても技術を使えてしまうのです。すでにブルドーザーを導入している現場に、自作したブルドーザーを持ち込まれても困りますよね。もし自作したブルドーザーが今使っているブルドーザーには無い優れた機能を搭載しているのであれば話は別かもしれませんが、そもそも論としてブルドーザーを使う目的って「穴掘り」とか「障害物の移動」なわけであって、それが出来ればブルドーザーの事は足りるのであります。

「俺は技術が好きなんだ!」と言って、ブルドーザーにリニアモーターカーの磁気で移動する技術を搭載されても困ります。これは極端なたとえなので「そんな馬鹿な」と笑い話になりますが、実際に「なにが目的なのか」明確にした上で「そのための道具」を明確化して、そこにアプローチする技術を開発ないしは選択しないと、見当違いのブルドーザーが誕生するわけであります。いやね。確かにブルドーザーは重いので磁気で宙に浮かせて移動できたら便利なシーンはあるかもしれませんが、導入コストとメリットを考えた時にあきらかにゴミでしょう。磁気で宙を浮いて現場まで移動するブルドーザー。


まとめ
社会人として1年間「仕事としてのプログラミング」に携わり

  • 目的から逆算して考える事の大切さ
  • それを考えた時の技術ベースで教える授業の気持ち悪さ

をひしひしと感じました。

別にプログラミングの作法なんて本を読めば書いてあります。
だからこそ授業では生徒個人個人に目的を明確にしてもらってそこにアプローチする何かをプログラムしてもらった方がより社会で役にたつ授業になるのではないかなと思います。その際に実装で行き詰った部分や本を読んでも理解できなかった部分を聴ける場を授業にすればいいですし、何より授業と言う形式ならば他の人がどんな思考でどんな目的を達成するためにどんな技術を応用したのか触れる事が出来るので楽しいかなと。


最後まで読んでいただきありがとうございます。もしこの記事を気に入って頂けたようであればシェアをお願い致します。非常に励みになります。


コメントを残す