某文系私立大学に在学中で、株式会社LITALICOでRailsエンジニアとしてインターンをしている@koheiyamaguchi0203です。この記事は『LITALICO Advent Calendar 2017』9日目の記事です。
#最も大切なこととは
「プログラミングをやったことがないが、Webサービスを開発するエンジニアになりたい私立文系大学生」に最も大切なこととは、 メンターがいるかどうかです。そもそもメンターとは何なのか、メンターがどうして必須なのか、メンターはどこで見つけることができるのかについて書いていこうと思います。
##メンターとは
メンターとは以下の少なくとも以下の要項を満たす人のことを指すと考えます。
###俯瞰した視点
ここでいう俯瞰した視点とは、「目標に対して、いつ、何を、なぜ、どのように実行すれば良いのかを考えることができる」ことを指しています。
目標とは、プログラミングを始める上での目標のことです。例えば、私のプログラミングを始めた理由はざっくり言えば「サービスを開発する」ことでした。その目標に対して、具体的な学習ロードマップを描くには、「いつ、何を、なぜ、どのように実行すれば良いのかを考えることができる」が必要になってきます。
###定期的にフィードバックを与えられる
学習を進める上での疑問点へのフィードバックは絶対に必要です。初心者は何が正しくて、何が悪いことなのかの判断すらもできません。その判断をしてもらうためには第三者からフィードバックしてもらう必要があります。さらに、その状況は長い間続きます。なので、定期的にフィードバックをもらえる必要があります。
##メンターの存在が最も大切である理由
メンターの存在が大切である理由をいくつか挙げます。ここで挙げているのは、独学でプログラミングをしている人と比較して、大切である理由です。挙げればキリがないのですが、「プログラミングをやったことがないが、エンジニアになりたい私立文系大学生」に足りないことを補ってくれることに限定かつ、個人的に重要だと思うことを書きます。
###独学だと良いエンジニアになりにくい
プログラミングをしていると、コードを書くことが沢山あります。良いコードを書くためには、良いコードが何なのかを知る必要があります。ですが、初心者が独学で良いコードに触れる機会はほぼありませんし、あったとしても、それが良いコードである理由を知ることができません。しかし、メンターがいれば、コードレビューをしてもらえます。そうすれば、良いコードはこんな感じで、その理由はこうであるというのを教えてもらえたり、考えるきっかけをもらえます。その積み重ねで少しづつ良いコードを書くことができるようになります。
###勉強方法を知ることができる
多くの私立文系大学生は大学に入ってから、勉強する機会はあまりないと思います。なので、勉強する方法が分からない人が沢山いると思います。勉強方法が分からないまま、勉強することは非効率で、モチベーションを維持するのが大変になってきます。ですが、メンターが様々なアドバイスをくれたおかげで勉強方法を確立させることができました。勉強の方法とは、「調べ物をする際には、原点に当たる」など多くの方法論があります。エンジニアの人たちは様々な勉強方法を試し続けてる人が多いので、効率が良く、自分に合った勉強方法を試行錯誤する手助けになると思います。
###圧倒的な強制力が働く
プログラミングの勉強をしていると、英語で説明されている難しい単語、概念や原則・原理などを理解する必要があります。しかもそれが沢山あります。勉強すればするほど、その難しさを知り、挫折していきます。そうでなくとも、人間は怠惰な生き物なので、めんどくさくなって勉強するのをやめます。ですが、メンターがいると、レビューをしてもらう際に、何も進捗がないとなんか申し訳ないですし、怒られそうです。そうすると、「絶対に勉強しないと。」となり、否が応でも勉強します。私は凄まじく怠惰な人間なので、メンターの存在による強制力に何度も助けられました。
##メンターをどうやって見つけるのか
メンターをどうやって見つけるべきなのか。それは具体的に3つほどあると思います。以下に書いておくので、比較して検討してみてください。
###インターン
学生なら、インターンが最もおすすめです。メンターも見つけやすい環境でありながら、実際の開発にも携われます。この環境は他では得られないと思います。よく言われるのが「初心者でもインターンとかできるの?」です。正直、結構難しいです。僕は10社ぐらい応募しましたが、全ての応募が見送りでした。でも、やる気と学習への意欲があれば、採用してくれる会社も少ないですがあります。個人的には受託会社、プログラミングスクールは初心者を研修して採用するというケースが多い気がします。弊社でも未経験者のエンジニアインターン受け入れの実績はありますので、詳しく知りたい方は私のFacebook messangerで連絡をくれれば、対応できるかもしれません。あと、インターンをする際に、聞くべきなのは研修の有無です。未経験者をいきなりOJTで教育すると言っているところは付いていくのが、スーパーハードな可能性が高いので、自信がない、やめておくべきです。
###スクール
スクールはお金を払えば、誰でも入れますし、簡単なWebサービスを作成する経験を得られるので、プログラミングの雰囲気を感じ取れる場所です。ただ、スクールを卒業してすぐにその辺の開発者と同じように開発できるようになる人は稀です。卒業後はどこかの会社でインターンをするのが良いです。どこの会社もキャリア支援事業をしているので、どこですればいいのかとかも相談するといいと思います。
###Webサービスを活用する
スキルシェア系のサービスで「プログラミング教えます。」と言った募集が沢山あります。なので、そこから良さそうな募集に応募してみるのも良いと思います。注意が必要なのは単発での募集になりがちなので、定期的なレビューをしてもらえるかは分かりません。
##終わりに
もちろん、プログラミング学習をする上でメンター以外にも大切なことは沢山あります。ですが私の経験上、メンターの有無は最も大切なことの一つです。「プログラミングをやったことがないが、Webサービスを開発するエンジニアになりたい文系大学生」は良いメンターと出会い、頑張って勉強しましょう。(自戒)
さて、明日の『LITALICO Advent Calendar 2017』10日目は@Ryotamuさんの「新卒エンジニアの脳みそを広げる非技術本7選」です。お楽しみに!