コードも筋肉も鍛え方は同じ?ソフトウェアテストとボディビルの7つの習慣
私の現在の主な仕事は、フロントエンドエンジニアとしての開発とE2Eテストの自動化です。
ところが、日々自動化には取り組んでいるものの、テストエンジニアとして体系的に学ぶ機会は最近あまり持てていませんでした。
そんなとき、Kindle Unlimitedで知識ゼロから学ぶソフトウェアテスト という本を見つけ、手に取ってみました。
実際に読んでみると非常にわかりやすく、基礎の復習に役立つだけでなく、「これはボディビルにも通じる考え方だな」と感じる場面が多々ありました。
今回は現役ボディビルダーである私が、ソフトウェアテストとボディビルの7つの共通点についてまとめてみたいと思います。
共通点1:単一手法では不十分。組み合わせこそ力
ソフトウェアテストにおいては、1つの手法だけで十分とは言えません。
いくら優秀なテストエンジニアが探索的テストを行っても、それだけでプロジェクトを終えることはできないでしょう。
セキュリティテストや負荷テストのように、探索的テストではカバーしきれない領域は必ず存在します。
ボディビルにおいても同じです。
大胸筋を鍛えるとき、ベンチプレスとダンベルフライはどちらも有効ですが、関節の動きや負荷のピークは異なります。
異なる種目を組み合わせることで、筋肉をよりバランスよく鍛えることができるのです。
つまり、ソフトウェアテストもボディビルも、複数の手法を組み合わせることで初めて全体をカバーできると言えます。
共通点2: 早期発見がコストを下げる
ソフトウェア開発では、バグをできるだけ早く見つけることが重要です。
要求を仕様に落とし込む段階でミスに気づければ修正は最小限で済みますが、そのまま実装まで進んでしまうと大きな手戻りが発生します。
発見のタイミングが遅れるほど、修正コストは指数関数的に増えてしまうのです。
ボディビルにおいても同じです。
筋肉は若いうちの方がつきやすく、関節の耐久性・回復力・可処分時間などといった様々点で大きなアドバンテージがあります。
もちろん年齢を重ねても筋肉を成長させることは可能ですが、「早く始めた方が圧倒的に有利」という点ではテストと変わりません。
共通点3: ゴールを明確に描く
ソフトウェア開発では、要求定義を誤ると後の工程で大きな手戻りが発生します。
どんなシステムを作りたいのかを正しく整理できなければ、良いプロダクトは生まれません。
ボディビルも同じです。
大会で順位を上げたいなら、まず「どんな体型になりたいのか」を具体的にイメージし、その上で最適なトレーニング方法を選ぶ必要があります。
理想像が曖昧なまま鍛えても、後の工程で方向性がずれてしまうのです。
つまり、ソフトウェアテストもボディビルも、最初にゴールを明確に描くことが成功のカギとなります。
共通点4: 楽しめる人が最強
セキュリティテストの章で、印象的な言葉がありました。
1日8時間労働のサラリーマン開発者がいくらセキュリティのしっかりしたコードを書いているといっても、1日24時間無休で楽しくハッキングしている人とでは勝負は見えています。
これは、楽しみながら取り組む人は学習スピードも深さも圧倒的に違うことを示しています。
ハッカーが新しい攻撃手法を楽しんで次々に編み出す以上、セキュリティテストに携わるエンジニアも常に学び、吸収し続ける姿勢が欠かせません。
ボディビルも同じです。
トレーニング・食事・休養のすべてが24時間体制で身体づくりに直結します。
これを苦痛と感じれば長続きしませんが、料理に凝ったり、睡眠環境を整えたりと日常に工夫を楽しめる人は、生活そのものがボディビルになります。
つまり、楽しみを見出せる人こそが継続し、結果を出せるのです。
共通点5: 付け焼き刃は通用しない
ソフトウェア開発では「ブルックスの法則」という有名な言葉があります。
遅れているプロジェクトに人員を追加すると、さらに遅れる。
これは、新人がチームに入っても暗黙のルールを学んだり関係構築をしたりする必要があり、即戦力にはならないからです。むしろ既存メンバーの工数が新人のフォローに割かれ、状況が悪化することすらあります。
ボディビルにおいても同じです。
遅れている減量を取り戻そうとして急に極端な施策を追加しても、ほとんどの場合うまくいきません。
- カロリーを過度に削りすぎてエネルギー不足になる
- トレーニングの質が落ちて筋肉を失う
- 結果として「体重は落ちても筋肉量は大幅に減る」という最悪の結末になる
どちらの世界でも、状況がまずいからといって付け焼き刃に頼れば、むしろ悪化するだけなのです。
共通点6: 正確な見積もりより、コントロール可能な計画
付け焼き刃に頼らないために必要なのは、きちんとした計画です。
ただしソフトウェア開発では、要件定義やデザインの遅れがあっても、設計やコーディング、テストの締切を変えずに押し切ろうとする無謀なケースがあります。
私がそうした場面に直面したときは、必ず「機能を削るか、締切を延ばすか」のどちらかを提案します。多くの場合、話のわかる相手であれば受け入れてくれました。
要は、締切は状況に応じてコントロールできるものだという価値観を共有できるかどうかが鍵なのです。
それが難しいなら、最初から十分なバッファを積んだ計画を立てるしかありません。
ボディビルの大会に向けた減量も同じです。
大会の日程は動かせないため、私は最低でも1ヶ月程度のバッファを積んで計画します。
そのおかげで、この3年間は減量の失敗が原因で満足な結果が得られなかった試合は一度もありません。
つまり、正確な見積もりを追い求めるよりも、余裕を持ってコントロール可能な計画を立てることが成功につながるのです。
共通点7: 測れないものは制御できない
品質向上の目標は、必ず数値化できるものにすべきです。
関係者の主観や感情によって評価が変わるようでは、正しい改善につながりません。
例えば「バグの数」だけを指標にすると、開発者のスキルや実装内容に大きく左右されてしまいます。
それよりも「サイクロマチック複雑度」のように、コードの構造そのものを測れる客観的な指標を用いる方が有効です。
ボディビルも同じです。
鏡に映った自分の姿は、光の当たり方や「減量中だから頑張っているはず」という主観に左右され、実際よりも進化しているように見えてしまうことがあります。
だからこそ、体重・腹囲など、明確に数値として記録できる指標を使うべきです。
つまり、ソフトウェアテストもボディビルも、数値で計測できなければ正しくコントロールできないのです。
まとめ
ソフトウェアテストとボディビルは一見まったく異なる領域ですが、根底にある考え方には驚くほど多くの共通点がありました。
どちらも「正しい方法を選び、継続して取り組み、数値をもとに改善を重ねる」ことが成功の鍵です。
今回紹介した7つの共通点は、必ずしもボディビルに限った話ではなく、あらゆる分野の学習や成長に応用できると思います。
読者の皆さんの取り組みにも、何か1つでもヒントになれば嬉しいです。
Discussion