【就職活動】IT業界を志望している大学生へ!僕が入社半年で感じた”プログラミング技術”の認識のズレ!


プログラミング経験者に告ぐ!
インターネットを見ていると「プログラミング未経験者」がIT企業に入社した後に感じたギャップや技術不足を補うために自分がやったことをつらつらと書いている記事は多く目にするのですが、情報系の学部からIT企業に入社した学生が感じたギャップを綴っているブログってあんまりないので今日は僕が入社して実感した”ギャップ”を書いてみたいと思います。

過去記事:【就職活動】IT業界を志望している大学生へ!早すぎる後悔・僕が入社式から1週間で感じた学生時代にやっておけば良かった事!

フレッシュな今だからこそ感じた想いをそのままに書いておくことで自分の価値観が変わってしまったと金い原点を見つめ直すためのマイルストーンに出来たら良いなと言うのと、内定を貰って内定式を前にして今の会社で本当に良いのか悩んでいる就活生が進路を決める上で少しでも参考になれば良いなと思いつつ書いて行きたいと思います。



補足:僕のプログラミング歴
ひとえにプログラミング経験と知って多岐に及ぶので
僕がどんなことにプログラミングを使っていたかだけ補足します。

僕は競技プログラミングとは無縁です。

学生時代書いていたのはPHPとrubyです。
PHPwebでのアンケートフォームやフレームワークを用いたSNSの作成・運用のために使っていました。
rubyはゼミでデータの収集および解析を行うために使っていました。

Cはかじったのですが途中で飽き「お前は一生メモリ解放してろ!」と吐き捨てて途中でやめてしまいました。笑

なのでプログラミングガチ勢だったかと言われるとそういうわけではありません。

以下
半年社会人をやって感じたギャップシリーズです。


1.強い武器よりも運用方法を
入社当初は先ずは技術をつけてなんぼと考えていましたが意外にも技術はそこまで必要ありませんでした。
その技術を以下に応用するかそれを考える頭のほうが余程大切になります。

理由は後述しますが技術はRPGで言うところの「武器」にあたります。
つまりいくら良い武器をもっていてもそれをしっかりと使いこなせなければ意味が無いのです。

逆にいくら武器がしょぼくてもそれを100%使いこなせれば一定レベルの敵までなら倒せます。
武器(技術)を手にすることばかりに執着せずにその手に入れた武器(技術)をしっかりと自分のものにして自由に使いこなせるようになる訓練をすることが大切です。

例えばIE6への対応。
今はIE11の時代ですが当然ですがIE6であなたがつくったwebサービスが利用されるかも知れません。
IE6は古いブラウザなので「銅の剣」しか使えません。

さあ!
「銅の剣」だけで拡張機能を書いてください!

と、言われた時に、
最新の便利な技術ばかり追いかけそれを習得することだけの執着しコードのアルゴリズムなど本質的な部分を見ずに技術だけを眺めていると文字通り「終わり」ます。


2.納得いかないことの連続の中で
企業が大きくなれば大きくなるほど
企業の歴史が深くなれば深くなるほど
コードの闇は大きくなります。

どういうことかと言うと積もった地層が深くなるのです。

つまり何か追加の拡張機能を実装しようとした時に
過去のコードが干渉してしまい足かせとなっていても
過去のコードを書き換えることが出来なくなる
わけです。

例えば何百万行を言うソースの中から1行変更しただけでもそれによって起こりうるデグレードの数は想像を絶する数になります。
そうなるとそのソースを変更したことによって生まれるプログラムの動作確認の工数があまりに大きくなってしまうためアウトです。

そこで“制限された条件”の中で“実装したい機能”を動かす技術が求められます。
学生時代に10年20年ものの地層(ソースの山)と闘ったことのある学生ってそうそう居ないかと思います。

企業に就職すると学生時代には考えられなかったような制約の元で実装を行う機会にはち合わせることになります。
その時にプログラミングの知識とは別に頭の柔らかさや発想転換力をもっていないと実装の壁にぶちあたります。
ぶち当たった時に乗り越えるためにも「起業でもして新しく自分で1から書ける環境に飛び込む」「常識が通じない制限や制約の中で抜け道を見つけ出す発想転換力を鍛える」ことを強くオススメします!


3.体当たりする根性が大切
当たり前ですが企業で書くコードにリファレンスはありません。
※勿論あることもあります。

お金をもらってコードを書いているわけでありそのコードが出回ったらそれはもう大問題です。
なので基本的に学生のころのようにGoogleに聴くと答えが返ってくることなんてそうそうないです。

返ってくるとしたら考え方の基本となる部分のみです。
今回は記事の対象をプログラミング経験のある方に絞っているので恐らく皆さんにとっては「そんなん知ってるよ!俺が知りたいのはそこから先なんだ!」って言うような情報ばかりが返ってくるかと思います。

そうなった時にその壁を越えるためには何度も壁に体当たりしてトライ&エラーで壁を壊して進むしかありません。
根気よくあれこれ考えて試行錯誤する癖を付けておかないと結局はどこかで躓いてしまいます。

先輩のコードを見て部分部分改変したり
本1冊買って来て写してみたり
Googleからサンプルコード拾って来たり

もちろんそれも大切ですしそれでどうにかなることもありますがプロとして企業につとめてお金をもらってコードを書く以上は、それだけでは確実に破綻してしまいます。

4月からIT企業!
でも自分で1から書いたこと実は無いんです!

って方はのこりの半年で何か1個大きめのプログラムを1から自分の力で書いてみると良いかも知れません。


まとめ
研究室やゼミで”当たり前”だった技術が通用しなかったり使えなかったりすることなんてざらにあります。
調べても調べても答えが出て来ないことだってざらにあります。
ようやくたどり着いた答えでも過去の地層が邪魔して1からやり直しになることも…。

そんな時にあなたを救うのは2つの技術です。

1つ目は多くの人が既に学んでいる“プログラミングそのものの技術”になります。
そしてそれと遂になるもっと大切な2つ目はプログラミング技術を使いこなすための”頭を使う技術”です。

結局はプログラミングそのものの技術はやれば誰でも身につけられます。

大切なのはその先。
その技術をどうやって使いこなしてどうやってコードを組み立てて行くかはあなただけの、そしてエンジニアとして生きて行く上で必要不可欠な技術になるのではないでしょうか?

ce293559f2d3ac2aa7be0e42bcda4686_s


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


コメントを残す