Just do IT

思うは招く

チーム開発課題を終えたので振り返る

僕は「フィヨルドブートキャンプ」というプログラミングを学ぶサービスに参加している。そこではチーム開発(Rails)の課題がある。GitHubを使用し、実際にサービスとして運営されているEラーニングシステムを開発する。

今回、チーム開発課題を終えたので振り返る。

やったこと

具体的にはこちら。

Issues PRs
JCBカードが使えるようになったので文言追加したい JCBカードが使えるという文言を追加
Q&Aの「解決にする」ボタンを「ベストアンサーにする」ボタンに変える Q&Aの「解決にする」ボタンを「ベストアンサーにする」ボタンに変える
提出物一覧のユーザーアイコンにroleを示す枠線が出ていない 提出物一覧のユーザーアイコンにroleを示す枠線を表示
プラクティスにメンター向けのメモ欄を追加したい プラクティスにメンター向けのメモ欄を追加したい
WIPの提出物をダッシュボードに表示したい WIPの提出物をダッシュボードに表示
Docsテーブルをマイグレーションする Docsに表示する情報を増やす前にマイグレーションとタスクを先に実行する
Docsに表示する情報を増やしてほしい Docsに表示する情報を増やす
参考書籍の一覧が欲しい 参考書籍の一覧が欲しい
参考書籍にリンクと画像を追加したい 参考書籍にリンクと画像を追加

取り組んだ作業をざっくりいうと、以下のとおり。

  • かんたんな文言修正
  • 既存の機能にあらたに機能を追加
  • ゼロから新機能を追加

どのように進めたか

  • まず実装後のイメージをすり合わせる
  • ポモドーロ・テクニックを使ってタスクを進める

まず実装後のイメージをすり合わせる

「どんなものを作ったらいいか」を早めに確認するようにしていた。

今までの仕事の経験から、仕事が遅れる理由のひとつは「出戻り」だと思っている。せっかく仕事をしても、上長に「うーん、これ思ってたんと違うわぁ」と言われたら時間のムダだ。

「こんなものを作ろうと思ってますが、どうですか?イメージとはあっていますか?」と、Issueにアサインされた時に確認するようにしていた。

ポモドーロ・テクニックを使ってタスクを進める

チーム開発に限ったことではないが、普段からポモドーロテクニックを使ってタスクを進めている。

ポモドーロを使うことで、以下のメリットがあると考えている。

  • 強制的に休憩が始まるので、ずっと同じ部分で悩んでいた場合にすぐ気づける
  • ズルズルと迷路に迷わず、「これ質問したほうが早いやん!」という考えを持つことができる
  • 作業時間が可視化されるので、「自分これだけやったんだな〜」とモチベーションアップにつながる
  • 過集中を防ぐ

どれくらいの期間かかったのか

チーム開発課題は3ヶ月で終えた。期間は人それぞれで、1ヶ月で終わる人もいれば、3〜4ヶ月かかる人もいる。

実は、期間中に第2子が生まれ、育児をしながらの開発となった。「まぁ2人目だし、ある程度慣れてるし、なんとかなるっしょ」と思っていたが、全然なんとかならなかった😇

まず、作業時間があきらかに減った。抱っこをしながらスタンディングデスクで開発することもしばしば。赤ちゃんがギャン泣きして、自分の開発が思うように進まないときは、正直しんどかった。

しかし、「もしかして、これが終わったら自分は鋼のメンタルを手に入れちゃうんじゃないの・・・?😎」と考えるようにした。終わった今、鋼メンタルではないが、自分の中で「困難」を「チャレンジ」に咀嚼できたかなとは思う。

どんなことに苦労したか

初めてのチーム開発だったので、いろいろ苦労した。具体的には次のとおり。

  • ネストしたフォームの作成
  • 外部APIの利用
  • 外部APIと通信する箇所のテスト
    • モック、スタブ
    • webmock gem の使い方

これらに関しては学びが多いため、個別記事で振り返っている。

k-koh.hatenablog.com k-koh.hatenablog.com

今後は外部APIの利用やテストについても振り返りの記事を書く予定です。

わからないときにどうしたか

「あ、自分は今詰まってるな〜」とわかったときは、大きく分けて以下のことをした。

  • まず基本に立ち返る
  • 一人で悩まず、すぐに質問&相談する

まず基本に立ち返る

いろいろ勉強してきたとはいえ、まだRailsでの開発経験は少ない。基礎知識の不足が理由で詰まっている場合も多かった。

そんな場合、以下の書籍をよく読み返していた。

一人で悩まず、すぐに質問&相談する

詰まりそうになったら、メンターさんや先輩エンジニアにガンガン質問していた。

フィヨルドブートキャンプでは、毎日ビデオチャットで質問できる時間帯がある。育児で参加できない以外、積極的に参加した。新機能を開発中のときは、ほぼ毎日参加して質問していた。

学び

チーム開発課題を通して、多くのことを学んだ。

  • Git/GitHub操作
  • テキストコミュニケーション
  • Railsでの開発
  • テスト
  • Vue.js
  • などなど

なにより、実際に運営されているサービスを開発するため、「これは仕事なんだ・・・!」と気合が入る。テストもしっかり書かなければいけない。

当然、メンターさんのレビューも他の課題より厳しめになる。「レビュー ⇔ 修正」を何度も繰り返したこともあった。

感想

プログラマとして仕事を進めるための「総合的な基礎」が身についたと感じている。育児と並行してできたのも自信につながった。