log

何書くかまだ決めてない

GitHubでWrite Code Every Dayを目指した話

@kta_moromiiです。タイトルの通り、1年間毎日コードを書き、GitHubでWrite Code Every Day(草がオールグリーンになるやつ)を目指してみたという記事です。

早速ですが、結果はこちら。

f:id:keita_moromizato:20161226001423p:plain

GitHub上では365日ではなく53週?を表示する仕様っぽいので、暦上1年経ってもオールグリーンにはならない模様)

残念!2日ほど、完全に忘れていて逃した。とはいえ結構頑張ったので、これから始める人のために振り返りを少し。

書き始めた理由

仕事でプログラムを書く機会が減った。よくあるマネージャーになったみたいな話ではなく、まったく別の職種を兼任することになった。兼任といっても、2016年12月時点で、エンジニアリングをするのは1日/月あるかどうか。

それ自体に不満があるわけではないし、楽しかったところもあるんだけど、マネージャーのようにいわゆる昇進というわけではないので、近いうちにエンジニアに戻る予定。

ただ、この変化と競争の激しい世界で、エンジニアリングに触れずに長時間過ごすと死んでしまう。そういう強迫観念みたいなものを持つには1年という期間は十分だし、「チョットデキルエンジニア」レベルでいても面白くない。

そこで昨年末から始めたのが、Write Code Every Day。GitHubの草をオールグリーンにしようと。業務外でコードを書く時間が無かったわけではないが、より意識的にしていきたいと思って始めた。

あと、自分の観測範囲で、Write Code Every Dayを実施している界隈の著名人が複数人いた。このレベルの人たちが普段これだけやっているのに、何もしない人がそこにたどり着けるわけないでしょ、という気持ちも少し。

ルール

毎日コードをコミットする

世の凄い人たちみたいに、OSSに積極的に関わっているわけではないので、使ってみた・学んでみた系がメイン。10近いコミットを入れる日もあれば、CSSを少しだけ直して終わった日もある。

CSSSちょっとだけとか、コードを書いたに値しないものをカウントしないという流派もあるけど、今回は許容。普通に仕事もしているわけだし、数十分しか時間が取れない日もあるわけで。とにかく毎日続けることを目標に。

publicなリポジトリのみで計測

そもそも始めた目的が、業務でエンジニアリングをする時間が減ってしまったこと。なので、業務以外でエンジニアリングをする時間を増やすためにも、publicなリポジトリのみを観測対象に。業務でいくらコードを書こうが、個人の活動にはカウントしない。

ちなみに所属している会社はOSS的な活動はまったくしていないので(個人的にはnpmにpublishくらいはしている)、完全に個人活動のみカウントされている。

モチベーションの変化

覚えていないので大まかに。

〜7日目

そこまで気合を入れずに始める。「JavaScriptの新しいライブラリ試してみよう」「Goのチュートリアルやろう」とか、ネタはいくらでも見つかる。

〜3週

毎日草が埋まっていくのを見ているのは楽しい。始める前の最大連続コミット数(業務コード含む)が40ちょいだったので、まずはそれを越えることを目標に頑張る。3週目くらいで、若干辛くなる。

〜2ヶ月

連続コミットが最長記録にになり、Current Streakが伸びていくのを楽しむ。が、同時に書きたいコードのネタがなくなっていく。OSS活動をしていないと、常に「次は何を学ぼうか」と考え続けなければならず、これが辛い。

〜半年

たぶん3ヶ月くらいを過ぎた辺りか、苦ではなくなってくる。だいたい毎朝起きて、会社に行く前にちょこっとコーディングをするのが習慣になってきた。が、半年経った辺りでGitHubからCurrent Streakの表示が無くなる。毎日数字が伸びていくのがモチベーションのひとつだったのに。辛い。

〜1年

半年を経過したら、完全に習慣になっているので、毎日淡々と続ける。ネタはやっぱり無くなりかけるけど、逆に言うと、これを試してみようというフットワークは軽くなった気がする。

そして、開始10ヶ月くらいで初ミス。コミット忘れを12時過ぎて気付く。気づいた瞬間はマジかと思ったけど、寝て起きたら特に何事もなかったようにコーディングをしている。

習慣になった、というのを感じる。1日も欠かさないことよりも、習慣になっている状態を維持することが大事なんだなと。その後また1日空白になってっいたけど、別に習慣が途切れることはなかったので、そういうことだと思う。あと、1日くらい空いている方が精神状態が良い。

成果

特に「OSS頑張りました!」って感じではないので、特に成果はなし。強いて言うなら、流行っているものは一通り学べたことと(実務では使っていないけど)、毎日「次は何を学ぼう」という思考を持てたこと。毎日コードを書かないといけないから、学ぶことを探さないといけないし、二の足を踏んでいたものにも手を出せた。

問題点

エンジニアにとって良い影響があるので、みんな試してみたら良いと思うんだけど、問題点も少しある。

コードを書くだけがエンジニアじゃない

いまは小さい会社でフロントからインフラまで全部見ているから、インフラの知識も増やしたい。が、インフラ周りはGitHubに上げられるようなアウトプットを出しづらい。どうしても「コードが書けること」優先で取り組んでしまう。Dockerは今年かなり使えるようになったけど、増え続けるAWSのサービスをキャッチアップできていない。

あと、技術書を読む時間も取りづらい。どうしてもアウトプット重視になる。この辺りのバランスが課題。

リポジトリ消せない

これを始める1年前がどうだったかは記録していないが、この1年で総リポジトリ数が100になった。メモリアルな数字で気分は良いんだけど、不要なリポジトリ(= 残念なコード)があるのはあまり良くないよね、とのこと。

オールグリーンを目指してしまうと、コミット記録が消えてしまうのでリポジトリが消せない。同様の理由で、privateリポジトリにもできない。

まあ、外部へのイメージという意味では、「無駄なリポジトリがある < オールグリーン」だと思うので、それほど問題だとは思わない。が、正直数が多いと邪魔だし、デメリットが無いとは言い切れないところではある。

今後

PC捨てて1週間くらいぼーっとしたい欲が出てきた。メンタル的にもオールグリーンを続けることは心地よいものではないので、続けないかもしれない。ただ、習慣にはなっているので、それとなく続けながら、途絶えてきたらまた意識的に2ヶ月くらいやってみるというのを繰り返していきたい所存。

あと、複数人で適当なサービスやOSSを作りたいというのもある。個人でやっていると、なかなか「こういう成果出ました」というレベルまで持っていけない。

オールグリーン目指したい人に向けて

  • まずは3ヶ月くらいを目標にしてみるといいかも。習慣になって苦じゃなくなるのはそれくらい。
  • 「css1行だけのコミットって意味ないのでは?」という意見はわかるけど、とにかく習慣にする目的なら全然良いと思うので、今日から始めてみては
  • OSSとか、高尚なことをやらなくてもいいと思う。現場で求められるのは、(一般的には)OSSにコミットしていることではなくて、業務のプログラムが書けること。たとえ「使ってみた」レベルのコミットでも、確実にそこに役に立つ。

せっかくなので今年の総括的な

レベルは高くないけど、30分くらいの登壇2本、LT3本(うち1本は今日)、ハンズオン3回開催と、まあ割と頑張ったんじゃないだろうか。

2017年は、もう少しちゃんとした場で登壇できるくらいに知見をためたいのと、人に見せられるコードを書けるようにしたい。

おまけ

GitHubアカウントはこちら

今年のハロウィンは草の色も変わってましたね

f:id:keita_moromizato:20161130233926p:plain