ベストプラクティス

技術師匠の教えを守った結果起こったこと

More than 1 year has passed since last update.

先日 技術師匠の教えを記録するというポストを書いたが、その後どうなったかというと、正直いうと、生産性が圧倒的に下がって、フラストレーションがたまり、何も達成できなくなった。

生産性惨敗の振り返り

私の周りにいる技術の達人はそれはもう凄いレベルなので、彼らのプラクティスやアドバイスが間違っていたということではないと思う。ズバリいうと身の丈にあっていなかったり、有効だけど、今の自分に消化できなかったということだと思う。

最近あまりに出来ない自分にフラストレーションが溜まり、自分の中で爆発した。そういえば一番プロダクティブだったのはいつだろうと考えると8月頃で、仕事に余裕があり、5時で仕事を終えてたけど、仕事もうまくいき、帰ってからは、ハックしてブログも1日3本ぐらい書いている時もあった。

英語の習得のことを思い返して見ても、TOEIC が 400ぐらいのレベルの人にあうベストプラクティスと、900ぐらいの人に有効なベストプラクティスは全然違うけど、それは間違っているからではない。そのレベル感の時にうまくいくか?ということで、私が師匠の教えを全て実践しようとすると、TOEIC 400の人が、字幕なしで映画を見続けるような状態になってしまうのかもしれない。

ハマり時間のながさ

 最近の自分を観察していると、自分がイライラすることが、物事が全く進まないというのを感じてしまう。今回も社内のハックイベントで、2つのよくわからない問題に遭遇して、ああでもない、こうでもないと悩みまくって、結局1日以上潰して、最終日に直接プロダクションチームに会いに行っても解決しなかった。面白くないので、最後にこれぐらい解決しようと思ったこと、すごく簡単なのだけど、それにもクソハマって、何も進まなかった。だから、他の重要なことをハックできず、何の新しい知識もえられなかった。

 よくよく考えると最初の問題は、プロダクションチームですらわからないのだから、解決できるはずがない。2つ目の問題も、一見簡単んそうな、Azure Functions で Send Grid を使ってメールを送るのを、Sync ではなく、ASync で送りたいというだけなので、すぐできそうと思ってたができず、プロダクションチームにメールを投げて、何も終わらないイライラで爆発しそうだった。

 二つに共通するのは、諦めず頑張るという自分の性質が裏目に出ていて、どうでもいいことに時間を使っている。ハマりなど時間がかかればかかるほど、多分自分ではもともとも解けない問題なのかもしれない。ハマりそうな時はタイマーをかけて2時間たってもできなかったらメール投げて忘れるとかがいいかもしれない。

 もう一つの問題は、1つ目はクリティカルパスなので仕方ないかもしれんけど、2つめのものは、重要度は全く高くない。実はnode でも実装しているし、Sync なら実装できている。どう考えても優先順位は高くないし、代替え案があるし、実行されている。それでも、物事がコントロールできないイライラからか、突っ込んで調べてしまい、それに時間を使って、他の大切なことができていなかった。まさに無駄だ。

 多分ここは、自分の完璧主義的な性質があって、綺麗なコードを書かないといけないという思い込みが強すぎることがあるかもしれない。プロダクションチームの人も、すごく効率よく調査していたけど、ジタバタせず、さっと諦めていた。(1時間ぐらいで)これが重要かもしれない。

長年の出来ないというコンプレックス

私の長年のコンプレックスは、何も出来ないということ。自分がしないコンサルや、講演、講師みたいな仕事は強いのだが、自分がやるもので子供の頃から何一つ出来なかった。それが自分の最大のコンプレックス。遊びも勉強もなんでもそうだった。

英語みたいにある程度できるようになったものと比較すると、プログラミングとか、音楽とか顕著なのだけど、「うまくなりたい」という気持ちが強すぎて、うまくやろうとして、それが足かせになって前に進んでいないのでは?と思い始めた。英語でも、しょぼい頃に、いきなりTOEIC900レベルのことは出来ないのは当たり前なのに、それになろうとして苦しんで、前に進まないみたいない。(文法をちゃんとしないと思って喋れない人みたいに)

そういう自分になかったものは、多分「目的」と「楽しむこと」なのではないかと思い始めた。しょぼくても、目的が達成されたらいいのだけど、「うまくなること」ばかり考えていると、前に進まない。なんでもいいけど「出来たらええやん」とわしは思う方がいいのではと思い始めた。英語だってそうで、ムッチャクチャなレベルだけど、とりあえず使っているうちにましになるみたいな感じ。コードもそうかもしれない。最初から、細かいことを気にしすぎたら何も出来ない。それよりも、あれやりたい、これやりたいをどうやって実現するか?の過程で学べばいいし、ある方法がうまくいかなくても、目的達成できたら違うのでいいはずだ。

自分が成果を出せたコードも全て「これやりたい」だった気がする。

楽しい状態とは?

ブログを色々読んでいて、どこか忘れたけど、一生遊んで暮らせる人が、仕事をしている理由について考察しているのがあって、その解析結果が、「何かを完璧にコントロールできる楽しみ」を得るためとあった。プログラムを始めたのも、ゲームを作りたかったからだった。(当時は知識がなさすぎて、写経ぐらいしかできなかったけど)マジシャンみたいに、どんなサービスでも一瞬で作れるようになったらどんな楽しいだろうな。って。ヴォーカルもそうだよな。あの歌がものすごくかっこよく歌えたらどんなに気持ちいいだろうって。

多分楽しくないのは、間違っているサインだ。達人のペースに合わせたらダメだ。自分が楽しいのを重視しよう。今回は達人のペースに合わせて、エンジョイできなかった。自分ができることをやるのだ。

今後やってみること

来週は新しいことを学ぶのをやめる。達人のペースに合わせるのをやめる。達人の教えを全て守ろうとせず、最初の1つだけを実行するのに戻す。あれはとてもうまく回っていた。「上達」を忘れて「やりたいこと」中心に考えてみて、「考えずとも何かを実行できる、コントロールされた状態」をできる範囲で作り出してそれを広げるということをやってみたい。

5時で仕事を終えて、そのあとハックにするけど、5時までの間は、目的ありき、スピード重視を心がけよう。何かやりたいことがあって何かをするようにする。先にテクノロジーを考えない。一方5時で家に帰ってのハックでは、ひたすら自分のペースで、Hello World レベルのものを試してブログ化する。そこでは、スピード重視ではなくて、ゆっくりと自分の消化できるペースで。

あとは、自分をコントロール配下以外に置かないようにしよう。すぐジタバタして深みにハマるので、紙に書いて整理して、一つづつ潰すとかしてみる。これは思考が発散する自分に向いている。

まずは、自分が技術的に TOEIC 400レベルであることを受け入れる。階段を一歩一歩登るんだ。