【達人プログラマー】達人が持つ重要な5つのマインド

pragmatic-programmer

プログラマーの仕事は、プログラムを書くこと。

しかしプログラマーの仕事は、それだけではありません。聞き手、アドバイザー、翻訳者と、実にさまざまな役割をもって仕事をこなしていきます。

プログラマーはそんな多様な仕事を、どのようなマインドで作業にあたるのでしょうか。書籍「達人プログラマー」から紐解きましょう。

目次

『達人プログラマー』とは

書籍『達人プログラマー』。エンジニアの間では、必読といわれる名著です。

初版はもう20年以上も前。しかし内容は色あせません。プログラマーの本質は、時代によらず変わらないからです。

それでも技術は日進月歩です。現在では、新装版として内容が見直された第2版が出版されています。本記事は第2版をもとにしています。

プログラマーの5つのマインド

『達人プログラマー』では、プログラマーが心がけるべきことが100のTipsでまとめられています。

これらをまとめると、プログラマーの持つ5つのマインドが見えてきます。

プログラマーの5つのマインド
  1. 誰も(自分も)信用しない
  2. 全力で楽をする
  3. 他人事のように見る
  4. 突き進む(でも慎重に)
  5. 変化しないことを恐れる

マインドその1:誰も(自分も)信用しない

プログラマーは、誰のことも、自分のことさえも、信用のおけない存在として捉えます。人間不信なわけではないです。人はみんな間違える、と考えます。

だから間違えないように意識しよう…ということでも、ありません。

全ての人が間違える。これを認めたうえで、対策を考えるのです。

  • にくくする仕掛けをつくる

完璧なソフトウェアは作れない

根底にあるのは、この考えです。

あなたは完璧なソフトウェアを作ることができない

この世の中に、完璧なソフトウェアなど存在しないし、自分が史上初の作成者となることもない。

プログラマーは、まずこの事実を受け入れます。

ではどうするか?

ものごとを防衛的に進めるのです。トラブルが発生する前に兆候を見つけ、予期しない出来事の先を見越し、脱出できない状況に陥らないようにします。

プログラマーは、契約による設計や、エラー処理設計などを駆使し、間違えてもすぐに気付くような仕掛けを施します

欠点を放置しない

「割れ窓理論」という有名な理論があります。

美しく清潔に保たれたビルも、1枚の割れた窓が長期間放置されると、ゴミが撒き散らされ落書きがされて荒れ放題になります。

美しさを保つためには、たとえ1枚でも、割れた窓を放置しないことが肝心です。

ソフトウェアも、1つの欠点がきっかけで崩壊していくことがよくあります。クリーンで機能的なシステムが、たった1つの割れた窓で腐っていくのです。

プログラマーは、クリーンで美しいコードを汚さないよう、細心の注意を払います。

割れた窓を放置しておかないこと

マインドその2:全力で楽をする

「面倒くさがり」な人は、プログラマーに向いていると言われます。

10,000個のデータをひたすらタイプする、会計情報を電卓ですべて計算する…プログラマーは、こんな面倒な仕事が大嫌いです。面倒な作業は、時間がかかるだけでなく、失敗の温床になったりもします。

だからプログラマーは、面倒を受け入れるのではなく、どうやったら楽をできるのかを考えるのです。

楽するといっても、サボるという意味ではありません。同じ結果を出すのに、より短時間で効率的にさばく方法を考えるのです。

  • 面倒なら、全力で楽をする方法を考える

すべてを連動させる

例えば、プログラムをビルドして、テストして、リリースして…。このような作業は、開発中に何回も繰り返される、面倒な仕事です。これを楽にするために、どうするか。

ここで出てくるのが、バージョン管理の仕組み

バージョン管理とは、ソフトウェアを変更した履歴を記録する仕組み。バグ修正や機能追加したソフトウェアは、その都度、バージョン管理システムに登録していきます。

楽をしたいプログラマーは、ここに仕掛けを入れます。バージョン管理に登録すると同時に、ビルド、テスト、リリースを自動的に行うような仕掛けを作るのです

バージョン管理によってビルド/テスト/リリースを駆動すること

すぐに、何回でも

ソフトウェアのデバッグもまた、面倒な作業のひとつです。

デバッグ作業は、網を使って、魚を捕るようなもの。バグという魚を取り逃がさないよう、何回もテストという網を放ります。

でも、そんな網をいちいち手で放っていたら、取り逃がしも多くなるし、労力に見合いません。

ここにも仕掛けを入れます。テストという網を、機械的に即座に何回も自動的に放ることで、バグという魚を、最小限の労力で捕りつくすのです。

早めにテスト、何度もテスト、自動でテスト

マインドその3:他人事のように見る

プログラマーがコーディングをするとき、普通はパソコンに向かって作業します。

コーディングは、当然ひとりでやる作業。ですがプログラマーはそのとき、「コーディングをしている自分」「それを横で見ている自分」のふたりがいる感覚を持っています。

そして、自分がやっている作業を、脳内にいるもう一人の自分が常にチェックをしているのです。

  • 自分の作業を冷静な目で見つめる

批判的に見る

プログラマーは、必要に応じて、書籍の情報、検索サイトの検索結果、生成AIの回答、色々な情報を参照します。

しかし決して、それらを鵜呑みにはしません。

それらが本当に有用であるかを、自らの手で検閲を行ったうえで、知識をアップデートしていきます。

プログラマーは、見聞きするものごとについて、常に批判的な考え方で接するのです

見聞きした物事を批判的な目で分析すること

非難している暇はない

ソフトウェアにバグが発生すれば、それを直すためにデバッグを行います。

デバッグはとても感情的になりやすい作業です。このバグを埋め込んだのはだれだ?そのエラーを発生させているライブラリはどこのベンダーのものだ?

でも、プログラマーは知っています。バグを仕込んだ容疑者への非難にエネルギーを使うのは、ムダであることを。

非難するのではなく、問題を修復すること

プログラマーが挑む相手は、問題そのものです。それを仕込んだのが誰かなんて、余計なことを考えているヒマはありません。

マインドその4:突き進む(でも慎重に)

ソフトウェア開発には、作っているものが直接目に見えないという特徴があります。ビルや橋の建設とは違う、やっかいな点です。

まるで、ゴールも見えない、暗闇の中のマラソンのよう。

やみくも走るだけでは、ゴールには辿り着けない。かといって立ち止まっているわけにもいかない。

プログラマーはそんなとき、やみくもに事をすすめません。必ず行く先を照らしながら進むのです

  • 先の道筋を確認しながら進む

行く先を照らす

行く先を照らすために使う方法。それが、曳光弾です。

目標を見つけるには曳光弾を使うこと

曳光弾(えいこうだん)とは、機関銃に装てんする特殊な弾丸で、発射すると光の筋が描き出されます。これで通常弾の照準を調整するのです。

曖昧な要求事項、難解なアルゴリズム、初めての開発技法、言語、ライブラリー。ソフトウェア開発の世界は、そんな未知の存在に阻まれた、真っ暗闇の世界です。

そんな世界をつきすすむとき、曳光弾を使います。

要求の段階で、システムの最終形態となるイメージを迅速かつ目に見えるかたちで作るこれが曳光弾となります。

曳光弾で先の道を照らし、道を踏み外さないように開発を進めるのです。

マインドその5:変化しないことを恐れる

平穏に進むソフトウェア開発。要求は明確で、手慣れた設計技術と、実績のあるライブラリ。その行く先には、まるでなにも問題がないかのよう。

プログラマーは、こんな変化の少ない平和なときにこそ、大きなリスクが潜むことを知っています。変化がない、というのは怪しむべきことなのです。

  • 変化がないときこそ怪しむ

大きな視線で見る

「ゆでガエル」という話があります。

熱湯の中にカエルを入れると。びっくりして飛び出します。しかし水の入った鍋にカエルを入れ、徐々に熱すると、温度変化に気付かずにゆであがってしまうそうです。

カエルのようになってはいけません。

周りだけ見て変化がなくても、疑うのです。常に大きな視線で、なにが起こっているかを注視します

大きな構想を忘れないようにすること

変化を起こす

今度は「石のスープ」の話です。

戦地から帰路へ向かうはらぺこの兵士。ある村へたどり着くも、村人たちは家の扉を固く閉ざします。

兵士は一計を講じます。鍋にいっぱいの湯を沸かし、石を沈めました

不思議に思った村人。表に出てきて尋ねます「具はそれだけかい?」。兵士は答えます。「そのとおり。しかしいくらか人参を入れると味が引き立つだろう」。村人は、人参を持ってきて鍋に入れます。

「これで終わりですかい?」「イモが数個あると味がどっしりとするな」。別の村人がイモを持ってきて鍋に入れます。

そして、ほかほかしたスープができあがりました。兵士は石を取り除き、村人たちと充実した食事を楽しみました

兵士は、村人をうまくひっかけたと言えます。しかし大事なことは、その石がきっかけとなって、村人たちが団結して食べ物を出し合うという、相乗効果を引き起こしたということです。

ソフトウェア開発が停滞したときには、「それなりに動くなにか」という石を放り込みます。1機能だけのプロトタイプ、画面表示だけのモック、そういったものが石となります。

そしておもむろにつぶやきます。「~を追加するともっとうまくいくんだけど…」

他のみんなに、未来をすこし垣間見せる。するとみんなを動かすことができるのです。

変化の触媒たれ

まとめ

プログラマーには、実にさまざまな知識と能力が求められます。

アーキテクチャー、コミュニケーション、スケジューリング…。様々な作業を、高度なレベルでこなす必要がある、大変な仕事です。

でも、そんなプログラマーは、世の中を変える力を持っています

パソコン、スマートフォン、家電、自動車…今やありとあらゆるところに存在するプログラム、それらは、プログラマーが作り出しています。

プログラマーには、大きな責任も伴いますが、未来をこの手で作り出す力があるのです

『達人プログラマー』は、以下のTipsで締めくくられています。

これはあなたの人生だ。皆と共有し、祝福し、生み出していくこと。そして思いっきり楽しむこと!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次