CSを学び続ける姿勢が評価されド文系からソフトウェアエンジニアへ!|Ryoさんインタビュー

今回インタビューさせていただいたのは、ご自身のことを「ド文系」とおっしゃるRyoさん。

Twitterのアイコンが特徴的で、ライトセーバーを振り回してバッサバッサとコーディング問題を切り倒していっているイメージでしたが、文系のご出身とは意外でした。Recursionで学習後、現職の経営企画からソフトウェア部門へと華麗にジョブチェンジされたRyoさんに、Recursionでの学習方法など詳しくお話を伺ってみました。


Ryoさん

Twitter:https://twitter.com/ifavenue1

Recursionプロフィール:https://recursionist.io/dashboard/users/ryo8998

アウトプットが強制的に求められるRecursionでの学習が自分には合っていた

――Ryoさん、インタビューをお受けいただいてありがとうございます。それでは、簡単な経歴とプログラミング経験の有無について教えていただけますか?

Ryoさん(以下敬称略):

大学の専攻は法学部です。私大なので受験で数学を使っていないド文系。理系に進まなかったことを後悔しています。大学卒業後メーカーに事務系で就職し、経営企画業務を10年弱やっています。

非エンジニアのため、業務でのプログラミング経験はもちろんありません。社外でも通用するスキルを付けたいという想いから、独学(本、Udemy等)でPythonを数ヶ月勉強していました。

――Recursionを始めたのはどうしてですか?

Ryo

独学でプログラミングを勉強していたのですが、もやもやの中勉強しているというか、全体感や基礎がないまま進んでいるような感覚を持ち続けていました。そんな中たまたまShinyaさんのツイートが流れてきて、Recursionで学べばプログラミングの土台や基礎が作れると思いその日からすぐ始めました!当時ナイス判断したなと思います。

また、僕は本や動画を見ただけで理解出来た気になってしまうタイプなので、アウトプットが強制的に求められて自分が本当に理解出来ているか分かるとこも魅力的だなと思いました。

――Recursionをどのように利用しているか教えていただけますか?

Ryo

最初は独学で学んでいたPythonでCS基礎を上級まで一周しました。その後、JavaScript、Javaでそれぞれ一周しました。現在は今後の業務を意識してC++に挑戦し始めたところです。

最初の一周は普通にテキストを読んで、問題解いていただけでしたが、知識定着のために、テキストの内容をメモ取りながら勉強する等工夫をしていました。

――1日どれくらい学習していますか?

Ryo

社会人かつ子供がいるので、まとまった時間が取れないのですが、平日は夜1~2時間、休日は子供の昼寝中と夜でだいたい3~5時間くらいやってました。今もおおよそそんな感じです。

――どれを一番注力して勉強していますか?

Ryo

やはり全ての基本となるCS基礎を一番勉強しました。再帰やデータ構造など、本などで読んでもよく分からなかったものが理解できたのがとても嬉しかったです。他の項目だと、デザインパターンは個人的にとても好きでマスターしたいのですが、まだ僕には難しくて、全てはクリアできていません。

――プロジェクトの進捗状況はどうですか?

Ryo

1~4と6は終わりました。Vueコースを一通り終えて、今はDjangoコースに取り組んでいます。ブラックジャックはまだ出来ていないのでいずれ挑戦したいと思っています。

――ポートフォリオを作っていますか?あるならどのような点を意識して作りましたか?

Ryo

ポートフォリオは、他の方と比べると完成度は低いのですが、例えばプロジェクト6はデザインパターンを活用し、オブジェクトに責務を与え、条件分岐をなるべく減らし、機能拡張に柔軟に対応出来るような設計を意識しました。

――Recursion以外の他のサービスを利用しましたか?

Ryo

通勤中のインプットとしてUdemy講座を購入して学んだりしています。あとはRecursionをやり始めて「CSを学ぶには高校数学レベルが必要」と感じたので、スタディサプリで数IA~数Ⅲまで勉強しました。

本については、色々読んだので一部ではありますが、個人的なおすすめは以下です。

  • JavaScript: JavaScript本格入門
  • Java: スッキリ分かるJava入門
  • Django: 現場で使えるDjangoの教科書
  • Java言語で学ぶデザインパターン入門
  • オブジェクト指向のこころ
  • 数学ガールの秘密ノートシリーズ

――Recursion以外にネットワークなどWeb周りの知識を勉強しましたか?

Ryo

はい、基本的なところは以下の本を読んで勉強しました。

  • Web技術の基本
  • Webを支える技術

――Ryoさんはチーム開発にも参加されましたよね。参加してみてどうでしたか?

Ryo

チーム開発はRecursionで学んでいるメンバーとチームを組んで、与えられた課題に取り組む活動です。個人開発では経験出来ない、より実務に近い状況で開発にチャレンジ出来るメリットがあると考えています。

例えば、環境構築は個人であれば自分が開発できれば良いですが、チーム開発だとPCやOSの異なる全員が開発できる環境構築をしなくてはいけません。実際僕のチームもそこでけっこうハマりました。そうするとやはりDocker勉強した方が良いかなとか色々実感できます。

またgitに関しても僕は恥ずかしながら個人だとgithubに草生やすだけにpushしているだけでしたが、チーム開発だとメンバーからのPullRequestをレビューしたり、時にコンフリクトを起こした際の対処など個人では出来ない経験ができます。また、納期も設定されているため、時間と機能のバランスも考えながら開発する必要があります。

このように色々と経験できるチーム開発ですが、一番のメリットは何より楽しいということです。チームで色々議論して、学んで、悩んで、課題をクリア出来た時の爽快感は癖になります。(笑)

Recursionを始めたことで公式ドキュメントが理解できるようになった

――Recursionを始める前と比べて何ができるようになったと感じますか?

Ryo

いずれも絶対値としてはまだまだで、過去の自分と比較して出来るようになったことですが、特に感じるのは以下2点です。

  • 「より良いコード(計算量/可読性等)とは」を考えることが出来るようになった
  • 「ドキュメントやコードを突き詰めて調べていけば理解できるはず」という自信がついた

1つ目については、例えばこれまでだったらforループのネストで無理矢理解くような問題も、一度立ち止まってHashmapは使えないか?と考えるなど、様々なデータ構造を知っているからこその選択肢が増えたと思います。また、関数の分割等DRYも意識するようになりました。

2つ目については、最近Djangoを学んでいますが、ググってすぐ解決しない時はドキュメントをしっかり読むことで解決できることが増えてきました。公式ドキュメントは単語自体が難しいことが多いと思っていましたが、Recursionで一通りCS用語に触れてきたからか段々読めるようになってきました。また、抽象化されたクラスの挙動が分からないときも、OOPを学んだからこそ、大元のコードまで戻り、挙動を理解することが出来るようになったと思います。

CSを学習したことが評価され念願のソフトウェアエンジニアへ

――Ryoさんの転職活動についても教えてください。念願のソフトウェアエンジニアとしての仕事が決まったそうですね。おめでとうございます。新しい業務内容の概要を差し支えない範囲で教えていただけますか?

Ryo

社内でソフトウェア職種公募があり、そこに応募し選考を通過しました。今夏からソフトウェアの職場に異動となります。正式な部署・業務は未定なのですが、母数から考えると組込エンジニアになる可能性が高いです。そうなるとC言語もしくはC++を使うことになります。

――採用試験はどのように行われましたか?また自分のどんなところをアピールしましたか?

Ryo

面接はなく適正試験と書類だけの評価でした。コーディング試験もありません。僕は事務系なので基本的に技術系職場への異動はありません。実は公募も技術系が対象でしたが、これまで学んできたことをしっかりアピールすれば可能性はあると思い挑戦しました。

具体的には以下3点アピールしました。

  • 継続的に学ぶ習慣があり、これからも学び続ける自信がある
  • 単にプログラミングを勉強しているだけでなく、根幹のCSを学んでいる
  • 学んできたことに対する成果物がある(GitHubのURLを書類に記載しました)

――自分のどんなところが評価されたと感じましたか?

Ryo

フィードバックはないので本当のところは分からないのですが、全く違う職場に異動するので、学び続ける姿勢が評価されたのかなと思っています。また、学問として確立されているCSを学んでいることにより、事務系でもついていけると感じてもらえたのかなと考えています。

――今後仕事としてどうしていきたいとお考えですか?

Ryo

僕はこれまで経営に近い場所で業務を行っていたため、新たな職場でソフトウェアのスキルを身につけ、将来的にはソフトウェアを用いたビジネスを創出、社会に新たな価値を提供出来るようなことができれば良いなと考えています。また、いずれは海外で働きたいです。

――最後にRecursionを始めたばかりのユーザーさんに向けて、やっておいた方が良いことをアドバイスしていただけますか?

Ryo

やっておいた方が良いことではないですが、焦らずコツコツ進めることが重要かなと思います。自分への戒めも込めてですが、周りの皆さんが先のコンテンツを進めていると、自分も早くそのコンテンツをやりたいとなって、理解することではなく、進めることが目的になりがちだと思います。

ゆっくりでも理解しながら進めることが、最終的には強いエンジニアへの近道なのかなと思います。

――Ryoさん貴重なお話を聞かせていただいてありがとうございました。