Software Engineer Blog

エンジニアブログです。技術情報(Go/TypeScript/k8s)や趣味の話も書くかもです。

Write Code Every Day (1年目)

概要

Write Code Every Dayを1年間達成しましたので、感想云々を記載します。
一応、日付ずらし等はやらずにいけました。
(ユーザーミスが1日だけあったくらいですかね..)

Write Code Every Dayとは?

毎日コード書いて commit して、GitHubに芝を生やすことです。
昨年のこの時期に、 @t_wada さんのスライドを見てはじめてみました。

(元ネタはこれかな) John Resig - Write Code Every Day

@t_wada さんのスライド Write Code Every Day // Speaker Deck

結果

f:id:midori5:20171203175733p:plain

(色薄..)

作ったもの

主にGolangの勉強系で作ったものが多いです。 (90%くらい..)

gosns

github.com

  • Messaging Sever です
  • Amazon SNSを初めて触れて、書いてみたかったのでGoで書いてみました
  • Pub/Sub Modelをイメージして作成してます
  • mercari/go-httpdoc を使ってテストコードから、API Docを生成したことをよく覚えてます

gtrello

github.com

f:id:midori5:20171203175808p:plain

  • 日報作成ツールです
  • 毎日簡単に書きたくて作りました (まだ使ってます)
  • Trelloの情報をSlackへ送信する流れです
    • $ gtrello → editor open(所感記入) → #times_midori へ配信
  • Trello用のClient ( BurntSushi/toml) をガッツリ使ってます
    • こういうClient利用をきれいにテスト書かねばというのが課題です
  • Go標準のtemplateを利用して、Markdown生成とかしてました
    • (Slack投稿にしたので、最終的にはあんまり残ってないです..)

gmd

github.com

  • コマンド保存ツールです
  • 同じコマンド打つの辛いなぁと思って作りました
  • コマンド自体をまるっと保存します
  • できること
    • 保存
    • 実行
    • 一覧

gchat

github.com

  • チャットサーバーです
  • websocket ってどんな感じなんだろうと思って作りました
    • (まだよくわかってないですね..)
  • gorilla/websocket をwrapしているだけって感じでサクッと作れました

その他

  • 作りかけ放置多数

原則の達成度

  • 毎日コード書くこと
    • 達成度 70%
      • NG Point
        • README.md 更新
        • メモ等のcommit
  • 意味のあるコードを書くこと
    • 達成度 70%
  • 深夜24時前に終わらせること
    • 達成度 80%
      • NG Point
        • 24時超えのcommitは少しはあった
  • 書いたコードをGitHubOSS化すること
    • 達成度 100%

やってみての感想

  • 毎日続けることが大事
    • 毎日やるという制約がちょうどいい
  • 続けたことが見える化できることが大事
    • やったことが見える化できていないと達成度が味わいづらい

メリット

  • 毎日コード書く(commitする) 習慣 は完全に身についた
    • ほぼストレスなくできるようになった
    • 頭の片隅にいつも、今日のcommitはちらつく
    • (勉強する習慣を社会人1年目から作れたのは良かった)
  • Goがとても好きにになった
  • 新しいものに触れるととりあえず手を動かすようになった
    • 芝生えるしちょうどいいと思って、コード書いてみる
      • gRpc
      • GraphQL
      • Eclipse Collection
      • ML
      • etc..

デメリット

  • インプットが少なくなりがち
    • 本読んだり等が二の次になってしまう
  • つなげるための苦肉の策
    • REAMD.md 更新
      • (正直結構やりましたね、 README.md だけの更新..)
    • 家に帰るのが間に合わずスマホからcommit
      • 飲み会で遅くなり、commit → pushできるツールを探しました..
      • source (https://source.ianmcdowell.net/)
        • これでできましたが、pushするためには課金(500円?)が必要で..
        • 泣く泣く課金しました…
        • (後日、一緒に飲み会に行っていた同期が謎に500円くれました)
    • 24時超えcommit
      • 次の日できなさそうな時、やってました

今後

習慣化しているので、続けていこうかと思います。
エンジニアである以上、日々手を動かしていけるようにしていきたいです。

2年目

  • README.md 更新頻度の削減
    • ちゃんとコード書く
    • コード書くための時間づくりも大事にする
  • インプット → アウトプットの習慣化
    • 本をもっと読みたい
      • 基礎知識が低すぎる課題
    • 本を読んだことを活かしてコードを書く
  • 続けること
    • 2年目もがむしゃらにとにかく続ける
  • OSSへcommitする
  • Libraryもしくは有用なツールを公開する
    • ちゃんと使えるものを作りたい
    • 設計からしっかり実施したもの
  • テストコードを書く

まとめ

1年続けてみて、個人的には良い習慣かなと思いました。
基本サボり症である程度の強制力があるものがないと続かない人には、
向いているかと思います。(自分はこれです)
作ったもの等は、稚拙なものが多いですがこれも実力の内なので、
2年目はまた違った結果がみせれると良いかなと思います。