TechとPoemeの間

Qiita に書かないエンジニア業の話

エンジニアの一番の基礎体力はタイピングスピードだという話

転職して8ヶ月ほどになるかと思うが,今年も新卒のメンターになる運びとなった.
今年も新卒のメンタリングをして改めて思うのは, エンジニアにとっていくつかある基礎体力のうち,一番最初に伸ばせるのに誰も本気で取り組まないのがタイピングスピードだということ だ.

日本のスポーツや武道の世界に「心技体」という言葉がある.競技を行う上で,精神力 (心),技術, 体力の3つが大事になるという話だが,このうち入門者に一番最初に求められるのは「体」だと思う.
技術を磨くには圧倒的な鍛錬の時間が必要だが,この鍛錬を積むためには体力がなければいけない.*1

かつて,横浜ベイスターズ石井琢朗という選手がいた.彼が引退するにあたって,とあるプロ野球 OB によって書かれた 『66番だった』という記事が個人的には非常に印象的だ. ameblo.jp 石井琢朗はもともと投手として横浜大洋ホエールズに入団したのだが,後にシーズンオフの秋に野手転向が決まると,そこから朝も夕方も夜間も特打,特守と嵐のような練習量で,翌年の終わりには三塁手の定位置を獲得していた,という話.

翻ってエンジニアはどうかというと,やはり誰かのコードを読んで,自分でコードを書くことが一番の練習であり実戦である.同じ1時間*2で,100 行しかコードを書けない人間と,500行書ける人間では,間違いなく後者の方が圧倒的に成長する.

こういう話をすると,「でも500行に渡って中身のないコードを書くことに意味があるのか」とイチャモンをつける気持ちも芽生えるが,ここで言いたいのは500行の中身ではなく,どれだけのサイクルでどれだけの量のフィードバックサイクルを回せるかという話である.タイピングスピートがあるエンジニアは,自分のアウトプットに対するフィードバックを受けた後,それをすぐに解決することが出来る.すると次のフィードバックがやってくるから,また次の成長機会がやってくる.
そう考えると,たとえクソコードでも,間違いなく1時間に500行書けるエンジニアの方が成長するに決まっている.

キーボードという入力デバイスを用いて何かを書く作業の行う上での究極の理想は,「思考が寸分の遅れもなくエディタ上に実現すること」だ.そうすれば自分の書いたコードをコンパイラに食わせること,テストコードに通すこと,環境にデプロイすることまでのオーバーヘッドとなる時間も無くなる.将来,音声入力の精度が高くなれば僕は音声入力を使うだろうし,脳波を探知して入力してくれるデバイスがあれば間違いなくそれを使うだろう.*3

そのためだったらキーボード上でホームポジションから指を離さない指運だって鍛錬すべきだし,少しでもホームポジションから手のひらを動かさずにタイプ出来る英字キーボードを好むべきだし,「思考の速さで編集する」ことを目的に,自らの使うツールの効率的な使い方に鍛錬するべきだと思う.

ちなみに,宗派戦争に巻き込まれるのはごめんだから深くは書かないが,自分のこれまでのエンジニアとしてのキャリアで効果があったのは,Vim のコマンドにある程度精通したことだと思う.一通りのヤンクの操作とテキストオブジェクトを使いこなすことで,間違いなく生産性は 2.5 倍以上は上昇したと思う.

*1:心と体はどちらが先か,という問題は話題になりがちだ.こういうときに話題になる心というのは,英語で言う “attitude” というか,何を優先ごとと考えるかというメンタリティのようなものと,圧倒的な劣勢でも折れない強さのようなものの2つがあるように思える.前者は「体」を育てるのと並行してメンターが意識して躾けなければならないが,後者は「体」と「技」が身についた上での実践の中で身につくもののように思える

*2:同じ言語環境,同じ題材だとして

*3:勿論,リーズナブルな値段で手に入るところまでコモディティ化すれば,だけど