クローズドなコミュニティ内で行われたハッカソンに参加してきました。
ハッカソンは短期間(短時間)で要件定義から実装までを行うイベントです。
ハッカソンに参加することになったきっかけは「要件定義から実装までを経験したい」とコミュニティ内で手を挙げたことからです。
「じゃあ、今度ハッカソンやるから参加しなよ!」
という流れで参加させて頂きました。
ハッカソンとは?
ハッカソンとは、ハック(hack)とマラソン(marathon)を組み合わせた造語とされています。
具体的に言うと、プログラマーや設計者などのソフトウェア開発の関係者が、短期間で集中的に開発作業を行うイベントのことです。
どんな人が参加していたのか?
・IT業界の転職を目指している未経験者
・CSSしか触ったことのないフロントの方
・Javaのバックエンドエンジニア
・Nuxtのフロントエンジニア
などでした。
持っているスキルや経験はバラバラでした。
私の参加したハッカソンはプロダクトを作り上げること自体が目的ではなく、経験を積んで今の自分よりも成長することを重要視していたので、色んなキャリアの方が参加されていました。
どんなことをしたのか?
1日目:設計
2日目:実装
というように分けて行われました。
1日目:設計
要件はある程度決まっており、それに自分達で肉付けする形で顧客想定の方に質疑応答しながら設計書を作成していくのが1日目でした。
私たちのチームは設計工程で、画面設計書、ER図を作成しました。
3時間くらいで要件を満たす画面と必要なDB設計を行い、まず設計時点で発表を行いました。
他のチームはDB定義書を結構細かく作成していて、細かい作業が得意な人がいるんだろうなと思わせられました。
2日間が終わってからの発表ではなく
・工程で切って行ったこと
・他のチームの内容もみることができたこと
・顧客想定の方から顧客目線でのレビューを頂けたこと
で自分たちの設計がどの程度の出来なのか、他のチームはどのようなことを考慮しているのかなどを知ることができ、知見の獲得に役立ちました。
2日目:実装
設計を元に開発を始める工程になります。
連日ではなく別日で設定されたため、環境構築までは進めてOKということで始められました。
私たちのチームはフロントをNuxtで実装するということだったので、バックエンド担当の私は事前にSpringBootでRestAPIを実装する方法を調べておけたのが良かったです。
「大体こんな感じか~」
と雰囲気だけつかんで、H2(インメモリDB)の設定だけ進めて本番に臨んだところ、久々のSpringの実装だったこともあり、O/Rマッパー回りで結構苦戦。。。
チームメンバーと話し合って、DB接続周りの実装は無しにして、バックエンドからは固定のJSONだけを返すようし、顧客想定者には画面の操作感で要件を満たしていることを説明する想定で臨むように切り替えました。
半分を切ったくらいの時間で切り替えができたので、残りの時間でなんとか最低限必要な画面の実装を完了させることができたのは良かった点でした。
他のリームもDB周りに苦戦していたようで、バックエンドの実装はできないままモック(画面)のみで発表していました。
今回はいつもより画面数が多い要件ということもあり、時間が足りない中で発表にこぎつけるために軌道修正したのは良い判断だったと評価して頂きました。
開発現場でも納期ありきなので、時間と成果物のトレードオフという考えを実践することができたのは貴重でした。
募集しているところは?
このようなハッカソンの参加者を募集しているところは探せば色々あると思います。
表立ってやっているところは以下のようなところで検索できます。
Tech Play
https://techplay.jp/tag/hackathon
Doorkeeper
https://www.doorkeeper.jp/topics/hackathon/events
あとは私が参加したようなクローズドなコミュニティ内での開催や、社内ハッカソンなどがあります。
自分のレベルに合わせて色々探してみることをお奨めします。
結果に関わらず、何かに挑戦するということが成長につながるので(^^
アイデアソンとの違い
アイデアソンとは「アイデア」と「マラソン」を掛け合わせた造語です。
ハッカソンと同じように決められた時間の中でグループごとにアイデアを出し合い、ブラッシュアップさせてその結果を競うイベントです。
多様な人とディスカッションすることで発想が広がり、特定のテーマに対する良質なアイデアを創出できることから、新規事業開発やオープンイノベーションの現場で広く活用されています。
ハッカソンが実際のプロダクトを作成することに対して、アイデアソンは事業の問題解決のためのアイデアを出し合います。
エンジニアはシステムを作ることでビジネスの問題を解決しますが、事業者やマーケター、セールスマンはアイデアを出すことでビジネスの問題を解決します。
事業の問題を解決するという目的は同じで、アプローチするポイントが違うということですね。
エンジニアの方でも事業創出やビジネス視点での問題解決に興味がある場合はアイデアソンに参加されるとよいです。
新たな気づきを得られ、エンジニアとしての幅が広がるはずです。
まとめ
- ハッカソンは短期間で集中的に開発作業を行うイベントのこと
- オープンなハッカソンはTech Playなどで探せる
- アイデアソンはアイデアで事業問題を解決するもの
- エンジニアとして成長するためにハッカソンに挑戦する