production.log

株式会社リブセンスでエンジニアをやっている星直史のブログです。

GitHubの草を60日間連続で生やしてわかった習慣化のコツ

概要

f:id:watasihasitujidesu:20180716100634p:plain

最近個人プロジェクトの開発をしているのですが、気づけばGithubの草が60日間連続で生えていました。 60日間も毎日草を生やしていると、完全に習慣されたと思ったため、 今回はGithubの草を60日間連続で生やしてわかった習慣化のコツを紹介します。

習慣化のコツ

モチベーション管理

個人の目標における内発的動機と外発的動機の重なりの意識

f:id:watasihasitujidesu:20180716072408p:plain
自分がモチベーションを感じることとしては、学びたいことを学んでいるときや、なりたい自分に近くための学習など「やりたいこと」を実行しているときです。
「やりたいこと」と関連がある学習を行なっているときは、少なくとも2ヶ月くらいは継続的に学習ができていた記憶があります。
一方、必要に迫られた学習など、「やるべきこと」を実行しているときは、あまりモチベーションの高まりを感じることができず、長期的には習慣化できませんでした。

とはいえ、やりたいことを優先しすぎると、成果*1の最大化には繋がらないと思い、「やるべきこと」と「やりたいこと」が重なるように意識しました。

学習の対象が、学びたいものかつ、学ぶべきものだったばあい、「やるべき」と「やりたい」が重なっている状態になります。
この動機のスイートスポット*2が存在する場合は、まずはそこにフォーカスすることをおすすめします。

内発的動機に対する行動結果の紐付け

f:id:watasihasitujidesu:20180716083427p:plain

先述した学習のスイートスポット*3が存在すれば苦労しませんが、多くはないでしょう。
ただ、「やるべきことは、必ずしもやりたいことと重なるわけではないが、少なからず、好影響があるかもしれない」といったように、楽観的に考えることが重要です。
物事は、何にでもグラデーションがあるので、一見、やりたいこととは無関係でも巡り巡って自分のやりたいことに繋がるか?を考える事が重要です。
そのため、やるべきことの中から、やりたいことに近付く要素が最も多いものを取捨選択することになります。

取り得る選択始の中でモチベーションと成果が最大化されるものを吟味していきましょう!

可視化・可視化・可視化

Githubの草を生やす上で欠かせないのはGItHub-Gardenerです。

f:id:watasihasitujidesu:20180716100702p:plain

こんな感じで可視化されるのですが、各種スコアが表示されます。

consecutive days (best record updating) 60 days

特に、継続日数が表示されるこの部分ですが、強烈な強制力があります。
継続日数を増やしていく中で、下記のような嬉しさ、達成感、充実感がありました。

継続日数 嬉しみ
7 days 草が一本に繋がって単純に嬉しい
10 days 値が2桁になって嬉しい
30 days 草から芝生となった嬉しさと、謎の達成感
60 days 習慣化された充実感

目標到達点の認識とリズム作り

目標到達点の認識

先述の通り、GitHub-GardenerはGitHubの芝生を可視化ツールであり、継続日数を数値として表示します。
初心者Gardenerだった自分は、まずは3 daysを目標にしました。3 days達成すると7days, 10 days, 30 days, 60days....、と次の目標を意識することができました。
この効能は、ある程度粒度が大きい到達点(マイルストーン)を認識することで、目標達成に対する意識が芽生えさせることができることです。

また、継続日数をマイルストーンとして設定した場合、自分のリアルなスケジュールを見比べて、「○曜日は仕事の帰りが遅いから次の日の朝に影響が出そうだ。タスクの粒度を極小にしよう」といったリスク回避について考えることもできます。

目標達成に向けてのリズム作り

朝6時に起きたとしても、確保できる時間は3時間前後です。3時間しかないと、できることは多くはありません。
そこで、コミットするタスクを分解して、目標達成に向けてのリズム作りをしました。

よくある継続学習指南では、しばしば「まずは本を開くところから始めよ」「まずは5分から始めよ」というのを目にしますが、まさにこれです。

週: 平日/休日 1日あたりの作業時間 作業内容
1週目: 休日 12h 規模が大きめの実装
1週目: 平日 3h 些細なデザイン調整や規模の小さいリファクタなど、作業開始から30分以内でコミットできるような粒度のタスク
2週目: 休日 12h 技術調査と平日のためのタスク分解
2週目: 平日 3h 休日に行なった粒度の小さいタスクの実装
  • 休日は大きめの作業
  • 平日は小さめの作業

といったように、割り当てることができる時間と、タスクの粒度を合わせることで、無理のないペースで確実に成果を出すことができます。 平日は粒度は小さいタスクの積み重ねがメインとなるのですが、自身で成功体験を積み重ねることと、それを自分自身で承認することが習慣化のコツです。

その点、GitHub-Gardenerは、GitHub-Gardenerを使うことで、自然と上記が達成できるような仕組みになっていると言えます。

すごいぞ、GitHub-Gardener。

生活のリズムを一定にする

GitHub-Gardenerを使うと、草を生やしていない(commitしていない)と、謎の不安感に包まれるようになります。 これは適度な負荷であり、生活にちょっとした緊張感を与えるストレスだと思います。ストレスを力に変えましょう。

GitHub-Gardenerを使うと、朝目が覚めたときに、まず「commitしなきゃ!」と、頭に浮かぶようになりました。 普段は「眠いなぁ〜、もう少し寝ようかなぁ〜...ZZzz」ってなるのですが、この思考のインターセプトはやばいですね。 そのため、結果的に朝、目覚めと同時にcommitするようになりました。

また、朝6時に起きてcommitという生活を続けていると、スケジュールや体調に左右されずに安定して自己研鑽できることがわかりました。

  • 夜早く寝るので、睡眠時間を十分に確保できる
  • 早朝から朝日を浴びることができるので、体調がすこぶる良くなる(安定化)
  • 旅行などの予定が入っていても安定してコミットができる(スケジュールの影響を受けにくい)

素晴らしいぞ、GitHub-Gardener。

まとめ

60日間継続的にアウトプットし続けることができたので、習慣化のコツを書いてみました。

  • 自分は何にモチベーションを感じるのか、学習対象の意義は何かを考える
  • 可視化による達成度合いの認識
  • マイルストーンの設定による、長期的な目標管理と達成に向けたリズム作り
  • 持続的に成果を出すための生活基盤の構築

基本的には、何が学びたいんだっけ?何を得たいんだっけ?を軸に考えていくと継続はできるのではないかと思います。
ただ、人間は易きに流れやすい生き物であるため、ある程度、強制力や自己承認のための仕組みが必要です。
自分は補助的な役割としてGitHub-Gardenerを選びましたが、継続をするための仕組みが無駄なく全て揃った良いサービスでした。
おすすめです。

*1:習得したスキルがどこに繋がるのかといった観点や、仕事で役に立つかといった観点

*2:と、勝手に呼んでいる

*3:やりたいことと、やるべきことが重なり