Recursionチーム開発で得たものとは?コンピュータサイエンスだけではない大事なこと

今回はRecursionのチーム開発に参加されたmaxさんに、コンピュータサイエンスの学習で意識したことや実践したことについてインタビューを行いました。

  • Recursionのチーム開発に興味がある
  • Recursionの活用方法がよくわからない
  • Recursionの学習で気をつけることが知りたい

そんな方にmaxさんの成功体験をお伝えします。

Recursionユーザー max

maxさん

大学では国際関係学を専攻。4月からSIerにてSEとして勤務予定。入社準備期間にコンピュータサイエンスを学習し、チーム開発を経験。

Recursionの学習ロードマップに沿って一歩ずつ着実にステップアップ

――maxさん、インタビューをお受けいただいてありがとうございます。早速ですが、経歴とプログラミング経験についてお聞かせください。

大学では国際関係学を専攻していて、ゼミでは東アジアの政治経済、主に中国のスタートアップエコシステムについて学んでいます。22年4月からSIerにてSEとして働くことになりました。

プログラミング経験については、ProgateでHTML, CSS, PHPを学んだことがあります。その他にはStanford Universityが主催していたcode in place(以下CIP)という5週間のPython学習プログラムに参加して、Pythonの基礎を学んだ後、簡単なプロジェクトを作成した経験があります。

――Recursionを始めたのはいつ頃ですか?またその理由は何ですか?

昨年5月からRecursionを始めました。始めた理由は、CIPでプログラミングに興味をもち、さらに学習したいと思ったからです。また、今年4月からはSEとして働くので、コンピュータサイエンスの知識を身につけておきたかったからです。

――Recursionをどのように利用されていますか?また進捗状況も教えてください。

コンピュータサイエンス基礎「上級」が98%まで終わっています。他にはコンピュータサイエンスプロジェクト3とVue.jsのCar Ecommerceまで終わりました。

1日あたりの学習時間は、多い時で10時間ほど。少ない時は30分から1時間くらいですが、日によっては全くできないこともあります。

――どの項目を一番学習しましたか?

プロジェクトの完成度に大きく関係すると思いましたので、フロントエンドを最初は学習しました。

――コンテンツはどのように学習しましたか?

基本的には学習ロードマップに沿って学習を進めていました。その中でより学習を深めたい言語や概念があればYouTubeだったり、Udemyで補強していきました。Recursionの進め方はレイナさんのツイートを参考にしました。

――ポートフォリオは作っていますか?もしあればその完成度と作成時に意識したことを教えてください。

Recursionのプロジェクト3のClicker Empire Game をポートフォリオとして用意しています。作成時に意識したのは、自分で利用し、適宜バグを修正することで、ちゃんとゲームとして成り立つようにしたことです。また、関数の役割を分けることも考えて作りました。

Recursionのチーム開発に参加して良かったのは、ユーザー同士で交流を持てたこと

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

Recursionのチーム開発では得るものが非常に多かったです。主に以下の3点です。

  • Gitを用いたコード管理
  • チームでの働き方
  • ユーザーとの交流

チーム開発に参加するまでは、GitやGitHubの使い方を知りませんでした。チーム開発を通じてこれらの使い方を学べたのは大きかったです。最近では個人での開発においてもGitやGitHubを使用するようになりました。

次にチームでの働き方に関しては、他の人のコードの書き方を学べるだけでなく、協働を通して自分の働き方やチームメイトとの接し方のようなコンピュータサイエンス以外のことにも、気付きを得ることができました。こういった取り組み方や性格というのは働き始めてからも大切になると思うので、チーム開発で経験できたのは良かったです。

それから、ユーザーとの交流はチーム開発に参加して一番良かったと感じている部分です。同じように学習に励んでいる人と知り合うことができて刺激になると同時に、チーム開発が終わった後でも同じチームで開発をするなど仕事や大学以外で関係を構築できたのは貴重な経験だと思いました。

画像をクリックすると拡大することができます

概要

プレイヤーが交代で上からボールを積み上げて行き、相手よりも先に直線(縦、横、斜め)に4つのボールを並べた方が勝ちとなるゲームです。モンテカルロ木探索アルゴリズムを実装し、CPUが最適な手を選択できるようにしたり、勝利判定時の計算量を削減し無駄がないようにしました。

成果物URLhttps://teame-connect4.vercel.app/

Recursionで作成したコンピュータサイエンスプロジェクトに見る成長の証

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

そうですね。Recursionを始める前に作ったプロジェクトと、Recursionで作ったプロジェクトで比較してみてください。

Recursionを始める前のプロジェクト

https://codeinplace.stanford.edu/2021/showcase/1496

概要:

「ツェラーの公式」という西暦の年・月・日から、その日が何曜日であるかを算式をコードによって実現したものです。ユーザーに自分の誕生日を入れてもらって、その誕生日の曜日を当てるという意図で作りました。

Recursionで学習中のプロジェクト

https://clicker-empire-game-six.vercel.app/

概要

このゲームの目的は一攫千金を目指して、街に帝国を築くことです。あなたは現在20歳で、ファーストフード店でハンバーガーを焼く仕事をしており、ハンバーガーをひっくり返すごとに25円稼ぐことができます。お金を貯めることによって、アップグレード、投資、あるいは、不動産の購入をすることができます。 最初の時点であなたは5万円を持っていて、グリル(ハンバーガー)をクリックすると25円獲得できます。また、あなたはゲーム内で様々なアイテムを購入することができ、アイテムによっては 1日(1秒)につき収入が入るものもあります。

Recursionを始める前と後の差

一番の違いは、DRY、可読性だと思います。

Recursionを始める前は、DRYのようなコーディングの基礎が全くなっておらず、可読性の低い、デバッグのしにくいハードコードしか書けませんでした。それにフロントエンドの知識が全くなかったためコンソール上で動くものしか作れませんでした。

しかしRecursionでコンピュータサイエンスを学んでからはDRYや可読性を意識してコードを書けるようになりましたし、フロントエンドの知識もついたので、インタラクティブなWebアプリケーションを作成できるようになりました。

もちろんまだまだ初心者の域を抜け出せていないので、引き続きRecursionで学習を進めたいと思います。具体的にはリファクタリングや再利用性を意識したコードを書けるようになりたいので、OOP(オブジェクト指向プログラミング)やデザインパターンを学習したいです。

Recursionを始めたばかりのユーザーへのアドバイス

――まだRecursionを始めたばかりのユーザーにむけて、やっておいた方が良いことや学習で意識したことなどアドバイスをいただけますか?

まずは、とにかく手を動かすことです。難しく読んでも理解できないときはとりあえずコードを書いたり、紙に書き出したり図式化したりしていると徐々になれてきます。

それから、コンピュータサイエンスプロジェクトに取り組んでみることですね。始めたばかりのときは「プロジェクトなんて手に負えない」と思い、データ構造やアルゴリズムに関するコーディング問題ばかり進めていました。しかし一度プロジェクトに挑戦してみると、基本コースとは違う楽しさ、達成感がありました。それだけでなく、自分で1から考えてコーディングすることで、終了後は大きく成長できたと実感しました。

Recursionの基本コースをある程度進めている人ならば、プロジェクト1~3を自力で完成させられると思うので、ぜひ早めに挑戦することをおすすめします。

――maxさん。大変嬉しい話を聞かせていただいてありがとうございました。4月からSEとして働かれるそうですね。今後のご活躍を期待しています。