プログラミングスクールから開発現場に出た時のギャップ
「さあ始まりましたひまじんプログラマーです始まりましたというわけでこの番組なんですがひまじんの中級エンジニアが送る駆け出しエンジニアをキャリアアップさせようというラジオになっています素晴らしい業界に貢献したいな貢献したいしたいなというわけで自己紹介いきましょうどうぞノリです」
「営業マンからエンジニアに転職したエンジニア4年生ですはい中学年小学校で言うと小学校で言うと4年生ですね僕カイチですwebapi開発をやっていてその後新規事業開発企画プロダクトマネージャー的なものを経て現在aiエンジニアやっている5年生ですおおおお」
「エリート5年生ですねエリートか分かんないですけどねキラキラしていこうと思いますキラキラ5年生というわけでちょっと今日お話ししたいものがあってですね何でしょう僕は情報系大学大学の情報系学科を卒業してそのままエンジニアやってるんですけどのりさんは経済学部からのプログラミングスクールからの」
「エンジニアじゃないですかそうですね最近よくありがちなキャリアありがちかも先進的ですねで実際にプログラミングスクールを受けてどうだったかというところとそれを活かして現場に出た時に何がギャップで何が良かったとかそのギャップをどう乗り越えたとかみたいな話を聞きたいなるほどいいでしょう語りましょう語ってほしい語りましょう」
「じゃあまずちょっとスクールの方から話していきますかはいお願いしますちょっと僕結構スクール変わったとこ行ってたんですけど変わったとこ行ってたんですねネクシードっていうセブ島でIT留学やってますよみたいなすげーなところですね海外なんですね海外なんですよ今だとスクールの有名どころとかだと多分テックキャンプとかテックブーストとかあとなんかいっぱい色々ありますよね侍エンジニア塾とかはいはいはいで」
「セブ島もやること自体はそんなに変わらないんですけどちょっと違うのがセブ島行くんで他に何も持ってないんですよ僕はその時他のしがらみを一個も持っていない確かにそれはそうかもだって3ヶ月セブにいるんだもん誘惑もないし言ったらですよね飲み会に誘われるとか誘惑はあるかも誘惑的なものは逆にあるかもしれないけど」
「しがらみはないですね友達から向こうの知り合いに誘われるけど既存の知り合いに誘われないなので結構ガッツリプログラミングやるんですよあと英語もやりますと半々ぐらいでやってました午前中英語の午後プログラミングみたいな感じで時間割り分かれてて」
「プログラミング大体授業で言うと1日4時間くらいかなただ宿題とか宿題は出るか微妙に出る微妙に出る別に宿題じゃないんだけど1日これくらいやれよっていうラインがあってとりあえず自習2時間はしないとそれ到達しないって感じスクールで学ぶ内容なんですけど最初の1ヶ月弱くらいは」

「まずプログラミングの基礎をやろうっていうところになってましたマジ素人しかいないやつですか?そういう体マジ素人しかいない体だけど僕行った時ちょっと新しいコースみたいなのができたんですよハイエンドコースっていう伝説のコースなんですけど事前にちょっと試験みたいなのがあってそれで合格したらいけるみたいな感じだったんで多分」
「ある程度ちょっとないといけないと思うそうだったんですねだけどその試作が前衛的すぎて実際行ってみたら僕ともう一人しかいなかったんですよ」
「参加者が少ねえだからもう一人の方は点数いってなかったんだけど人少ないから合格したみたいな事情がありましたね確かその話されるのもやばいですねやばいなんで言っちゃったんだよギリギリだったからOKかなみたいな感じだからある程度ちょっと知ってる程度だと思うそうですねとはいえ最初まずHTMLとか使ってサイト作れるようになるぐらいの基礎的なマークアップしますうん」
「Gitとかも操作やったかな確かあとSQLと言語はPHPやりましたプラスフレームワークでララベルもちょっとやったんだけどほぼないに等しかったフレームワークはないってどういうことだ1日しかやってないと思う1日か2日しかやってないから本当に2時間くらい4時間くらいかで」
「4時間でフレームワーク分かるわけないからほぼそこの記憶ないだからまずその基礎のマークアップやってGitやってSQLやってPHPやって簡単なSNSみたいなのを作るのをやりましたそこで大体それ終わるのが1ヶ月半くらいかな」
「そこまで終わったらあとはもう自分で作りたいアプリケーション作ろうみたいなコーナーだったんですね作りたいアプリ作ろうってむずいむずいねあれアイディア出すのもむずいんだけど意外とアイディアそんな困らずスッて出てきて内容作っていこうみたいな内容はすごくね」
「よかったですね僕的には設計とかもちゃんとやるんだよねそうですよねやんないとできないですよねそうそうそう普通にテーブル設計書いてER図とか書いて画面設計なんかワイヤーフレーム書いて」
「それを元にひたすらコーディングしていくみたいな感じでそれを1ヶ月半くらいやるんだけど本当に詰まったとこだけメンターと相談してなんとか形にして最後卒業発表みたいなのをするみたいな感じでしたねすごいその最後の卒業作品ですかねそれは最初にこんぐらいの納期ですと1ヶ月半」

「1ヶ月半で好きなアプリを作ってくださいって言われるわけですよねそうそうそうそう何も作ったことない人が1ヶ月半で作りきれるアプリを自分で思いついて作りきれるぐらいに落とし込んで設計しなきゃいけないんですよね完成はしなくてもいい正直そうなんですねある程度形が見えればOK頑張ったねーならねちゃんと生何度ことをアウトプットしてそのまま時間かければできそうだねぐらいだったらそう」
「そうそうそうそうでもフレームワーク使ってなかったから結構しっかりSQL覚えれたしすごいなあとセキュリティ対策とかも自分でしなきゃいけないんでXSS防いだりとかプリペアドステートメントでSQLインジェクションされないようにしたりとかそういう基礎的なセキュリティ対策CSRFかその辺のベーシックなところはしっかりやるっていうので」
「そこもフレームワークに頼らなくてよかったのが逆に良かったかなと思いますね気にしなきゃいけないところ自分で作るときは結局知らんと多分できないとは思うんでそこまでやってるのって結構普通なんですか?」
「いやーどうだろうね正直僕採用とかも携わってるんでスクール卒の人のポートフォリオ見る機会めっちゃあるんですけど某有名スクールの卒業の人たちの作るものはだいたい同じですね同じっていうのは?なんかレールズ使ってみんな似たようなものを作ってくるイメージですねまあまあまあまあそれを作ってたんでしょうからね」
「ちゃんとポートフォリオに載ってる綺麗なサイトも全く見た目同じだったりするそれを作ってくださいねっていう課題なんだと思われるそれはそうなんでしょうあんま自分で作るってなって作ってる人は卒業してから自分で作ってるのかもねかもしれないですねだからあれ意外と良かったな良いと思いますよ結構ハードな課題だなと僕は聞いてて思いました」
「そうだねでもやっぱその時間そこにいる期間やっぱプログラミングのこと考える時間多いからそうですね本当ね部屋の椅子がクソだったのだけが本当に気になりますね僕はどんなのだって学校の椅子みたいないやもうなんだ固いし人間工学を全く考えてない椅子みたいなもう平らで背もたれがあるだけそうそうそうそう」
「しかもなんか2つ部屋にあったんだけど椅子ルームシェアで2人で住んでて椅子2つあったんだけど1個各自に格差低い椅子みたいななんでレベルに差をつけるんだよ揃えとけよみたいなそれを通して思ったのはなんか自分で考えて作るっていうのは」
「スクールにないならやった方がいいかなって思いますねなるほど確かにそれはそうですねあれはすごくいい経験だったなっていういやーむずーでもなかなか俺絶対作れませんでした僕は自分で何かアプリを考えて作りきれっていうのは多分新卒の時は最初はできなかったと思いますあれねーむずいよなーいやすごいですねそこまでちゃんとやるの」

「ちゃんとサポートしてくれるメンターがいたっていうのがやっぱりでかいねその後卒業してエンジニアになったと思うんですけどなりましたねスクールと現場で違かったことってあったんですか?それで言うと僕会社入ってからも会社の研修あったんですよ結構研修しっかりしてるみたいなところ売りにしてる会社なんで」
「割とそこの研修もあってからだからスクール行って研修受けてそこから現場行ってるんですねでその研修でカバーできたなっていうのは綺麗なマークアップの仕方とか綺麗なコードの書き方はその研修で学んだなって思いますね同じような内容じゃなかったんですね研修はスクールの時ってマークアップはちゃんとやってなかったんだよね」
「結構ブートストラップ使っちゃってるしねマークアップもさ見た目作るためにいろんなやり方あるじゃんでもどれが良し悪しとかはあんま分かってなかったんですよそれは研修で習えたのが良かったそれ研修でなかったら現場ですごく汚いコード書いてたんだろうなって思う」
「バックエンドも同じかなあとフレームワークそこで学んだしね研修でララベル?そうですねララベルはそこで学びましたねで現場行ってめっちゃギャップだったのはGitですね完全にGit?Git?あのー」
「実はそのスクール人数もっといる想定だったから本来だったら個人開発じゃなくてチーム開発のはずだったんですよだから1ヶ月半で一人で作り切るっていう無茶なコースになってたんですけどチーム開発でGitいじってなかったんでチームでGitいじった時に一個一個の操作分かっても対応できなかったですね」
「どういうことですか例えばGitFlowっていうバージョン管理のやり方のセオリーみたいなのがあったりしますけどそういう流れが分からなかったのかあと何でしょうねレビューの仕方が分からないいやもうそういうレベルじゃないですねコンフリクトが起きた時に何が起きてるか分からないみたいなコンフリクト確かに一人でやったらしないかそれはそうかもしれないですねそうだから」
「コンフリクトって何ですかコンフリクトっていうのはですねGitってバージョン管理ってソースコード変更あったよみたいなの管理できるじゃないですか3分を要は同じ箇所を別々の人が別の変更かけちゃった時にGitって自動でどっち採用していいか分かんなくなっちゃうんでその時コンフリクトって起きちゃうんですよでもそのコンフリクトが起きた時に」
「なんでコンフリクト起きたのか分からなかったしそれをどう直していいのかもよく分からなかったっていうのはなかなか現場で初めて知って衝撃でしたね確かにそれはそうかもGitはねマジで一個一個の操作分かってもチーム開発の使い方はチーム開発しないと分からないと思うそれはそうかもしれない確かに」

「コンフリクト起きそうだなっていうのなんかもうさすがに慣れてきたらわかるじゃんわかりますこれは絶対起きるなー起きたーみたいなはいまあでもこれはこっち採用すればいいかとかはいこれはこれとこれ採用すればいいなみたいなのが今はわかるんですけど当時は全くわからなかったですねはいあそうなんですねであとなんかコミットすごい綺麗にしなきゃみたいな意識はあるじゃないですかはい俺もうそのー」
「Gitってやり直しの操作あるけどさある特定のケースにおいて適切なやり直しって違うじゃん例えばプッシュしたやつを後からコミット変えたらダメじゃないですかそういうのとかも知らなかったんで僕はですね一度プッシュしたコミットのうわこれメッセージミスったなと思ってメッセージを直そうとしてなぜか開発用のブランチを粉々にぶっ壊したことがありました」
「それは予想外だな予想してなかったでしょチームリーダーの人もいや本当だよねしかもその時本当にGitについてあんま分かってなかったから何起きたかも分かってないもんいまだにコミットメッセージ直そうとしてどうやってデベロップブランチぶっ壊せるんだろうみたいな確かにどうなったんだろうなんかね何マージしても1000カ所くらいコンフリクト出るようになったははは」
「全ファイル何かで書き換えたってことなのかな意味わかんなかった意味わかんないですねなるほどじゃあ結構あれなんですねチーム開発大事だよってところが1個ポイントなのかもしれないですねそうだねスクールでチーム開発あるなら」
「それはいいしないならねこれはチームカットするしかないからねそうですね僕今新人の教育をやってて一個コードというかアプリじゃないですけどシステムを作ってもらってるんですよ一人でやらせてると思ってなるほどなと思って聞いてましたビットの運用がね」
「最初やっぱ戸惑うよあれそうですねコンフィクトは大事ですね起きますもんみんなでやってたら普通起きるよねあれは起きる起きる本当に綺麗にタスク分けられる人じゃなかったらそうなんだよいや本当ねリーダーが相当優れてたら大丈夫かもしれないけどあとねもう一個あるわやっぱり現場のソースコードはねでかいわでかいそのなんかギャップはすごかった」
「でかいっていうのはどういう意味で例えばアプリケーションをフレームワーク使って自分で作るってなったらさあんま複雑なアプリケーション作んないじゃんだからコードの行数長くてもコントローラーのメソッドで10行未満かなみたいな感じの中でできるんですよなんですけど現場行ったらコントローラーがまず1000行ぐらいあって」
「Aみたいな何を読んだらいいのってなってしかもそこから呼ばれてるメソッドが一個一個1500行みたいなAみたいなこれどうやって把握したの?本当ですよねそれはあるかもなそこまで超クソでかいのあんま見たことないですけどでもでかいのはでかいです確かにお得ねーしどうしてもやっぱ」

「プロダクションというかプロダクトとして動いてるものってコード重くなりがちじゃないですかそこのボリューム感のギャップは感じましたねでもこれは本当に基礎を身につけるしかないと思う地道に」
「そうですね最初に全部を理解しない方がいいと思う抽象的に関係あるところだけ読めばいいとそれはそうですねだって一人でやるわけじゃないですもんねそういう規模のソフトをやってあと何か変えたいときも確かにメソッドとしては1000行ぐらいあるけど関係ある箇所10行ぐらいでしょみたいな感じなので」
「早く関係ある箇所だけ見て3ヶ月くらいそれを繰り返してたらやっと全貌見えてくるみたいなっていう意識が最初はなかったかなっていう頑張ろうとしてたそうなんですねそうですよね全部把握してきたんだもんね今まではそうそうそうそうしかも分かんないから最初はもうなんとなくこうなってんだろうな当たりもつけれないと思うんでうんうんうん」
「さらにむずいでしょうねむずいまじで変数名見て出力されてるところの変数名見てそれを逆算してこの辺かなみたいなそれが他で使われてないかどうか全部検索して大丈夫そうかなみたいな」
「すごいな大変ですね最初の案件は既存ソフトウェアの更新か何かだったってことなんですねですね保守運用でしたね求人系のサイトの01じゃないと確かに難しいだろうなそういう意味だと僕入ったのって立ち上がりたてのソフトウェアだったんでその苦労はしてなかったんですよ」
「なるほどね最初からだってでかいことはそうそうないもんねそうないですけどどんだけ書くねんとは思ってましたけどそうなんだそれでもやっぱそうなるか既存システムとの連携系だと既存システムの吐き出すレコードがうんこだと」
「それを整えるための無駄な処理が必要になるわけだなんで全角数字と半角数字入り混じっとんねんうわーやだねそれ昔からのやつだとね僕結構現場に出た時にはテストとか結構苦戦したんですよあーテストね自動テストをやっててスクールじゃ習わないと思うんですよ習わないね僕も研修では習わなくて」
「なんぞっていうのでちょっと苦労した覚えがあるんですけどちなみにねネクシードはねテストやりましたねすごやったんだけど全然意味なかった意味なかったあの動いただけ」

「動いただけ?テストが動いただけだったテストのテストケースをどういう風に考えるべきかっていうのをうちにやらずにこれをやるとテストが動くよっていう勉強したってことですねなんかララベルの時にララベル元々PHPUnitっていうPHPのユニットテストのツール入ってるんでそれ動かせばテスト動くんですけどなんか」
「コントローラーのテストみたいなのを書いてリクエスト送って200返ってくるよねっていうのをアサーションするだけのテストを作ったコントローラー分だけ書いてほらこれでテスト通ったよみたいなポカーンってなってそうだよね200返るもんねこれの一体何が嬉しいんだろうってなってたそれは確かにそうだねそれはそうなりそうだわ」
「今スクールに行ってるとかこれから現場出る人で言うとポイントはGitの扱い絶対苦戦すると思います確かにGitのチーム開発での扱いとコードの規模この2つはちょっとどう解決すればいいんやってのはむずいわこれはこれもあれですよね多分友達と作るしかないですよねそれはいいかもなただ」
「やったっけなそれこそ筋肉定食っていうダンスチームやってるんですけど僕らはでその筋肉定食で思い立ってアプリ作ったりすることもあるんですけどコンフリクトは起きなかったな新規作成だとあんま起きないんじゃないそうかみんな新しいこと書いてくるそうですよねコードがやっぱ結局入り混じっていかないといけないからまあでもそうですねでも友達でアプリ作るの楽しいと思うんでねそれはやった方がいいねやった方がいいと思いますうん」
「かなこれ役に立ったかないやでも僕はすごい楽しく聞きましたし同じようにスクールに卒業してる人の中では1ヶ月半で1人でアプリ作り上げてきてるやつがいるっていうそれはちょっと僕は勉強になりましたなるほどねそんな人がいるんだと思っていやそういうスクールでしたねぜひぜひなかなかいないですよねさっきも言ってましたけどなかなかオリジナルのアプリは」
「でも作ってる人は多いからね何割ぐらいですか体感半分以上作ってるそうなんだすごいなでも今は本当にフレームワーク使って作ってる人が主流だねそれはそうですよ素のPHPで書いたりとかしないわ多分あんまり素のPHPで書いてる人はあんまり見たことない初めて見ましたおかげでセッションとかめっちゃ理解したもんそうですよね本当にそうだと思いますよ」
「なのでやっちゃいますもんねフレームワーク使うとさ普通になんかデータベース保存してビュー表示するだけだからなんか結構コード量少ないけどさっき過去の自分のGitHub見て思ったけどドン引きする量書いてたわザーって書いてますね当たり前ですよね1行で終わるやつの中身書いてるんですもんねそうだね普通に何千行とか書いてたねあれすげーわすごいだからねネックシードおすすめですはい」
「回しもんみたいになってる楽しいんだよセブンイレブンそれはそうだねコロナで今行けないかもしれないですけどそうなんだよね開けたらねじゃあ今日こんな感じで終わりましょうかそうですねそれではひまじんプログラマーでは引き続きこれからエンジニアになりたいもしくはなったけどどうやって頑張っていけばいいとかいうか分からないそんな迷い子のような人たちを助けるために番組を続けていきますので何か聞きたいこととかがあったら」

「この後流れるであろうメールアドレスとかに何かを書いて送ってくださいすごい何かお願いしますそれでは本日は以上ですバイバイ」