IT業界未経験のアラサーがRailsエンジニアに転職するための8つの戦略

 

当ブログは完全未経験からプログラマーを目指す人のためのブログです

 

f:id:yoshitokamizato:20190506222531j:plain

どうも、遅咲プログラマーです。

 

今回は「IT業界未経験のアラサーがRailsエンジニアに転職するための戦略」についてお話していきます。

 

これからプログラマーに転職したいと思っているアラサーのあなた、その転職は成功すると思いますか?

 

あなたが転職活動をするときに戦う相手は、20代の若者たちです。彼らには時間があり、若さがあり、エネルギーがあります。そんな彼らと戦うにあたり、アラサーのあなたがなんの戦略も無しに、ただがむしゃらに努力をしていて勝てるのでしょうか?

 

仕事や子育てで時間に限りがあったり、年齢的にも不利な状況で、若者と同じことをしていてはダメです。アラサーはアラサーなりの戦略を構築し、確実に人生逆転してやりましょう。

 

僕は29歳でプログラミングを始め、研究者をやりながら2年間勉強を継続し、31歳でフリーランスエンジニアになることができました。

 

未経験からいきなりフリーランスエンジニアになることができたので、ステップアップのスピードとしては割と早い方だと思います。しかし、今振り返ってみれば、もう少し効率よくキャリアアップできたかなとも思います。

 

というわけで今回は、アラサーからフリーランスエンジニアになった現在の僕の知識や経験をフル活用し、アラサーが効率的に転職を決めるための戦略を考えてみました。ぜひご自身の転職活動の参考にしてみてください。

 

 

1. プログラマーじゃなければいけない理由を明確にする

f:id:yoshitokamizato:20190718145937p:plain

見出し1

アラサーからプログラマーに転職する場合、面接で必ず聞かれるのが「なぜプログラマーに転職しようと思ったのか?」という質問です。この質問に対し、どれだけ説得力のある答えを用意できるかで面接の結果は大きく変わってきます。

 

その質問に答える際、「プログラミングが楽しそうだと思ったから」という理由ももちろんいいのですが、 個人的にはこれだけだとアピールとしてはかなり弱いと感じます。アラサーから転職をするということは、今の仕事を辞めることであり、今の給料や役職を全て手放してプログラマーに転職するということです。

 

そうなると、採用側は転職者が満足するだけの環境を提供することができるか不安を感じることがあります。わかりやすい面で言うと、前職より給料が下がったとしても、仕事を続けてくれるか不安に思うわけです。

 

なぜなら、未経験者をプログラマーとして採用する場合、少なくとも最初の1~3ヶ月は企業側に育成コストがかかります。長い場合だと半年は育成に時間が取られたりするでしょう。つまり、実際にそのコストが報われるのが未経験者が自走できるようになってから数ヶ月経ったあと、と言うことになります。

 

だからこそ、未経験者が入社してからわずか1~2ヶ月程度で辞めていくのは困るわけで、そのためにプログラミングに対するモチベーションがものすごく気になるのが採用側の気持ちなわけです。

 

その際、「なぜアラサーからプログラマーに転職したいと思ったのか?」という動機の内容が軽ければ、その時点で「採用するのは危険」と判断され、落とされる可能性が高くなってしまいます。

 

なので、この部分に関しては、「ただプログラミングが楽しそうだから」と言うだけではなく、今の生活のどういうところに悩みや不安を感じ、それをどのように変えたいのか、それらの課題を解決するためには、なぜプログラマーじゃなければいけないのか?他の仕事では何故ダメなのか?と言うところを洗い出すといいです。

 

端的に言うと「プログラマーじゃなければいけない理由を明確にする」と言うことですね。そこがきちんとできれば、プログラマーへの転職が軽い気持ちではないことが伝わり、面接官もあなたのことを信用してくれるようになります。

 

ちなみに、そういった自己分析を行うときにはマインドマップと言うツールを使うのがオススメです。僕は「XMind」というマインドマップツールを使用しているのですが、これで頭の中を整理すると、1つ1つの事柄の関連付けを行なった上でわかりやすくまとめることができるので、面接で話す際にも過不足なく簡潔に伝えたいことを伝えることができるようになります。

 

www.xmind.net

 

2. 前職の功績を整理する

f:id:yoshitokamizato:20190718150002p:plain

見出し2

若者にはなくて、アラサーにはあるもの、それが「前職の功績」です。前職であなたがどういう仕事をして、その仕事の中でどういう結果を残してきたのか?そして、どう言う工夫をしてその結果を残すことができたのか?それが具体的にわかりやすく伝わるようにまとめてみてください。

 

「自分は何も結果を残してきてないよ」と言う人もいるかと思いますが、とにかくまずはマインドマップをつかって自己分析をしてみてください。本当にちょっとしたことでもいいので、色々と過去を振り返って自分がこれまでにやってきたことを洗い出すんです。

 

そうやっていろんな出来事を振り返ると、意外とアピールできることが隠されていたりします。あなたが当たり前にやってきたことが、他の人からすると「すごい!」と思われることだったりするのです。

 

だからこそ、「こんなの大したことない」と思うことでも事細かに分析しましょう。そこからあなたの強みがだんだんと明確になり、アピールすべきことが見つかってきます。ちなみに、日本人の謙虚な性格からするに、自分ではちょっとできる、くらいのことが実は物凄くすごいことだった、と言うのはよくあります。

 

3. Webの仕組みを学ぶ

f:id:yoshitokamizato:20190718150024p:plain

見出し3

Webアプリケーションを開発するにあたり、当然ながらWebの仕組みがわかっていなければ、自分の頭で考えてアプリ開発を進めることはできません。「なぜWebアプリが動くのか?」という基本的な部分はしっかりと抑えた上で学習を進めていきましょう。

 

ちょっとめんどくさく感じるかもしれませんが、Webの仕組みを知っている方が裏側の仕組みをしっかりと意識した上でRailsについて学ぶことができるので、学習を進めていても楽しいです。そして楽しいからこそ、長期的な学習が必要なプログラミングも挫折せず続けられるわけです。

 

逆を言えば、http、サーバー、データベース、リクエスト、レスポンス、クッキー、セッション、セキュリティなどの基本的なことを知らずにRailsを理解しようとしても、わからないことが多すぎて勉強がつまらなくなり、挫折する可能性がかなり大きくなります。挫折を防ぐためにも、Webの仕組みを理解しておくことが大切なんです。

 

とはいっても、Webの仕組み全てをくまなく理解するのは膨大な時間がかかってしまうため、こちらに関しては他の学習項目を進めながら合間合間に参考書やネット上の記事を読んでみる、というやり方をオススメします。

 

特に、フレームワークの学習と同時並行して進めていくと「あぁ、あれはそういうことだったのか!」と知識が繋がる瞬間があって楽しいです。

 

ちなみに、僕が読んだ中でオススメの本はこちらです。Webの仕組みについてかなり詳しく、わかりやすく書かれていました。しかし、ボリュームがかなり多くて読了するまでに時間がかかるので、前述した通り、RubyやRailsの学習と同時並行して合間合間に知識を定着させるのがいいかと思います。

 

 

4. Git/GitHub の活用

f:id:yoshitokamizato:20190718150045p:plain

見出し4

Git、GitHubを活用する必要性のお話ですが、これらを使ってできることは、「ソースコードのバージョン管理や共同開発の経験を積む」ということですね。

 

プログラミングスクールを卒業した未経験者の方は、ある程度コードが書ける・読める状態にはなっているかもしれないですが、「Gitを使ったバージョン管理を全然やってきませんでした」という人がかなり多いと思います。

 

しかし、現場ではこのGitを使えないと正直話にならないんです。

 

  • Gitを使ってバージョン管理する
  • Git、GitHub(もしくはBitbucket)を連携させて共同開発を行う

 

このような経験ができてないと現場に入ってから本当に苦労しますし、正直一緒に仕事をすることができません。なので、プログラミングの勉強よりもまず先に「ソースコードのバージョン管理や共同開発の経験を積む」ことをおすすめします。

 

  • ローカルとリモートのリポジトリを連携させる
  • ブランチを切り替える
  • プッシュする
  • プルリクエストを送る
  • マージする
  • 更新されたリポジトリをプルする 

 

このような、現場で仕事を進める上で行う一連の流れをできるようにしておくと、転職活動時の面接でもいいアピールになります。なので、ぜひ初心者の方には現場に入る前に複数人での共同開発の経験を積んでおくことをオススメします。

 

幸いなことに、現在ではSlackなどのコミュニケーションツールも充実してますし、Trelloなどのタスク管理ツールや、Git/Githubに関する無料で質の高い学習教材もあります。なので、初心者の方々でも共同開発の経験が比較的得やすい環境は出来上がっているかと。

 

僕の運営している「人生逆転サロン」でも、メンバー同士でリポジトリを共有しあったりしているので、そういった形でサロンをご活用いただいてもいいかと思います。

 

utina.yoshitokamizato.com

 

5. Rubyの基礎文法をしっかり学ぶ

f:id:yoshitokamizato:20190718150102p:plain

見出し5

次にRubyの基礎文法についてですが、スクール上がりの初心者が苦手なのがこの部分でもあります。Railsの基本的な機能を使ってCRUD処理までは普通に実装できたとしても、それ以上に複雑な処理を実現しようとなると、Rubyの様々なメソッドを使いこなすことが大切です。

 

プログラミングを学び始めたばかりの初心者は「こんな文法いつ使うの!?」と思うかもしれませんが、実際の現場ではほぼずっとRubyやRailsの基礎文法を用いてロジックを書いてたりします。そのくらい、現場では基礎文法の知識が必要不可欠なんです。

 

みなさん自分で作成したポートフォリオを提出して就活に挑むと思いますが、「スクールのカリキュラムにある機能をまんま実装してみました」という程度のものだと、正直言って殆どアピールにはならないかと思います。

 

なぜなら、そのレベルのポートフォリオを提出する初心者は他にも沢山いるからです。これだと他の初心者との差別化はできないですし、同じようなポートフォリオを提出する人材の中で、自分だけが採用される訳無いことは容易に想像できます。

 

なので、ぜひ自分なりのロジックを組み込んだポートフォリオ作成を意識することをおすすめします。

 

ルート、コントローラ、モデルのうち、ロジックを書く場所はモデルです。 このモデルクラスの中に、実現したい処理に応じてメソッドを定義し、その中にオリジナルのロジックを書き、柔軟な処理が実現できるようにしてみてください。それにより、以下の能力がアピールできるようになります。

 

  • オブジェクト指向の理解
  • RubyやRailsのメソッドに対する理解
  • 設計に対する理解
  • ロジックを組み立てる思考力
  • リファクタリング力

 

そして、以上のような能力を鍛えるには、Rubyリファレンスに載っているようなメソッドをまずは学びまくることをおすすめします。

 

練習方法としては、irbやPryなどを用いて対話形式でいろんな文法を試してもいいですし、Rubyファイル単体でロジックを組んでもいいです。それに慣れたら、Railsでアプリ開発し、その中でロジックで柔軟に処理を実装する練習をしてみましょう。

 

基礎文法の習得をしっかりやっていないと、自分で考えてロジックを書くということがなかなかできません。だから、柔軟に自分が実現したい処理を実装することができなくなるわけです。

 

初心者の方は大体の場合、フレームワークの使い方に目が行きがちですが、それだけではプログラマーに強く要求される「考える力」が身につきません。なぜなら、複雑な処理を簡単に実装できるようにしたものがフレームワークであり、その分、何も考えなくても機能が実装できたりしてしまうからです。

 

しかし、フレームワークはちょっとイレギュラーなことをやりたいときは対応してくれなかったりするので、やはりフレームワークが手の届かない部分は自分の手で実装する必要が出てきます。そのとき、RubyやRailsに用意されている最適なメソッドや、目的とする処理を簡潔に実現できるイディオムが頭に浮かぶか?ということが現場で働く上では重要になるわけです。

 

基礎文法を学ぶ方法として、僕が初心者の時からずっと愛用しているのが以下の本です。現場でよく使うイディオムだけでなく、テスト駆動開発の考え方や正規表現などの初心者が見落としやすい部分までカバーしているので、こちらを何度も復習して血肉にするのがオススメです。

 

 

6. オリジナルのロジックを書く

f:id:yoshitokamizato:20190718150126p:plain

見出し6

前章でも触れましたが、モデルクラスに「オリジナルロジックを書く」ということを意識してください。 そこが他の初心者と大きく差別化できる部分ですし、自分の実力をアピールしやすい部分でもあります。

 

繰り返しになりますが、せっかくポートフォリオを作っても、見た目はめちゃくちゃきれいだけどサーバーサイドのロジックはスカスカ、ただ単にフレームワークの便利機能を使っただけ、という状態だと何のアピールにもなりません。

 

それだと逆に、「テキスト通りにやってみただけなんだな」「自分自身で考えているわけではないな」という悪い印象を面接官の方に与えてしまうことになります。どうせポートフォリオを提出するなら、もっといい結果につながるようなものを提出したいですよね。だからオリジナルのロジックを書くわけです。

 

また、オリジナルのロジックを書いたら、必ずリファクタリングもやるようにしましょう。「リファクタリング」とはなにかというと、出力結果を変えずに、コードの内容を改善していく(短くシンプルに、読みやすく)していく作業のことです。

 

それをどんどんやっていくと、1つの処理をするにも色んな書き方の引き出しが増えるようになりますし、実際にコードレビューする側からしても「この人はコードが洗練されてて、よく勉強しているのがわかるな」という印象を与えることができます。つまり、転職活動を有利に進めることができるわけです。

 

また、リファクタリングによりコードの内容を改善すると、プログラムの「可読性(コードの読みやすさ)」や「保守性(変更・修正のしやすさ)」が向上できます。

 

未経験者の方々は、今の時点では可読性・保守性の話をされてもあまりピンとこないかもしれませんが、プログラムの開発は複数人で行うことが多いですし、完成したプログラムであっても必要に応じて都度修正が加えられていくものなので、この2点を意識してコードを書くことはとても重要です。

 

例えば、変数の名称が取り扱うデータと全く関係ないものだったら「可読性」が低いですし、繰り返し処理の回数が数値で直接入力されているロジックがあったら必要に応じて数値を変更する必要があり「保守性」が低いです。

 

パターンは他にもたくさんあると思いますが、とにかくこれらを意識していないプログラマーは周りに迷惑をかけてしまう可能性がとても高いです。 加えて、未来の自分が同じソースコードを読んだり修正したりする際にもとても苦労するでしょう。

 

そういった、将来かかるであろう目に見えない潜在的なコストがあることをまずは意識して欲しいです。 試しに、一ヶ月前にご自身が書いたプログラムを見てみると僕が言っていることの意味が少しはわかると思います笑

 

というわけで、リファクタリングまでしっかり意識しておくと、転職活動時にもいいアピールになります。

 

7. Railsの様々なメソッドを覚える

f:id:yoshitokamizato:20190718150148p:plain

見出し7

次に、Ruby on Railsでよく使う各種メソッドについて。 Railsのメソッドといっても色々ありますが、特にall, find, create, update, deleteなどのActiveRecordに用意された基本的なメソッドを理解することは大切です。

 

しかし、それだけではなく、 where, order, group, pluckなど、DBからデータを検索する様々なメソッドについても、しっかり使いこなせるようになっておくことを強くおすすめします。なぜなら、これらのメソッドの使い方がわかってないと「年齢が30歳以上で埼玉県に住んでいるユーザーのデータだけを検索する」みたいな柔軟な条件検索処理が実装できなくなるからです。

 

現場では、DBからデータを検索するということは本当によくやります。 データの全件検索だけでなく、特定のワードだけを含む検索をしたり、取得したデータを特定の値で並び替えて表示したり。 そのような場面で色んなメソッドの使い方を知らないと、柔軟にデータを扱う事ができません。ここら辺のメソッドは、そこまで調査に時間をかけなくてもある程度あたりがつくよう、事前に知識として身につけておくといいです。

 

また、Active Recordの様々なメソッドを用いて最適な処理を実現するためには「SQL」についても知っておくことがとても大事です。 特に、DML(Data Manipulation Language)の1つであるSELECT文はデータを検索するために使用するので優先的に学ぶといいでしょう。それがある程度学習できたら、次は結合や副問合せまでできると理解の幅が広がります。

 

8. デザインに時間をかけすぎない

f:id:yoshitokamizato:20190718150205p:plain

見出し8

もしあなたがRubyやPHP、Javaなどを主要な言語とするサーバーサイドのプログラマーを目指しているなら、正直言ってデザインにはあまり時間をかけない方がいいです。

 

なぜなら、HTML・CSSというのは現場に入ってからいくらでも学べますし、正直、ロジックが書ける人であれば、マークアップ言語に関しては調べながらでもなんとかなるからです。

 

僕も現場に出てからHTML・CSSを本格的に触るようになりましたが、割となんとかなりました。実務でタスクをこなし、上司にコードレビューしていただければいくらでもデザインの部分はできるようになると思うので、初心者のうちから力を入れすぎる必要はないと思います。もちろん、フロントエンドのプログラマーを目指しているのであれば、多少は力を入れて勉強したほうがいいかとは思いますが。

 

加えて、現場ではBootstrapと呼ばれるフロントエンドのフレームワークが使われることがあるので、 CSSやJavaScriptはあまり書かなくてもある程度見た目が整っていて、スマホ画面にも対応したレスポンシブなデザインができます。なので、ポートフォリオを作成する際もBootstrapを活用してある程度デザインの綺麗なWebサイトを作ればそれで十分かと。

 

もちろん、Bootstrapを使用していない、というか、あまり使いたくない現場もあるので、Bootstrapをあてにしすぎるのも問題がありますが、だからと言ってサーバーサイドのエンジニアを目指しているのにCSSやJavaScriptの学習を優先させる必要はありません。それは現場に入ってから必要になったものから学んでいけばいいかと。あくまでも最優先はサーバーサイドの言語です。

 

  • プログラマー(サーバーサイドエンジニア)になりたい人は、Ruby、Ruby on Railsを優先的に学んでポートフォリオのデザインはBootstrapでカバー
  • フロントエンドエンジニアになりたい人は、HTML、CSS、javaScript、フロントエンドのフレームワークを優先的に学ぶ

 

このように、どういうエンジニアになりたいのかで優先すべき学習項目は大きく変わってきます。今一度、自分は本当はどういうエンジニアになりたくて、何を優先して学ぶべきなのかを整理してみるといいでしょう。

 

まとめ

アラサーがプログラマーに転職するために意識すべきことは、できる限り無駄な学習を省き、転職活動の対策をしっかりと練ることや、必要な技術に焦点をあてて学習を進めることです。まずは以下の5つを最優先に学びましょう。

 

  1. プログラマーじゃなければいけない理由を明確にする

  2. 前職の功績を整理する

  3. Webの仕組みを理解する

  4. Git/ GitHub の活用、共同開発の経験を積む

  5. Rubyの基礎文法 を学ぶ

  6. オリジナルのロジックを書く

  7. Ruby on Railsでよく使う各種メソッドを覚える

  8. デザインに時間をかけすぎない

 

これらの技術をしっかりと身につけた上で、RSpecを用いたテストコードの実装やAPI開発、Ajax通信、VueやReactなどのフロントエンドフレームワークとRailsの繋ぎ込み等の応用的な技術を学んでいけば、正直、未経験者としての実力は十分です。例え30代だとしても余裕で転職できるかと。

 

冒頭でもお伝えしましたが、アラサーにはアラサーの戦い方があります。学生や若者のうちは、興味が湧いたものを好きなだけ学んでもいいかもしれませんが、アラサーには遠回りをしている暇はありません。まずはあれこれ手を出さず、学習項目をしっかりと絞って集中して学習に取り組んでいきましょう。

 

 これら8つのポイントを全く無視して学習を進めると、「努力しているのに結果につながらない」なんて悲しい事態を招いてしまいます。我流で進めたい気持ちもわからなくはないですが、できるだけ楽をしたいなら経験者の意見を聞いたほうがいいかと。もちろん、「経験者」というのは僕でなくても大丈夫です。自分が尊敬できる経験者の意見を取り入れ行動していきましょう。

 

というわけで、ぜひ、ポイントを抑えた「正しい努力」を重ねることを意識するようにしてください。 努力は簡単に人を裏切ります。何よりも、正しい努力をすることが結果を出すためには大切となります。できるだけ効率よく転職活動を進めるために、この記事が参考になれば幸いです。