The Clean Coder ch6 Practicing

The Clean Coder勉強メモ

出典: 


Practicing

  • さまざまな業界で、「プロ」は「練習」する
  • プログラマもしかり
  • どんなことをするか?

Some Background on Practicing

  • hello worldとか
  • 著者の若かりし頃は練習といえばSQINT

    • 平方数列
  • 昔は練習するという発想がなかった

    • コーディングに忙しかった
    • 昔はすばやい反応やすばやい運指が必要なかた

      • コンパイル待ちに多くの時間を費やす

Twenty-Two Zeros

  • この40年来、デバイスは10^22くらいすごくなった

    • 早く、軽く、安く
  • しかしやっていることは変わらない

    • ifやらwhileやら

Turnaround Time

  • コンパイル時間は天文学的に早くなった
  • red-green-refactoringループを回せるほどに
  • すばやくループを回すには、練習が必要

    • すばやい決断が必要
    • すばやいキータイプが必要

The Coding Dojo

kata

  • 武道の「形」からきている
  • 同じ問題を繰り返し解くことで…

    • キーストロークやイディオムを脳と指に覚えこませる
    • TDDやCIといった教義を習得する
    • 問題と解決法のペアを潜在意識下に刷り込み、現実のプログラミングで直面した時に解き方がわかるようにする
  • 形まとめサイト

  • さまざまな形を習得し、定期的に練習すること

    • 記憶から消えてゆかぬよう

Wasa

  • 柔道で一方が技をかけ他方が受ける的なやつ
  • 簡単な形を見繕い、ペアを組んで…

    • 一方が単体テストを書き
    • 他方がそれを通す
  • テストを書く側が時間や空間に制約をかけたりもできる

Randori

  • 次々とテストを書きテストを通し…みたいなやつ
  • 他の人の問題解決方法から多くのことを得ることができる

Broadening Your Experience

  • 仕事では単一の言語、単一の環境、単一の問題領域への従事を強制されがち
  • 狭窄になってしまう

Open Source

  • pro-bono

    • 各分野の専門家が、職業上持っている知識やスキルを無償提供して社会貢献するボランティア活動
    • 弁護士や医者が行う
  • OSS: それのプログラマ版
  • 普段触れない領域に触れるのにもってこい

    • Javaの人はRailsにコントリビュート
    • C++の人はPythonにコントリビュート

Practice Ethics

  • 患者は医者に体を差し出して縫合の練習をさせたりはしない
  • 同様に、プログラマのスキルの面倒を見るのは雇用主の仕事ではない
  • 自分で時間を割いて行うのだから、業務と同じ言語や環境を使う必要もない

Conclusion

  • どうあれ、プロは「練習」する

    • ベストを尽くすために
  • スキルを磨くのは自分の時間で

    • 自分の責任
    • 雇用主の責任ではない
  • お金をもらってやるのは練習ではない
  • たくさんお金をもらえるようになるために練習してスキルを磨くのである

英語

  • rehearse

    • 下稽古する
  • sutures

    • 縫合
  • nimble

    • すばやい
  • know … cold

    • …を知り尽くしている
  • choreographed

    • 振り付け
  • ahead of the curve

    • 平均以上に
  • pro-bono

    • 各分野の専門家が、職業上持っている知識やスキルを無償提供して社会貢献するボランティア活動