初めてのハッカソンで、運良く最優秀賞を頂けて、色々と感慨深くなった話~プログラミング初心者に届け~
私はプログラミングを始めて3年ほど経ったが、技術はほとんど独学で勉強し、サービス開発も一人で行う期間が長かった。大学の学部は経営学部であるため、プログラミングしている大学の友達はほとんどいなかった。(高田というスーパーエンジニアがいるのは補足しておきたい)
そんな私の数少ないエンジニア友達が太一と大地くんだ。
同僚の太一はRutenで受託開発をこなしたり、私と自社事業の開発をしてきた。私はRutenを創業するタイミングで太一と出会ったことで、技術の話ができたり、わからないところを聞いたり、切磋琢磨できるようになったのが嬉しかった。HHKB買った話とか、Go言語を勉強し始めた話をできるのはもちろん、コードをレビューし合ったり、良い技術記事を共有することで技術力もかなり上がったと思う。
大地くんと出会ったのは大学の後輩であり若手養鶏界のホープである宮崎くんの養鶏所に遊びに行った時のことだった。大地くんは宮崎くんとEggStart社を創業し養鶏の事業を立ち上げるかたわら、フリーランスとしてWeb制作やWebデザインの案件をこなしていた。Web技術の話をしているうちに打ち解けてきて、一緒に釣りに行ったりもした。大地くんは、サーバサイドもこれから勉強していきたいということだったので、私が読んでよかった書籍や勉強法などをオススメしたりした。
太一は受託案件でフロントエンド開発を行なっていて、大地くんはデザインやフロントエンド開発が得意で、私はインフラやサーバサイドが得意だった。私は、「この3人でサービス開発したらスムーズだろうな」と思い、大地くんと太一を引き合わせて、ハッカソンに出ることにした。
一人でプログラミングをしていると考えられない展開だが、情報系の学部に通う学生や、エンジニアのインターンを行なっている学生の間では一般的なできごとっぽい。
3人とも普段の業務があり、あまり多くの時間は割けないということで、1週間で完結するこちらのハッカソンに出ることにした。
初日が土曜日だったため、土日で、
・企画
・最低限機能するアプリケーションの開発
・Firebase Hostingへのデプロイ
の3つを行うことにした。それさえできていれば、週日に作業ができなくても最悪発表はできるからだ。
私の担当であるCloud FunctionsでのAPI開発は、日曜日の26:00に終わった(月曜日の2:00でもある)。
週日は3人で予想していた通り、総じてあまり作業ができなかったが、大地くんは素晴らしいデザインとマークアップの実装をやってくれた。あとは完成度を高めるだけという状態で、開発ができる最終土曜日を迎えた。
土曜日は3人でサービスの完成度を高めた。参加者の方から褒めていただいた、日本地図上にコロナくんをプロットするアルゴリズムはこの日の夜に開発した。その処理が重すぎて、まあまあスペックの高いMacでさえ固まるという事件がおきて、深夜にパフォーマンスチューニングを始めた。十分にパフォーマンスをあげることはできなかったが、スライドも作らねばならないということで諦めた。スライドを作りきって、最後のデプロイを行なったのが土曜日の27:00だった。(日曜日の3:00でもある)
当日は私が発表を行なった。発表後に他の参加者や主催者の方から質問をたくさんいただいた。私はよく考えてお答えした。単純に、私たちが開発したサービスや、実装方法に興味を持ってくれたのが嬉しかった。また、私が他の参加者の方に質問をした時は、みなさん丁寧に、よく考えてお答えしてくれた。これも一人でプログラミングをしていた頃には味わえなかった体験だ。
他の参加者が開発されたプロダクトの中には、技術力の高さをうかがえるものや、ユニークな技術を用いているものや、デザインが考え込まれているものがあった。
発表直前に、大地くんと2人で
「多分、最優秀賞はあのチームじゃない?」とか、
「今度はもっと戦略的に賞を狙いに行きたいね」とか、
「自分たちよりすごいエンジニアはたくさんいるんだなあ」とか、
そういうことを話していた。
賞が発表される瞬間も、受賞するかもという思いは全くなく、緊張感もなかった。
結果として最優秀賞を頂けたのは運が良かったとしか思えないのだが、一部の参加者の方がアイデア票と技術票を入れてくれたことは多少の自信に繋がった。私が、(あるチームが実装した)IoTで洗濯機を制御する技術がすごいと思ったのと同様に、(私たちが実装した)地図の上にキャラクターをプロットする技術をすごいと思ってくれた方がいたのだ!
こうやって評価してもらえるのも、一人でプログラミングしていた頃にはなかった体験だ。
初めてのハッカソンで学んだことは3つある。
1. 仲間と出会うことの大切さ
2. 時間が限られていても粘り強くやり抜くことの大切さ
3. 技術力とはユニークネスであるということ
すごく当たり前のことを、肌身で感じた。この3つを学んだことはこれから技術を勉強していったり、サービス開発をしていく上でいい方向に働くと思う。
プログラミングを始めたばかりの方には、文字面から受け取る印象以上にこれらが自身の成長にとって重要であるということをお伝えしたい。
また、これらのことを学ばせていただいたチームの太一と大地君、そしてハッカソンを主催されたレッドインパルスさんや、協賛のeF-4さん、協力のGoogle Developers Group (GDG) Tokyoさんに感謝します。
なお、ハッカソンで使用した技術や、サービスの具体的な内容については以下に書いております。