プロのエンジニアに必要なものとはなんだ?『Clean Coder』に学ぶ信頼獲得のメソッド【今こそ読み解きたい名著】

プロのエンジニアならば、必ず有する周囲からの厚い信頼。しかし、信頼とはどのように獲得すればいいのでしょうか。名著『Clean Coder』から、エンジニアらしい信頼獲得の術を学びます。

プロのエンジニアに必要なものとはなんだ?『Clean Coder』に学ぶ信頼獲得のメソッド【今こそ読み解きたい名著】

数多くの開発者から支持を受け、読み継がれてきた名著。そこには読み継がれる理由があります。 名著には、内容・ボリュームともに充実した書籍が多く、概要に目を通しただけで本を読んだつもりになっていたり、腰を据えて読む時間がなく「積ん読」してしまいがち。「エンジニアが絶対読むべき書籍●選」といった記事をブックマークするだけで読んだつもりになっていないでしょうか。 ポイントを押さえつつ内容を深掘りし、名著の根底に流れるエッセンスを開発に活かしましょう。

アプリエンジニアの池田 惇@jun_ikdです。

エンジニア向け名著を読み解いていく当企画、今回は『Clean Coder プロフェッショナルプログラマへの道(以下、本書)(アスキー・メディアワークス、2012年)の内容を追っていきながら、プロのエンジニアとしての振る舞いについて考えてみたいと思います。

プロフェッショナルとして信頼を勝ち取るには

本書のサブタイトルにもある「プロフェッショナルプログラマ」を目指すには、どのような道をたどっていくべきでしょうか。

私は“プロフェッショナルと認められている” とは、周囲からの信頼が得られている状態だと思います。エンジニアとして信頼を得るためには、設計・実装などの技術力が必須です。しかしいくら高い技術を持っていても、それだけでは信頼は得られません。むしろ、コミュニケーションやセルフマネジメントなど、技術以外の面が信頼に大きく影響すると考えています。

本書でも技術面のみならず、コミュニケーション方法や時間の使い方といった信頼獲得につながる要素を解説しています。心がけだけでなく具体的なテクニックも紹介されているため、読んですぐに活用できるのです。

エンジニアは完璧を目指す責任がある

本書では、バグをゼロにすることは現実的ではないが、完璧を目指す責任があると説いています。

同じ間違いを何度も繰り返してはいけない。プロの道を究めていけば、間違いの割合は限りなくゼロに近づいていく。決してゼロになることはないが、ゼロに近づける責任があるのだ。

『Clean Coder プロフェッショナルプログラマへの道』p.37より

間違いの割合をゼロに近づけ、「プロの道を究めていく」には、失敗から学んでいくしかありません。なぜ、ここまで求道的になる必要があるのか。本書では、エンジニアはある大きな責任が前提として存在することを説いています。

とても恐ろしい責任だ。それは、エンジニアとして、マネージャが知らないシステムやプロジェクトの深い知識を持つということだ。知識を持てば、行動する責任が伴う。

『Clean Coder プロフェッショナルプログラマへの道』p.19より

ものづくりにおいて、開発・デプロイ・運用を担うのはエンジニアです。良いものを作り、プロジェクトを成功させるためには専門性を発揮するだけでなく、エンジニア自身がコミュニケーションを通してチームやプロジェクトに影響を与えていくことが必要です。

『Clean Coder』で押さえたいポイント

本書にはテスト駆動開発などの技術的な内容も含まれていますが、本稿では技術以外の面に注目し、以下の項目をピックアップしました。

  • エンジニアはどのようにYES/NOを言えばいいのか
  • 会議との付き合い方

特に若手のエンジニアは状況把握ができないばかりに、つい流されて無理にYESと言ってしまうことがあります。また、会議の多い現場に慣れてしまい、自分の時間管理が上達しないまま過ごしてしまう危険性があります。だからこそ、本書を参考にプロに近づく成長速度を高めていく必要があると、私は考えるのです。

エンジニアはどのようにYES/NOを言えばいいのか

目次の中でひと際目を引くのは第2章「ノー」と言うと第3章「イエスと言う」ではないでしょうか。

誰しも、日常の業務で当たり前のようにYES/NOというコミュニケーションをしていると思います。エンジニアが口にする「YESかNOか」は、周囲にどんな意味を与えるのでしょうか? プロフェッショナルとしてどのようにYES/NOを使えばいいのか?といったことを考えてみます。

最善の成果を生むためにNOと言う

本書ではエンジニアのYES/NOコミュニケーションの例として、マネージャのマイクとエンジニアのポーラの会話が紹介されています。

以下の例は、みなさんの現場でも日々交わされているような会話ではないでしょうか。

マイク「ポーラ、明日までにログインページが必要なんだけど」
ポーラ「えっ! 明日ですか? えーと、はい。やってみます」
マイク「よかった。ありがとう!」

『Clean Coder プロフェッショナルプログラマへの道』p.50より

この会話は対立もなく一見スムーズに見えますが、本書では「プロの行動ではない」と述べられています。なぜなら、このときポーラはログインページの準備が、明日までに間に合わないと分かっているのに伝えていなかったからです。一方マイクは「やってみます」を「明日までにすべて用意できると約束します」という意味で受け取っています。

この例のように、エンジニアが「無理かもしれないが、やってみる」と答えるとき、他のメンバーはコミットしたと受け取ってしまいがちです。相手の期待に応えたい、対立を避けたいという意図で「やってみる」と言ってしまうと、かえって事実が見えなくなり、混乱を招きます。一方、プロは「返答の要件定義」が明確です。

本書にある次の会話例を見てみましょう。

マイク「ポーラ、明日までにログインページが必要なんだけど」
ポーラ「ちょっと無理ですね。2週間はかかります」
(中略)
マイク(イライラして険しい表情で震えながら)「それはだめだよ。明日の顧客デモで、ログインページが動いているのを見せなきゃいけないんだから」
ポーラ「明日までにログインページのどの部分が動けばいいんですか?」
マイク「ログインページなんだぞ! ログインに決まってるだろ」
ポーラ「ログインページのモックアップであれば、すでにあるのでお渡しできます。ただ、ユーザ名とパスワードのチェックはしていません。Eメール送信やパスワード再発行の機能もありません。トップに企業ニュースのバナーもありませんし、ヘルプボタンもホバーテキストも動きません。(中略)」
マイク「ログインはできるんだね?」
ポーラ「はい、ログインはできます」
マイク「素晴らしいよ、ポーラ。君は命の恩人だ!」

『Clean Coder プロフェッショナルプログラマへの道』p.50,51より

こちらの例ではマイクが感情的になり、2人が対立しているように見えます。しかし、2人はこの関係者にとって、この時点での最善の成果を目指すためのコミュニケーションがとれています。安易にYESと言うのでなく、ときにNOを使い、目的を見定めることがプロフェッショナルな対応なのです。

YESと言える方法を探す

無理な期限で仕事を依頼されたとき、品質を落として締切日に間に合わせようとしたことはないでしょうか。デッドラインを死守するためにテストを書かず、リファクタリングもせずに納品する、といった具合です。

本書では、これはプロとしての行動ではない、と述べています。

テストを書かなければ、もっと早くできることはない。リファクタリングをしなければ、もっと早くできることはない。リグレッションテストを実行しなければ、もっと早くできることはない。長年の経験から得た私の教訓からすると、規律を破ると遅くなる。

(中略)プロとして基準を守る責任がある。コードはテストしなければいけない。コードはクリーンにしなければいけない。システムの他の部分を破壊しないようにしなければいけない。

『Clean Coder プロフェッショナルプログラマへの道』p.72より

実際、手を抜いたから開発が早く完了した、ということは私の経験でもありません。手を抜くと問題が発生しやすくなるばかりか、終えた後の達成感もなく、仕事へのやりがいも下がってしまいます。

本書では、難題に対してただNOと言うのではなく、目標に近づく方法を見つけてYESと言うことがプロとしての振る舞い方だと述べます。最終目標へのコミットを約束できない場合でも、「ある部分まではYES」と言えるような、創造的な方法を懸命に探すことが重要なのです。

 できるかどうかわからないのであれば、その目標に近づく行動を約束しよう。できるかどうかをみつけることが約束になるのだ!
 例えば、リリース前に25個のバグを修正すると約束するのではなく(それが可能であったとしても)、その目標に近づくための3つの行動を約束する。

  • 25個のバグを調査・再現する。
  • バグを発見したQAの隣に座って、再現方法を確認する。
  • 今週は時間が余ったら、できるだけバグを修正する。
『Clean Coder プロフェッショナルプログラマへの道』p.69より

良い方法を見つけて一歩ずつ進むことで、結果としてゴールにも近づくことができるでしょう。

会議との付き合い方

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く