🤔

実装が速いとは


社内で話題に上がったので考えてみた 🤘

「実装が速い」ってのは相対的なものさしだし、とても抽象的だから評価しにくい。 でも以下のようにいくつかの要素に分解してみると、すこしわかりやすくなる。 どれかがずば抜けている場合もあるだろうし、すべてバランスよく高いこともありそう

  • 書くのが速い
  • 手を止める時間が少ない
  • 手戻りや手直しが少ない

それぞれ具体的に考えると

書くのが速い

単純に書くのが速いという話。まず思い浮かぶ要素

  • タイピングが速い

    • Vim や Emacs などのツールを使っている
    • キーボードが合っている
    • 運指がきれいなことが多い

手を止める時間が少ない

どんなに書くのが速くとも、手を止めている時間が多ければ実装が速いとはいえない

  • 言語仕様に慣れていて、書き方に迷わない

    • 経験の長さ
    • 日頃から情報収集を怠らない
  • 問題にぶちあたっても、短時間で解決できる(問題解決能力が高い)

    • 問題を切り分けられる
    • あたりをつけられる(原因を見つけるのが早い)
  • なにがわからないのかがわかっていて、不足している知識を適切に補完できる

    • 適切な質問ができる
    • 適切なキーワードで検索できる
  • 頭の切り替えをできるだけ少なくしている

    • 一度に異なる複数の作業をやろうとしない
    • 割り込み耐性がある
  • ツールを活用していて、PC 操作がスムーズ

    • アプリが迷子にならないように工夫している
    • タブが迷子にならないように工夫している
    • 目的のファイルをすぐみつけられるしくみを知っている
  • 手が空かないように工夫している

    • タスク管理
    • 休憩のとり方

手戻りや手直しがない

実装が終わったあとに設計ミスに気づいて書き直すとかいうことになれば、これまた実装が速いとはいえない

  • 全体像がみえている

    • インターフェースや処理の流れを固めることから始められる
  • パターンがみえている

    • これまでの経験を抽象化して理解している
  • リスクを事前に把握できる

    • 経験がものをいいそう
    • 変更が入りそうなところは変更が入る前提で実装する

「実装が速い」という抽象的な概念でも、こうして言語化できれば、教えることも、改善策を考えることもできるようになる