実装中にタイムトライアルを行ってる理由

##はじめに

私は現在実装中にタイムトライアルと称して、ストップウォッチで計測しながら実装を行なっています。
おそらくタイムトライアルしながら実装をするエンジニアはなかなかいないのではないかと思います。
なので今回は、なんでタイムトライアルをしているのか、その経緯等を話そうと思います。


##経緯

まず、なぜ`タイムトライアルをやろう`と思ったのか、それは、
1. `CTOに言われたから`
2. `ある言葉に影響を受けたから`

大きく分けるとこの二つです。
順に話します。

###CTOに言われたから


ある日、昼頃に`今日リリース予定の案件やるか？`と問われました。とりあえず`やります`と答えました。この返答がタイムトライアルをやるキッカケの一つと大きく紐づいています。

内容は非常にシンプルで、正直簡単な案件でした。
その案件は19時リリース予定との事でした。
その案件の内容を把握したのは、15時頃でしたが、まだ自分の元には渡っていませんでした。
着手したのは、16~17時頃だったと思います。約2時間程でリリースをするという事となりました。

しかしその2時間という時間が自分を焦らせました。
結果リリースは20時になりました。1時間オーバーです。

焦らせた原因は、2時間という`時間`と`プレッシャー`です。

私が着手した案件が案件だったので、1時間オーバーの20時リリースとなっても`次は時間通りリリースできるといいね`で終わります。
しかしこれがもっと緊急性の高い案件だったらどうでしょう。この1時間は致命的です。1時間あったら優秀なエンジニアは何ができるでしょう。
そう考えた自分は、この1時間オーバーを非常に重く受け止めました。

そもそもインターンにそんな緊急性の高い案件が渡される、または、任される事はなかなか無いと思います。
むしろ`無い`と言い切ってもいいのではないかと思います。

しかし、`インターンだから`という考えは非常に危険です。
一生インターンなのですか？いいえ違います。近く私はどこかの企業に正社員として務める、または、フリーランス、または、起業する可能性だって０ではありません。

インターンは一過性のもので、それこそ学生なら、社会に出る前の経験値、能力向上作りだと思います。社会に出ることを`ジャンプ`とするなら、インターンは`ホップ`または`ステップ`でもあると思います。

ジャンプしてからでは遅いんです。
この期間でいかに経験値、能力を高められるか、そしてそれを社会に出た後も継続できるか。
`後でやる、は、バカやろう`と小中学生時代に先生から言われた記憶があります。

少し脱線しましたが、この1時間オーバーを埋める為には、能力の向上は必須ですが、同じ状況下でいる事が最短かなと考えました。


`CTOに言われたから`とありますが、直接的に`タイムトライアルをしろ`と言われたわけではありません。
そういったニュアンスの事はおっしゃっていましたが。

意識だけでは難しいものです。様々な誘惑はありますし、甘やかすのは非常に簡単ですから。
なら`やらざるを得ない状況にすれば良い`というのが私の考えです。


###ある言葉に影響を受けたから


`Move fast, and break things.` `Done is better than perfect.`

これはfacebookの社訓でオフィスのいたるところに貼ってあるそうです。
facebookのいう`早さ`は、今回私がいう`早さ`とは異なるかもしれませんが、そこは私が勝手に置き換えた形になります。

ですが`早さ`という点では通ずる部分だと思います。
もちろんクオリティは担保された状態で、というのが前提だとは思うので、一概に早ければ良いという訳では無いと思います。

私は近いうちにアメリカで実務を行なってみたいと強く思っています。
より実力が顕著となるアメリカでは、はっきり自分ができる事、自分の武器、を伝えられないと価値を伝えられません。精神論でどんだけやる気を示しても無理があるのがアメリカだと思います。

何をどんだけやったのかを定量的に示せるようになりたい、その第一歩としてより早く正確に実装できるは、武器の一つとなり得るかもしれません。
スタートアップなら、なおさらスピードは大切な部分ですし、より早く正確に実装できるスキルは需要があるのではないか、と考えています。
〇〇を〇〇時間（または日）で制作した、と言えるようになりたいです。

なので、まずは早さからという事で、タイムトライアルを行なっているのです。
`とりあえず動くものを最速で作る。質や理論、理屈はその後。`というのが私の考えです。

正直このアメリカに対する考えは、色々調べたりしながら導き出した私の解釈の部分なので、この目で見たり、経験した時に異なる可能性は十分あります。逆に自分の想定よりはるかに上をいく可能性もあります。それでも早さの重要さは、インターンを通して理解しました。

なので今後も早さにはこだわって、タイムトライアルをして行きたいと思っています。


##目的


目的に関しては既に話してしまった感がありますが、改めて話すとすれば、
1. 緊急性の高い案件への対応
2. ユーザーのニーズにより早く応える
です。

１に関しては知識量や技術力に依存していると思うので、広く`能力の向上`に務めるのは大前提です。
２は一概にユーザーだけとも限らないと思いますが、広くいうと`ニーズに早く応える`ですね。

それが同僚の要求であっても同じです。この場合`ニーズ`とは異なりますが、おおめに見てください。

タイムトライアルを実施する上で大切な事は、`自ら時間を設定する`事と`それを見える化`する事です。

正直タイムを設定して、その結果を自分のみ知るという状況は意味がありません。
自分で設定した時間を他者にも見える形にする。いわゆる宣言というやつです。そうする事で終わった時に達成できたのか、できなかったのか、を自分以外にも伝えることができます。この行為は成長に結び付くと思います。

見える化する事でFB（フィードバック）を貰えるかもしれません。自分では気づき得ない部分を気づけるチャンスでもあります。なぜこういう結果になったのかを他の人に話して、`じゃぁ次はこうしたら早くなるかもね`という提案を頂ければ最高です。

見える化は他にも自分にプレッシャーを課せる事でもあります。`宣言したからには、達成しないと`という意識に自然となるものです。そのプレッシャーに打ち勝つ事で成長に繋がると思います。精神面が鍛えられるわけですから。

なのでタイムトライアルをする時にはこの二つを大切にしつつ、目的に通ずるよう取り組んでいます。


##結果

最近のタイムトライアルの結果をいうと、五分五分か、ビハインドといったところです。

タイムトライアルのいい所は、自分がどこに時間がかかっているのか、がわかる所です。要するに`自分の問題点が明確になる`という事です。

そのおかげで、何をしなくてはならないのか明確になります。より効率的な時間の使い方ができるのです。やることが明確なので。まぁここは実行力にもよるので、絶対とは言い切れませんが。
少なくとも私は、効率的な時間の使い方、ができるようになりました。

最近の結果でいうとビハインドですが、少し前までは、むしろリードしていました。
`つまり要件によってビハインドする事がある`という気づきを得られました。

となると次はビハインドする原因の特定をし、そこを徹底的に潰す。この動きに尽きます。
まぁそう簡単に潰す事はできませんが、`時間の使い方`には問題ないですよね。

今の課題は主にビュー側にあります。しっかりそこを潰してリードできるようにしたいと思っています。


##まとめ

いかがでしょうか？
私はタイムトライアルを実施してからいい事づくしで、充実しています。

タイムトライアルをやらずとも、アクションを起こす事が大切だと思います。`実行力`です。
今後も`実行力`を大切にして、成長したいと思います。

##おまけ
Twitterやってます！外部のエンジニアの方ともどんどん繋がりたいと考えていますので、是非フォローして頂ければと思います！[@Tatsuo96](https://twitter.com/Tatsuo96)
p.s.今年の2月までは溶接職人でした。ガッツ系エンジニアとしてやらせて頂いております。