書きたいことは結構あって、
時間もそれなりにあるはずなんですが、
こうも更新できないのはなぜなんでしょう?笑
今回は、もはや結構昔のことになりつつありますが
参加したハッカソンについて書いてみます。
ハッカソン(英語: hackathon、別名:hack day,hackfest,codefest)とはソフトウェア開発分野のプログラマやグラフィックデザイナー、ユーザインタフェース設計者、プロジェクトマネージャらが集中的に共同作業をするソフトウェア関連プロジェクトのイベントである。 時にはハードウェアコンポーネントが扱われることもある。ハッカソンは一般的に最低限1日から一週間の期間で開催される。いくつかのハッカソンは単に教育 や社会的な目的を意図に開催されるが、多くの場合使用に耐えるソフトウェアの開発や既存のソフトウェアを改善することを目標としている。
– Wikipediaより
インターンしている部署で
「ボクらの考えていること/データサイエンスはすごいんだぞー」
ということを周りの部署に知らしめるために 笑
7月22日23日に開催されました。
Data Hackathon
実はボクもハッカソン参加するのは初めてなので、
ハッカソンの一般的な進行はよく知らないのですが、
ボクらのやったData Hackathonでは
事前にアイディアを投稿して、それを見た人達が「ボク/ワタシも混ぜてー」
という感じでチームを組んでおいて、
22日の朝9時に「よーい、どん」で開発始めて
23日の朝10時からデモという流れでした。
その間、ボクを含め多くの参加者は仕事をしません 笑
チームは定員5名までで、最終的には12チームが参加しました。
ボクが部署に入った時点で既に結構アイディアが出ていて、
これから面白そうなアイディアを考えてチームに人々をリクルートして…
は結構難しい気がしたので、
既にあるアイディアを見て面白そうなチームに話を聞いて
参加させてもらえそうなら参加するという作戦にしました。
チーム
前にも少し書きましたが、参加したのはエフレイムのチームで
あまり詳細は書けませんが、
タックスの製品に対して、新しいアプローチを使って
「へへー、オレらならもっとうまくできるよーだ」
と言うというプロジェクトでした。笑
ボクが加入する前は
エフレイム(ハーバードPhd卒)、ジョイ(MIT Phd卒)
という二人のデータサイエンティストのチームで、
バックエンドはいけるけどフロントの経験ある人がいない状態で、
フロントの開発ができる人を探していました。
ソフトウェア設計におけるフロントエンドは、ユーザーと直接やりとりするソフトウェアシステムの部分を指し、バックエンドはフロントエンドへの出力を生成する部分を指す。
– Wikipediaより
ボクもウェブのフロントエンドの開発は全く経験なかったので
結構不安だったのですが、まぁ最悪できなかった時は
「まぁ仕方ないっすよね、自分インターンだし、そもそもMBAっすから」
で笑っておけばいっかということで 笑
フロントエンドの開発担当を引き受けることにしました。
いやぁ、まさかMBAインターンでコーディングすることになるとは 笑
事前準備
とりあえずさすがに知識ゼロでハッカソンに臨むのは無謀だろうということで
その前の週末を使ってhtmlとcssのキャッチアップをなんとなく行い、
「ほう、よく風の噂に聞いてたMVCってこういうことだったのねー」
と今さら思ったりしながら準備をしました。笑
javascriptもなんとなくキャッチアップしましたが、
見た感じjavaと大して変わらなそうだったので
「まぁ当日覚えればいっか」ということで大部分は無知のまま
当日を迎えることにしました。…これは大誤算だったのですが 笑
当日
そして当日。
ハッカソン開始は9時ですが、8時から朝食バイキングだったので
8時にオフィスに行って、朝食をほおばりながら
「あ、そういえばオレ今までウェブフロントの開発したことないから、
きっと大丈夫だと思うけど」
と言ってみるとジョイ爆笑、エフレイムは笑顔が引きつる 笑
さすがに脅し過ぎた気がしたので、エフレイムには
「ウェブじゃないフロントはやったことあるから
ユーザーインターフェイスやユーザーエクスペリエンスは
素人に毛が生えた程度にはわかるよ」と伝えるも
彼の不安は払拭されず 笑
そして9時の開始と同時にミーティングルーム一つを貸し切り
まずはホワイトボードにMVPとストレッチのスペックを
話し合いながら書いていきます。
書き切ったら、おおまかな達成のタイムラインを引いて
その時間にお互い進捗をチェックしようという話をし、
開発開始。
…ボクは勝手なイメージで、
こういうのって、開発期間一日だし、
ワイヤーフレーム作ってこういう理論でこういうことができますっていう
紙芝居をするんだと思ってましたが、
ガチでインフラ整備から始めてバックエンドは完全に実装してました。笑
午前9時に始めてバックエンドのMVPは午後3時くらいには出来上がっていて
そこからがんがんストレッチ目標に向かって進んでました。
一方のフロントはというと、外身は12時くらいまでに出来上がったのですが
バックエンドとのやりとり部分に関してjavascriptのキャッチアップで手こずり、
午後7時くらいにやっと動作パターン3つのうち2つができるようになった
という感じでした。
で、大体チームとしては午後8時くらいに解散し、
ボクはもうちょい残って最後の1パターンを勘で書き
(エフレイムのみがサーバーの権限持っていたので、実行テストはできない)
見た目の整理をちょちょっと行い9時にオフィスを出ました。
で、翌日朝7時半にオフィスに着いて
エフレイムにサーバーにソースを配置してもらって
どきどきしながら実行テストをしたところ、
予想は的中で、全く動かなくなり、笑
「昔はこんなことよくあったなー」と前職の新人時代を懐かしみながら 笑
デバッグしてると、案の定ボクが前日の夜にソースをコミットするときに
一個のファンクションを丸々消していることが判明 笑
いやぁ、差分チェックはちゃんとやんなきゃだめですねー
と思いながら修正し、再度実行してみると
再度意図した挙動が起きなかったので、
再度デバッグして、前日の夜勘で書いたソースを書き直す。
そうこうしているうちにデモ10分前になり、
ようやくフロントはデモシナリオが通るようになり
エフレイムに「フロントできたよー」って言ってみたら
今度はバックエンドでトラブル発生。
これまた詳しくは書けませんが、
ストレッチでひいていた目標の一つの機能に
インフラ上の制約があったことがわかり、
特になくても問題ないよねー/10分じゃどうしようもないよねー
ということで、その機能は削りました。
ということで、全体がDemo Readyになったのはデモの5分前という
なかなかスリリングなハッカソンのど真ん中の体験をしました。笑
ちなみにボクらのチームのアイディアは結構斬新かつ実践的だし
かつデモもそのアイディアをクリアに伝えられるデモシナリオだなー
と思っていて、かつ実際のデモも滞りなく進められたので
結構結果には期待をしていたのですが、
2チーム程、アイディアもデモも激しいチームがいて、完敗でした 笑
本当の仕事の方のチームメンバーのイリア、ロハンのチームと
ベイン出のレベルアップの元VPブライアンのチームです。
しかもブライアンのチームはテーマがタックスと
ボクらとかぶっていたので余計悔しかったです 笑
People’s Choice Awardはイリア/ロハンのチームが
Winnerはボクはあまり凄さが分からなかったチームが
それぞれ選ばれていました。
デモが終わった後のクロージングランチで
このプロジェクトの今後のピッチのアイディアを
エフレイムと話し合って次がありそうな雰囲気が出てたので
また、何か面白いことができるかもしれません。笑
雑感
とりあえずハッカソン、参加して良かったです。
なんかミーハーですが、
ザ・シリコンバレーな感じのイベントでしたし 笑
自分のチーム含め、参加チームのアイディアはどれも激しかったですし
(何個かあったHadoop周りのアイディアはちょっとテクニカル過ぎて
もはや何してるのかもよくわかりませでしたが 笑)
しかもそのアイディアを、
紙芝居じゃなく実際に動くとこまで一日で持っていってて
鳥肌立つ系のデモが結構ありました。
あとはせせこましい考えですが、
何気にウェブフロントの開発が経験できちゃったのはおいしかったです。
実際一社で面接で、ウェブフロントの開発経験聞かれたことありましたし
(当時は「ないけどきっとできるっすー」と答えて落ちてました 笑)
今の部署での仕事という面でも
「MBAの前はソフトウェアエンジニアだったんですよー」というより
実際ゼロからキャッチアップして開発をやってみせたことで
「こいつは、タダのMBAじゃないんだなー」
というのを実感してもらうきっかけになった気がします 笑
何度か書いてますが、エンジニア的には
タダのMBA=ウザイ
エンジニアリングのわかるMBA=アツい
なので、エンジニアと一緒に働くMBAにとって
「エンジニアリングのわかる」というブランディングは大事です 笑
そして実はハッカソンに参加した一番の目的は、
参加者全員にもらえるハッカソンTシャツだった
(ideaのロゴがかっこいいのです!)ので
エフレイムのチームに入れてもらえた時点で
目的の大半は果たせていました 笑
ということで、ハッカソンでした。