どうも、ウェブ系ウシジマくんです。
先日、Twitterでこんなツイートをしました。
Day_50:#100DaysOfCode
✅validation周りのspec作成
✅基礎から学ぶvue.jsを流し読みスピード感のあるコーディング感覚を養うため、土日は一人ハッカソンを実施します。
テーマは現在個人開発しているQiia_clone。
そして気づいたら100Dayscode折り返し!
ここから先はアウトプットの鬼になる。
— ウェブ系ウシジマくん@リモート専門エンジニア (@web_ushizima) August 10, 2018
ここ最近、自分のコーディングスピードが遅いことを痛感していたため、時間制限のあるハッカソンを行うことでスキルアップに繋がればいいなと思ったので実施した形です。
結論としては、取り組んだことで、次のような経験値を貯めることができたかなと。
- 問題の切り分けについて
- 機能実装の際、やること・やらないことの取捨選択
- 自分の弱点について明確化
という訳で一人ハッカソンをやってみた感想をKPT形式で振り返ってみようと思います。
ハッカソンとは?
本題に移る前に、
「ハッカソンってなに?」
と思うかもしれないので、ちょこっと解説しておきます。
ハッカソンとは、プログラミングをするという意味の「Hack」と耐久レースという意味の「Marathon」を組み合わせた言葉です。
簡単に言えば、プログラミングの耐久レースのこと。
ハッカソンの場合は、テーマを決めて開発していくことになりますね。
【Keep:継続して取り組んでいきたいこと】
一人ハッカソン当日の朝。
現在早朝6:30、この時間に目覚ましなしでおきれたのは久しぶり。
これは身体がプログラミングしたくてうずうずしていてるのかも。
— ウェブ系ウシジマくん@リモート専門エンジニア (@web_ushizima) August 10, 2018
フリーランスとして今まで携わってきた案件では、すでにローンチしているサービスの新規機能開発やバグ改修を行うことが多いもの。
しかし、今回のハッカソンでは、設計〜実装、テストまでの全行程を一人でこなすので、効率の良い開発が必要不可欠になります。
プログラミング初心者の頃と比べると、「自分が書いたコードがどのような戻り値になるのか」を予想立ててできるようになっていたので、それが今回のハッカソンで実感できたのはかなり大きな収穫でした。
また、バグや思うようにコードが動かないときに、サーバーとフロント、どちらに問題があるのか?という切り分けができたのも、自分の中で成長を感じた部分ですね。
この部分については、現場で開発を経験を積んでいたからこそ、鍛えられた部分が大きいと思います。
【Problem:問題点の洗い出し】
メールアドレスとパスワードのバリデーションに約2時間かかった..。
何が時間かかったって、正規表現なんだよね。
ググってコピペすれば瞬殺なんだけど、意味を理解しつつ自分で考えながらやるとなかなか難しい!
— ウェブ系ウシジマくん@リモート専門エンジニア (@web_ushizima) August 10, 2018
正規表現やログイン周りなどの、サーバーサイドにおける生命線とも呼ばれる部分への理解が曖昧なのを痛感しました。
一度正規表現については自分なりにまとめてみてはいたものの、各メタ文字を理解しながら構築するのはなかなか難しかったです。
ただ、それでもcontrollerに対するメールアドレス・パスワードのvalidationは作成できたので、やりきることができたのはプラスだったかな。
他の箇所としては、可読性の低いソースコードになっていたのも反省点ですね。
定数の位置や各コードを処理ごとにグルーピングするなど、チーム開発においても必要不可欠な部分なので、この部分についてはGithubなどにアップされている他人のソースコードをリーディングすることでレベルアップしていきたと思います。
【Try:解決策】
Day_52:#100DaysOfCode
✅マークダウンエディタ機能の記事作成ページの実装
✅railsで作成したAPIをvue側から叩く処理
✅ ウェルカムページの作成
✅ ユーザー登録ページの作成一人ハッカソン最終日、合計12時間でした!
昨日より工数がかかってしまっているあたり、時間に対する見極めが未熟だ。 pic.twitter.com/LMUrwb036I— ウェブ系ウシジマくん@リモート専門エンジニア (@web_ushizima) August 12, 2018
Problemであげた問題点については、現在個人開発を行っているQiita_cloneを引き続き行っていくことで、全体的なレベルの底上げになって行くのではないかと考えています。
今回の開発ではレビュワーがいるので、そこで自分が作成したコードをスキルの高いエンジニアにレビューしてもらえるのは、大きなメリットと言えます。
いただけるアドバイスも非常に明確なので、自分の知識では理解しきれない部分については、質問することで吸収していければなと。
まとめ:一人ハッカソンは自分のスキルを再確認するのに最適なアウトプット
この2日間トライした感想は、問題の切り分け方が大分鍛えられたこと。
合計約24Hとい短いリソースの中で動くものを作るには、実装・解決に必要なものを取捨選択していく必要がある。
その上で、いかに効率的にしていくかという感覚を養えたのは、大きな収穫でした!
— ウェブ系ウシジマくん@リモート専門エンジニア (@web_ushizima) August 12, 2018
今回の一人ハッカソンを通じて、自分のプログラミングにおけるスキルの棚卸しができたので、結果としてやってよかったです。
もっとプログラミングスキルを身に付けたい!
独学でプログラミング学習を進めてきたけど、この先どうやって進めていこう?
と考えている人は、一度テーマを決めて一人ハッカソンを経験してみることをオススメします!
スキルアップにもなりますし、やってみると楽しいですよ。