DIVE INTO CODE

2019年4月24日

Rubyを独学して未経験で就職するまでに立ちはだかる壁とその解決法

Rubyを独学でがんばっているあなたにとって、もしかしたら独学の困難さよりもむしろエンジニアとして未経験で就職することや、就職後にぶつかる壁のほうが大きいかも知れません。それらを乗り越えるための解決法をお教えします。
DIVE INTO CODEで教えているRubyを習得する前提で話を進めますが、ほかの言語の場合でも共通した話ですのでぜひこの記事を参考にしてみてくださいね。

【こんな方におすすめ】
・未経験からのエンジニアを目指している方
・プログラミングスクールを検討している方
・プログラミングの勉強で悩んでいる方

【目次】
1.未経験は想像以上に就職が難しいと知るべし
2.身近な人の役に立つプロダクトを自作できるレベルになっておこう
3.希望の就職先の人と知り合いになって、ゴール設定から始める
4.しっかり勉強しつつ楽しみを見出せることが求められる
5.エンジニアはデジタル職人だと心得て、覚悟せよ

■話し手
DIVE INTO CODE 代表 野呂 浩良
■聞き手
StartGate 永田 拓也

未経験は想像以上に就職が難しいと知るべし

独学だけでも果たして未経験で就職できるのか、知りたいです。

単に「Rubyを独学する」だけならその方法は容易に想像がつきますよね。インターネット上にはRuby自体の説明書も公開されていますし、それを学んだ人たちの投稿したものがあるので独学はできる。
ただし就職することまでを見据えると、ハードルは高いと思います。その理由は、まずどこまで独学で進めたらいいのかが分からない問題があります。また、就職できるレベルというのは想像以上に難しい。ちょっとかじった程度で誰でもエンジニアになれるなら、その仕事はすでに埋まってますよね。

確かにそうですね。

世の中で募集している職種というのは基本的に一定以上の難易度があるわけですが、独学でもエンジニアになれる道のりはあります。しかし、ネットで調べた情報をただ実行しただけのレベル感だとやはり難しいと思うんですよね。それだと実務レベルで何をやれば良いのかが分からないじゃないですか。

独学でやってることが正しいのかどうかも分からない。

なので、実際に動かして作ってRubyの説明書を理解して……というサイクルをひたすら繰り返すなかで、
・趣味で作ってみる
・自分の今の仕事の業務を効率化するものを作ってみる
・大学生や学生ならWeb掲示板のようなユーザーが使いそうなものを作ってみる

ここまで達してようやく「守破離を超えて型を破ってみた」程度のレベルにはなると思うんです。

身近な人の役に立つプロダクトを自作できるレベルになっておこう

独学に加えて世の中の人がどう使えるのかをちゃんと試してみるところまでのプロセスが必要だと思うんですね。もちろんこれはこれで難易度が高いですけど、就職できるレベルって本来そのくらいのレベルだと思います。

確かに。でもそれだと就職だけでなく、起業ができちゃいそうですけどね。

そうですね。ただ、起業というとマネタイズとかも考えなきゃいけないので、それは非常に難しいと思うんです。だから、せめてエンジニアになるんだったらマネタイズは度外視でいいので、なんか面白い、使えそう、実用的だというものをお金目的ではなく作ってみることは欠かせないです。

実際にモノ、プロダクトを作ってみるんですね。

そうですね。まとめると、独学をしつつ身の回りでお世話になっている人や喜んでほしい人が使えるものを1つ作ってみることが大事ですよね。

自己満足で進めるよりは、どんどんと発信をしていくべきですか?

発信したほうがいいです。言い方を変えれば、「ネット上にある情報だけで他人が書いているものを真似してひとまず作ってみた」というレベルだと不十分です。それでは就職ができない。「オリジナルのプロダクトを作ってみた」ところまで到達して初めて、ようやく門戸が開くイメージですね。

独学での就職を目指す中で壁になるのは、どんなことがあるんですか?

最初から最後まで壁になるのは「何をどこまでどうやっていいのかが分からない」ことです。

確かに分からないですね! 暗いトンネルの中を進んでいるような感じで。

出口が見えないんです。周りに同じ方法で就職した人がいれば良いんですけど、いなければ相談もできず分からないですよね。だから「ネットに載っている解決方法を参考にしてとりあえずやるしかない!」と孤独な戦いになるわけです。

希望の就職先の人と知り合いになって、まずはゴール設定から始める

いずれにせよ、そのまま最後までモチベーションがもつかどうか。本当にこの方法でいいのかと不安が芽生えるかもしれない。その気持ちに向き合っていくためには、たとえば就職したいと思っている企業の方たちと接点を持つようにすることが考えられますね。現役の社員からナマの情報を教えてもらうのが一番勉強になるし、それによってゴールが見えるようになりますから。

確かにそうですね。その企業の面接をクリアできるラインが分かりますもんね。

そうなんです。だからそういうところにまず道を作りに行くのが一番早いと思います。いきなり応募して面接に向かうのではなく、とりあえずは知り合いをつくる。社員が行きそうなイベントを見つけてみるなどでもいいでしょう。

Rubyを学びながら就職を視野に入れて考えているんだったら、勉強することを目的にするんじゃなくて「就職してからどうやって活躍できるのか」までをイメージして動いていくことですかね?

はい。そこまで考えて動く人はそんなに多くないですから、頭抜けるチャンスです。また、今まで学校で勉強しても就職とは結びついた経験があまり無いので、つい思考が積み上げになっちゃうんです。しかし就職活動は逆算で考えないと何に取り組めばいいのか分からない。その意識の差が一番のハードルになっていると思います。

確かに勉強をしていると「ここをクリアしたい」という思いが頭の中でいっぱいになっちゃうんですよね。

それだとキリが無いんです。その状況で採用基準を持っているのは採用する側であり、そこで働いている人たちのレベルが指針です。その人達よりも優秀だと思われたら採用される可能性が高いと言っていいでしょう。

独学を始める前に、まずは面接から始めてみても良いかもしれないですね。

そうですね。道のりはそこがまず最初。加えて、そこに向けてちゃんと勉強するっていうのもとても大事なんですよね。

しっかり勉強しつつ楽しみを見出せることが求められる

さっきの話のように、オリジナルのプロダクトを作れるレベルになろうとするとどうしてもプログラミングへの理解が必要だし、分からないときに投げ出さずに粘り強く調べられることや、ときには睡眠時間を削ってまでやる必要のあるフェーズがおそらく誰しも訪れる。それをいかに自分で突き詰めて実行できるかどうか。あとはいかに楽しみを見出だせるかがけっこう重要だと思います。

プログラムの書き方を楽しんでほしいとベテランのエンジニアがよく言うんですけどその意味って、「楽しめれば続けられるということは、つまり楽しみを見つけ出せないと難しいよね」ってことなんです。
エンジニアになれば納期に追われることもある。その中で睡眠時間を削って徹夜でやることもある。そのときに「なんで自分はこれをやってるんだっけ」と思ってしまうと続けられなくなりそうなこともあるんです。でもその状況は、そのプログラムを求めてる人がいたり動かないと困る人がいたりするから緊急を要する状況なんですよね。つまり、それを解決すれば誰かの役に立てる。だから辛い状況の中にも仕事として楽しみを見出していく必要があるんです。

エンジニアはデジタル職人だと心得て、覚悟せよ

確かにせっかく就職できたとしても、なんで自分はプログラミングを独学して就職したんだっけと、楽しめないと本来の志や意義を見失ってしまいますよね。

さらに難しいのが、ほかの職種と比較するとエンジニアとしての就職はあくまで自立自走が重要なんですよ。
たとえばあるエンジニアがたくさんのコードを書いて積み上げ、時間をかけてきてあと一歩で完成するとします。しかしそのタイミングで「すみません、明日は時間が無くて代わりにやってくれませんか」というのはできないんですよ。なぜなら今まで積み上げてきたいろんな情報や考えの上にコードが成り立っているからです。「明日やっておいて」と別の人がいきなりバトンタッチはできないわけですよ。自分でなんとかするしかない。

いや、スゴい!

だから、自分でなんとかできない人はエンジニアとして生きていけないし、場合によっては自分が徹夜することにもなりかねないし、それは避けて通れない。エンジニアはそういう生き方なんですよ。

すごいですね。

自分の頭脳の中にこそ、考えが宿っているんです。思考をまとめて全てを手順化し、あるいはオブジェクトと呼ばれる役割を全て自分の頭の中で組み立ててそれをコードに落としていくわけですよ。

それだけ属人的だということは、俯瞰してみて自分が組織の中でどう動かされていてどうあるべきなのか、全体での立ち位置まで考えられないといけないんですね。

はい。自分が最後までコードを書ききらないと、誰も助けてくれない。もちろんヘルプはするしトラブルシューティングとして力になることはできます。でも手取り足取りやっていたらできる人が1人でやってたほうがマシなんです。新人を雇う必要が無くなっちゃうのでその人に2倍の年収あげたほうがいい。そういう話になりがちなのがエンジニアです。自立自走が常に求められる、だから未経験は辛いんです。エンジニアの仕事の特性から、組織と個人の関係までが全部つながってるんですね。

そういうことですね。

そうして経験を積み上げていった先には、さらに上がいます。

スゴいな。シビアですね。

そういう世界なんですよ。上は無限の世界です。

まさに職人の世界と同じですね。匠だ。

その通り、エンジニアはデジタル職人です。それを知らずに気軽に乗り込んでくると、痛い目に合うんですよ。だから「自分の問題解決をなんとしてでもやり抜く」ような精神が必要な仕事です。一方で「何の問題が来ても楽しい!」という楽観性や好奇心も必要。両方の精神が無いと無理なので、無い場合はやめて別の仕事をしたほうがいいでしょう。

もちろん、ほかの仕事の場合でもそれくらいの気持ちを持っていないといけないですけどね。

まとめ

・独学をしつつ、身の回りでお世話になっている人や喜んでほしい人の役に立つプロダクトを作ってみよう!
・希望の就職先の人と知り合いになって、ゴール設定から始めよう!
・しっかり勉強しつつ、仕事としての楽しみを見出そう!
・自立自走の精神、楽観性や好奇心、エンジニア職人としての覚悟を持とう!

DIVE INTO CODEのことをもっと知ってみませんか?