はじめに
⭐️こんな方に読んでほしい
現在、ITスクールのRareTECHで勉強しています。
RareTECHを選んだ理由の一つが「ハッカソンに参加できる」でした。
8月からRareTECHに入り、夏のハッカソン(RareTECHでは年に4回ハッカソンが開催されます)を見学させてもらうと、参加している方がほとんどIT未経験なのに堂々と作ったアプリを発表しているのに感銘を受けました。
秋のハッカソン(10〜11月開催)に参加したい!と思い、参加してきました。
初心者でもどうにかなりました!(色々苦労はありましたが、なんとか完走!)
これからIT未経験でハッカソンに参加しようと思っている方に向けて、初心者がつまずいたポイントを書いていくので、これからハッカソンに参加しようと思っている方、ITの勉強を始めたばかりの方に参考にしていただけたら嬉しいです。
ハッカソンとは?
初心者でハッカソンに参加するメリットを一言でまとめると、チーム開発の経験ができることです。
今回参加したハッカソンは「入門」レベルであり、「チャットアプリ」というお題に沿ったものを作ること、運営が用意したサンプルアプリが参考にできるのですが、コピペ禁止、AI使用禁止、指定された技術のみ使用、となります。
ハッカソンとは、ハック(hack)とマラソン(marathon)を組み合わせた造語とされ、 プログラマーや設計者などのソフトウェア開発の関係者が、 短期間に集中的に開発作業を行うイベントのことです。ハッカーのためのマラソンという意味合いもあります。
メンバー顔合わせ
オンラインでメンバー顔合わせです。
オンラインで打ち合わせは初めてだったので正直なところめちゃめちゃ緊張していました。最初の1回目は決めることがたくさんあり、とても大事です。
自己紹介、ポジション決めが決まり、作りたいアプリの打ち合わせをしました。
アプリのテーマ選定、ペルソナの決定、MVP機能の決定、追加機能の案出し、次回MTGまでの作業分担、今後の情報共有のためのドキュメントの整備方法…etc。
終わった時は開始から2時間立っており、すでに息切れしそうでした・・・。
ペルソナ:アプリを使用する具体的なユーザーの人物像を設定したものです。
MVP:Minimum Viable Productの単語の頭文字をとり、必要最低限の機能を備えたプロダクトのことです。
アプリの要件定義
アプリを作る前に要件定義が必要です。要件定義には以下の設計を行います。
- 機能の決定(MVP、追加機能)
- URL設計
- 画面遷移図
- デザイン
- データベース図
設計と並行して、以下も行いました。
- 各人でこれから使う技術の勉強
- GitHubなどのチーム開発に必要なものの準備
これらを2週間で決めてしまうのですが、この2週間が一番大変でした。
特に苦戦したのがアプリ機能の認識のすり合わせです。
私たちは「読書好きのためのチャットアプリ」というテーマで考えていたのですが、
「A:チャンネルの参加履歴をみれるようにする」もしくは「B:チャンネルをお気に入り登録にできるようにする」という2点で意見が分かれました。
当初、Aの予定で進めていたため、Bに変更するとなると、すでに完成しているURL設計やデータベース図も変更せざるを得なくなります。
設計に落とし込む期間が短ければ短いほど開発の期間が長く取れるので、スケジュールを優先したいが、アプリ仕様・設計を妥協したくない、という気持ちとの兼ね合いが難しかったです。
今回のハッカソンは「チーム開発の経験を積むこと」「技術のキャッチアップをすること」が主な目的であったので、結果的にスケジュールを優先させていただき、提案していただいたメンバーには当初のA案のままということで妥協をしていただきました。
ここを突き詰めて検討できなかったことは少し悔いが残りましたが、メンバーが全員初心者だったため、作業見積もりの予測も難しく、手戻りが少ない方を優先させていただきました。
Slackは長文の議論の渦でした。仕事が終わってPCを開いて議論を追っかけて返信していく・・・、そんな日々でした。苦しくも感じましたがメンバーの皆さんが本気で考え、それぞれの意見を出し合い、共通認識をしっかり持てたことが、次の開発フェーズで生きてきました。
開発期間
メンバーの協力もあって、スケジュール通りに開発を始めることができました。
始めたのはいいものの、開始後、なかなかプルリクエストが投げられてこない・・・。
初心者ばかりのチームのため、いつのタイミングで投げたらいいかわからなかったみたいです。
心理的安全性の確保も兼ねて、作業途中でも自分から進んで投げるようにしました。1回やれば、メンバーもコツを掴んで慣れたのかどんどん投げ出しました。
心理的安全性とは?
メンバーが自分の意見や気持ちを安心して表現できる状態のことです。
プルリクエストはいつのタイミングがいいの?
現エンジニア(夫)に聞いたら、「初心者なんだからいつのタイミングでしてもいいんじゃない?というかレビューできるの?」という返答でした。アプリを完成させて、見返してやろうと思った瞬間でもあります。
そこから早かったです。一気に進みました。
わからないところや進捗状況に応じてお互いにカバーし合いながら、難しい箇所も仕上げることができ、最終発表までに予定していた機能を全て完成させることができました。
最終発表
最終発表はデモがあります。
デモでは、実際に作ったアプリを動かします。
最終発表の前日に、発表担当のメンバーがリハーサルをしてくれたのですが、アプリの中にしっかりデータ(仮の読書好きの方達の会話)が入れられていて、本当に稼働しているアプリのようだったので感動しました。
自分だったら、「テスト」とかの適当なデータを入れて動きだけ見せそうです。
見ている方がどのように使うか想像しやすいように、最後まで手を抜かない姿勢に助けられました。
夫(現エンジニア)に披露したら、「初心者でもここまでできるの!?すごいね〜」という言葉をもらいました。嬉しい!!
完走した感想
終わった時、「次のハッカソンにまた参加する!」というポジティブな気持ちが一番に出てきました。
大変だったけど、一緒に走ってくれるメンバーがいたのでとても楽しかったです。
睡眠不足とはお友達になりますが、2ヶ月の期間限定なので、迷っている方は思い切って参加してみるのがいいです!
良くも悪くも2ヶ月で終わります。
主に学んだこと
ハッカソンの参加目的は、「技術の習得のため」が第一目的であるため、とにかく要件定義を早く終わらせることが大切かなと思います。
早さは何にでも正義です。
もちろん現場では手戻りや修正があることは当たり前ですが、ハッカソンにコミットできる時間は限られています。始まってから最初の2週間が一番の勝負どころと感じました。
自分はチームリーダーを担当させていただいたので、どうやったらメンバー同士のコミュニケーションが取れるか、共通認識を持てるか、心理的安全性を確保できるか、複数人での作業の進め方、スケジュール管理はどうするか・・・など、技術のキャッチアップとは違った、ソフトスキル面についても学ぶことができた、と思います。
マネジメント、と言えるほどではないですが、チームの進行役としての役は果たせました。
これも、とっっっっっっっっても協力的だったメンバーのおかげです。
みなさん人が良すぎです。
最後まで読んでいただきありがとうございました!
ハッカソンの中でキャッチアップできた内容は、後日記事にしていきます。
💡心理的安全性については、1冊だけ書籍を買って目を通しました。
最高のチームはみんな使っている 心理的安全性をつくる言葉55
すぐ使える言葉がたくさん載っていました。