オンライン学習サービスやプログラミングスクールによって、プログラミングを学習しエンジニアとして働く人が増えてきています。ですが、プログラミング学習で途中で挫折してしまう人も少なくありません。
そこで思ったのが、いまエンジニアとして活動している方が、どのようにプログラミングを学習してエンジニアになったのかを知れたら、これからプログラミングを学習する人向けのロードマップになるはず!そこで本連載では、いまエンジニアとして活動されている方々に、プログラミングの学習方法などをインタビューしていきます。
今回は、大学生ながら、サーバーサイドエンジニアとして、スタートアップのプロダクト開発に取り組まれている、ますみんさんに、「エンジニアになった理由」や「どのようにしてプログラミングを学習したのか」をお伺いしました。
ますみん
大学4年生。サーバーサイドエンジニアとして、スタートアップ企業でプロダクト開発に取り組む。友人と会社を共同創業する予定。
Twitter:@masumi_sugae
「じゃあ、明日からエンジニアね」気づいたらエンジニアになっていた
──現在ののご活動について教えてください。
社会的な肩書きは大学4年生です。今年で25歳で、休学が2年あって浪人の1年があって、社会人で言えば3年目になるはずです。
エンジニアとしては、スタートアップ企業で勤務しています。また、それとは別で自分で会社を共同創業をしようとしています。あとは空いてる時間で大学に行っています。エンジニア事務所「GAOGAO」の活動にも関わっていて、東京にあるGAOGAOのシェアハウスの運営などをしています。
──やっていることが非常に多いですね、エンジニアを軸に色々やられているんですね。エンジニアになろうと思った理由を教えてください。
僕は、エンジニアになりたいと思っていたわけではないんです。車が好きで、大学2年生の時に車を運転できるバイトがしたいなと思い、マイナビバイトで「車 ドライバー」みたいな感じで調べていたんです。カクヤスや弁当屋の定期配送などのバイトの面接を受けていたんですけど、全部落ちてしまいました。
それで、一番最後に受けて採用されたのが、車のC to Cのカーシェアリングサービスをやっている会社のドライバー職で、僕はそこで車を貸したい人から借りたい人へ、車を運転して届ける役割の仕事をしていました。
ですが、会社としてそのサービスはコストがかかりすぎるということで、ドライバーはやめようとなり、「クビになるのかなー」と思っていました。そしたら、その企業の社長が「君結構ちゃんと仕事するから、ドライバーじゃなくてもうちで仕事したいなら、してもいいよ」と言われたんです。
とはいえ、何の仕事があるのか?と思っていたら、CSかエンジニアか選べと言われました。自分はCSが何か知らなかったので、エンジニアを選択したら、その後はMacBookをいきなり渡されて、「じゃあ君、明日からエンジニアね」と言われ、気づいたらエンジニアになっていました。
──もしそのままドライバーの仕事をしていたら、今頃どうなっていたと思いますか?
間違いなく、エンジニアにはなっていなかったと思います。大学の学部が理工学部なので、機械工学を学んでいて、そのまま機械系のメーカーとかに就職するんだろうなと思っていました。
「実践が一番学びになる」たった2週間のプログラミング学習で実務へ
──ドライバーからいきなりエンジニアへと転身されたわけですが、プログラミングはどのように学習されたのでしょうか?
最初に、MacBookを渡されてから2週間ぐらいは、その会社の先輩のエンジニアから課題を渡され、それをひたすらやっていました。
──それはどんな課題ですか?
Ruby/Ruby on RailsでSPA作る課題でした。
カレンダーを表示するんですけど、UI上に何月みたいなのが書いてあって、今月が4月だとしたら、「前月」「次月」みたいなボタンがあって、そのボタンを押すとその月が変わるんですけど、URLは変わらなくて、例えば/calendarというURLにアクセスして次の月を押すとajaxで取ってくるみたいな、JavaScriptでコンテンツを変えるタイプのアプリケーションを作る課題です。
──初心者にしてはレベル高いですよね?
たしかに、今思えばかなりハードな課題でした。Railsは普通はボタンを押したら、ページ遷移すると思うのですが、遷移しないタイプのアプリを作るという課題でした。
それに加えて、HTML/CSSの勉強をしようと言われて、一個サイトを模倣して作りました。それはとあるプログラミング学習サービスのLPを模写して一つ作りました。それが一週間ぐらいでした。
──もしかして、それが終わったらすぐに実務に入られたんですか・・?
はい、そうです。
──スピード感がスタートアップですね。では、いわゆるオンラインのプログラミング学習サービスなどは全く使われなかったのですか?
使わなかったです。よくオンライン学習サービスやプログラミングスクールでどこがおすすめか?を聞かれるのですが、僕は使ったことがないので、何もアドバイスできないんです。
それに、やっぱり実戦が一番学びになると思っています。
──ますみんさんのように、未経験の状態でエンジニアインターンとして採用していただけるのは、幸せですね。
かなり幸せですね、普通は受け入れてもらえないと思います。しかもエンジニアが1人しかいなかったので、僕の教育コストがすごくかかっているはずですし、よく採用したなと思っています。
大切にしていたことは、「コードの理解」
──プログラミング学習をしていて、大切にしていたことありますか?
僕は、コードの理解を大切にしていました。そのコードはなぜ動いているのか?ということを、とにかく理解するように意識していたんです。
僕がすごく昔に書いたQiitaがありまして、それは「Railsのヘルパーの中でどういう処理がされているのか?」をすごく深掘りしたもので、そういうことを意識していました。
「これは挙動がおかしいな?」という疑問から始まって、「Railsの中でどういう実装がされているのかな?」を考えて深掘りしました。
──そのQiitaを書いたのはプログラミングを始めて、どのくらいですか?
これは、プログラミングを始めて5ヶ月ぐらいです。
──プログラミングを始めて、5ヶ月でこんなこと普通しないです。最初から、コードの中まで深掘りすることを意識されていたんですね。
はい、「コードの中で何が起きているの?」とか、「そのヘルパーはそういう挙動じゃなくない?」というのはかなり見ていました。
──でもこれは、あえてオンライン学習サービスなどの教材を使わずに学習したからこそ、身についたことなのかなとも思いました。
そうかもしれません。
このヘルパーを使えば、こういうことができるみたいなことが書いてありますが、その中で何が起きているのかを分からなかったら、Railsじゃなくなった途端に困ると思うんです。僕は自分でわかるようになるまで、深掘りすることをとにかく意識していました。
──そういうことは、最初にインターンした会社のエンジニアの方が教えてくれたのですか?
そうです。「お前そのコードの意味わかってないだろ?」とよく言われていましたね。
ますみんさんが運営されている個人ブログ。直近の記事では、「PHPフレームワークのLaravelがリクエストを受け取ってからhtmlを返すまでの流れ」について深掘りされています。おすすめ記事です。
──プログラミング学習をしていて、やっておけばよかったことや後悔はありますか?
それでいうと、プログラミングを始めてから2年間ずっとRailsしか触ってこなかったので、早めに他の言語を触るべきでした。他の言語をすぐに触って、他の言語との比較ができるようになっておけばよかった、と思っています。
他の言語だとこういうことができて、こういうアプリ作りたいときはこっちの言語のほうがいいよ、みたいな言語の特性などを知れてたらよかったです。
──でも、初心者だと一つの言語をできるようになるまで大変ですよね。
そうですね、一つできるようになったら他の言語に横展開しやすいのはあるので、一概にどちらがいいとは言えないですけどね。
でも、2年もやっていたら、さすがに他の言語も触れるようになっておかないとエンジニアとしてまずいと思います。
──今はRubyとPHPをメインにやっているとお聞きしました。今後身につけていきたい言語は何ですか?
やっぱり、Golangです。一年前に気になって触ってた時期があったんですけど、ちょうどそのタイミングでPHPを学習し始めたので、二つ平行して学習するのはきついなと思い、ストップしています。
──ますみんさんは今後どうしていきたいと思っていますか?
ごりごりコードを書いていくエンジニアよりかは、チーム作りですとか、ディレクションというか、そっち側にシフトしていこうと思っています。
1人で書いていると限界が訪れると思います。作れる時間もそうだし、技術の習得のキャパもそうだし、そういうのが限界が見えてくると思います。
そういったものを複数人でカバーしていくというか、作りたいものあったときに、作り上げるまでのスピードを考えたら、複数人でやったほうが絶対いいので、そのエンジニアをまとめられるような人間になっていければなと思っています。
本当にエンジニアを目指すなら、教材から一歩踏み出して学ぼう
──最後に、プログラミングを現在学習中の人に向けて、何かメッセージやアドバイスがあればお願いします。
オンライン学習サービスやプログラミングスクールで勉強している人が多いと思います。
それらは教材があって、それが終われば一通りサービスを作れるようになるでしょう。ですが、もし本当にエンジニアになりたいのなら、そこから一歩踏み出したところを自分で勉強するというモチベーションを持っておくと良いと思います。
教材だけだと学びきれない部分とか、本当に上っ面だけやることになると思うので、コードの理解をもっと深めていく努力をしていけば、もっと面白くなると思います。
それに、もしかしたら、教材で書かれていることよりも、効率的かつ読みやすいコードを書けるエンジニアになれるかもしれません。
受け身じゃなくて能動的に学ぶことが大切です。