プライベートでコードを毎日書き続けて2年以上が過ぎた

いつの間にか2年間継続してコードを書いていたので、その振り返りです。上のインコは日々僕を応援してくれる二羽のインコのうちの一羽です。この後本をボロボロに噛みちぎっていきました。

1年目との違い

このとき、自分はコードを1年継続して書いたわけですが、その後また1年継続してコードを書いていました。

1年目とは「書きたい」と思うものも変わりました。また、習慣を維持する労力も小さくなり、コードを書くことそのもの以外の、登壇などの時間を取れるようになりました。

この1年で新たにやったこと

ツール作成

基盤作成

基盤移行

現在エンコーダーをGKEで作ろうと試行錯誤中

API作成

  • クローラー
  • 認証基盤
  • etc…

iOSクライアント作成

リファクタ

  • context.Contextの扱い方を意識したAPIの書き換え
  • DDDについて試行錯誤しながら構成を変更
  • RxSwiftの理想系を周りに聞いて、それに書き換え

コントリビュート

  • 他ツールにちょくちょくコミット

メインでやってたのはAPIです。数が少ないですが、APIの開発を行うと一個でも深く開発ノウハウが得られます。

また、実はiOSアプリなどの実装もしていたりするのですが、周りに聞きつつRxSwift+MVVMをできるだけ在るべき形で実装するように心がけていました。

また、これらの成果によって行った外部発信(登壇)は以下の通りです。

めっちゃGoばっかですね…

新たに得られた、続けるためのノウハウ

一方、この1年ちょっとは大きなものを深く作るとか、他の人が読まないであろうコアのコードを読んで発信するとか、コントリビュート経験を積むとか、ちょっと方向性が変わりました。

それのおかげで、得られたノウハウも少し実務に活かせるものになってきました。

大きなものを「速く」作る

そう感じたかきっかけですが、自分が無駄にアーキテクチャを複雑に追求してしまったり、リファクタリングに時間をかけていくことで、自己満足な実装時間を取ってしまっていると自責の念を抱くことが多くなった、というのがあります。これは本当に無駄なことです。プライベート開発において、コードを書くモチベーションが削れるのが一番天敵ですが、この自責の念はかなり重くのしかかります。

その自己満足な時間を取らないように、スケジュールを厳格に区切ってみようと思い立ちました。

また、タスクの洗い出し粒度は大体エンドポイント単位にしており、もし複雑な実装ならその子要素として要所要所をタスクとして切っておきます。

タスク管理ツールはAsanaを使っていましたが、もっさりしてて使い心地が微妙だったので、Todoistに変えました。これは我ながら英断だったと思います。他のタスク管理ツールはなかなか続かなかったのですが、Todoistは必要十分です。課金もしてます。

コントリビュート経験を増やす

そんなとき、Goにコミットできたことは大きな自信になりました。他にも、marcari/gaurunなどのリポジトリにちょくちょく足跡を残したりしました。

エンジニアとしてプライベート開発もやっていいんだという安心感を得られるので、ただの小さなツール開発者から一歩前に出て、コントリビュート経験を積むというのは大きな精神的支えになりました。

外部発信できないコーディングをしない

たまに、「登壇ネタとかってどうやって見つけているんですか?」ということを聞かれるのですが、これは1年前のポストにも書きました。中規模以上のAPIなどを書くことで、現場レベルのノウハウを得ることが大事だなと思っています。

また、そもそも登壇しやすいように、ただのREST APIだけではなく、ジョブキューとか検索、Push、認証などの機構の実装に手を出していくことで、外部発信をでき、かつ他の人があまりオープンにしないネタを、プライベート開発だからこそオープンに晒していく、というテクニックを取っています。企業の中で開発してると、そういうセキュアな分野はあまりオープンにできないので、あえてそこを攻めると発信しやすいです。

現状の課題と対応方針

マイルストーンの可視化

ガントチャートなどで管理したいのですが、あんまいいツールが見つからないのもあって、気が乗らずにいます。

一個一個のタスクに期限を設定するのも良いのですが、もっと大局的に見たいので、その解決方法を探しています。

集団での成果物

みんなで作ってもっと大きいことをやっていきたいですね。

別で発信しやすいテーマを貯める方法

まとめ

より大きく、実践的なノウハウを得やすいプライベート開発をするためにいいサイクルを築いていきたいです。

追記

できれば1日の平均プライベートコーディング時間教えてよ。他との両立ができていたのかどうかが鍵でしょ。(はてブコメント欄より)

これいい質問ですよね。家庭をお持ちの方とか、勤務体系がアレな方は難しいですよね。

まず、あくまで平日の平均の時間ですが2~3時間くらいでしょうか。あんまり取れてないかなと思います。休日は5、6時間ですね。

かくいう私も前職は勤務体系がちょっとアレな感じでして、11時くらいに帰ったらその後2~3時くらいまでコード書く、みたいな感じでした。

今は18:40くらいに上がって、19時過ぎに家について、その後ご飯や買い出し、洗濯、食器洗いやジムなど諸々あるので実際に作業を始めるのは21:30くらいです。同棲している身なので、両立できないと怒られます。

そこからだいたい1:00、日によって3:00くらいまで作業して、7:30~8:00に起きるという感じです。(ちゃんと寝てますよ!)