エンジニアステップ

初心者エンジニア(1年目~3年目くらい)のための技術ブログ

「プロダクティブ・プログラマ 生産性向上術」の感想

「プロダクティブ・プログラマ -プログラマのための生産性向上術」の感想です。

プログラマの生産性は10^n (n>=2) オーダーで違います。

そして、この本を読むと、生産性向上に役立ちます。

 

著者が発見したプログラマの生産性に関する4つの原則があります。

  1. 加速
  2. 集中
  3. 自動化
  4. 正準化

加速

コンピュータを使う時には必ず段取りが必要です。

この段取りを減らすほど、本質的な問題に対応できます。

 

具体的な方法の例は以下の通り

  • ランチャーでアプリケーションを効率的に起動する ※Claunchおすすめ
  • クリップボード拡張機能を使う ※Cliborおすすめ
  • マウスよりもキーボードの方が当たり前だけど早い。ショートカットを覚えよう

 

IDE(EclipseやIntelliJ)で使えるショートカットは以下の通り

  • クラスへジャンプ
  • シンボルリスト
  • インクリメンタルサーチ
  • 直近に編集していたファイルのリスト
  • ローカル変数の抽出
  • 選択範囲を1段階広げる

 

正直本書で載っているアプリは諸々古いので自分で探したほうが良いです。考え方だけ真似しましょう。

www.engineer-step.com

 

集中

プログラミングをする時に大事なのは集中力です。しかしこれは簡単に消えてしまうもの。儚い資源。

そこで以下のような行動を取るのがオススメです。

  • 気を散らす要因を排除する(ヘッドフォン、メールクライアントの通知を切る)
  • 沈黙の時間を作る(他の人に声をかけるのを禁止する)
  • ファイルを探す時にナビゲーション(探索)をしないで、検索をする
  • 正規表現を使う
  • モニターを複数にする
  • 仮想デスクトップで作業スペースを独立させる

 

自動化

ちょっとした道具を作れるようになると自動化ははかどります。

「手作業では一見大した手間はなさそうだが、実は自動化する価値が高い」

 というのがポイントです。

 

こんな方法が推奨されています。

  • ローカルへキャッシュする
  • Webサイトとのやりとりを自動化する(curlコマンドなど)
  • RSSフィードを活用する
  • ビルド以外の作業の自動化にAntを使う(Groovyのほうが良いかも)
  • 日常的な作業の自動化にRake(Ruby向けビルドツール)を使う
  • Webアプリの操作記録にSeleniumを使う(Seleniumを使えばWebアプリ操作を自動化出来ます)
  • 例外情報抽出の自動化にBashを使う
  • バッチファイルではなくWindowsPowerShellを使う
  • Automatorを使い古いダウンロードファイルを削除する(Mac限定)
  • Subversionをコマンドライン上で使う(今はGitの方がいい)
  • SQLファイルの分割ツールをRubyで作る

 

自動化するか、手動でやるかは見極めが難しいです。

以下のような観点で考えるといいです(というか、毎回迷わないようにしておくのが一番大事)

  1. 自動化したほうが長い目で見て時間の節約になるか
  2. 集中力が途切れるか
  3. ミスをするリスクがあるか

 

自動化に使えるビルドツールはこの辺を参考に。

www.engineer-step.com

 

正準化

「正準化」は聞き慣れない言葉だと思います。

重複した余分なものを省いて単純にすることを言います。

 

Don't Repeat Yourself(DRY原則)=同じことを繰り返すな

と通じるものがあります。

 

詳細は割愛。

 

まとめ

そんな感じで、

  1. 加速
  2. 集中
  3. 自動化
  4. 正準化

という観点で自分の作業を見直すと効率が上がると思います。

 

あと、「You Ain't Gonna Need It(YAGNI)=どうせいらないって 」という考え方も意外と大事。