プログラマーにうまくアドバイスする心理的テクニック【前編】
同僚プログラマーの機嫌を損ねずにミスを指摘できる“魔法の質問”
プログラミングで重視すべき項目や、より良いソースコードをチームで作り上げるこつは何だろうか。エンジニアの実体験を基に解説する。
幾つものメディアやブログが、プログラミングで何を重視すべきかを解説している。例えばネイサン・マーツ氏は、同氏のブログ「thoughts from the red planet」の「Suffering-oriented programming」というエントリ(投稿)で、
- プログラムが正しく機能すること
- ソースコードが美しいこと
- プログラムの処理速度が速いこと
という順番でプログラミングの目標を設定するように勧める。「機能すること、美しいこと、速いこと」はまさに本質を突いた名アドバイスだ。その言葉を初めて見たときから、私は心に刻んできた。
「機能すること」が最も重要なのは、ソースコードを解釈してもらう最も重要な「相手」がCPUだからだ。2番目が「美しいこと」なのは、CPUの次に重要な相手が、ソースコードを読み、保守する同僚プログラマーだから。「プログラミングの相手はCPUと同僚プログラマーだ」というのは、私もかつて主張したことがある。
ソースコードがCPUを相手とする要件を満たし、かつ一緒に仕事をする人にも理解可能であるという要件を満たして初めて、プログラムのパフォーマンスを高める仕事に取り掛かることができる。美しいソースコードは改良もしやすい。おおよその場合、ソースコードを美しくすることは、小さな関数に分割することだ。
対立を起こさず穏便に対処する“魔法の質問”とは?
最近友人が、あるトラブルについて話していた。私も似た経験のあるトラブルだ。友人は、あるチームが何の監督も受けずに作成したソースコード群を結合する立場にあり、そのソースコードの不備に悩んでいた。テストが不十分で、サイロ化(ソースコードやプログラムごとに運用管理)されており、メインプロジェクトのコーディング基準に従っていなかったという。
これは頭を抱える事態だ。そのようなソースコードを結合するには、本来ならテストで示すべきエントリーポイント(プログラムを実行し始める場所)を探さなければならない。本来ならそのソースコードが要件を満たしているかどうかもテストで分かるはずだ。だが、そもそもテストが存在しないため、要件を満たしているものだと信頼するしかない。
このような場合、どのようなアドバイスをしたらよいのだろうか。
先に述べたように、私も似たような経験があった。人は、その相手が誰または何であれ、対立を嫌がるものだ。そこで私は「相手のソースコードに悩まされている」人の役を演じることにした。ソースコードそのものに対する批判は口に出さず、「ソースコードについて分からない点があるから教えてほしい」と、同僚プログラマーに頼んだのだ。
「この機能のテストはどこにあるのだろうか」。テストが存在しないことは分かっていたが、同僚プログラマーにあえてそう尋ねた。こう質問することで、テストが必要だということを相手に穏便に伝えることができる。相手が自分で判断する余地を与えることにもなる。
TechTarget発 先取りITトレンド
米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
TechTarget発 先取りITトレンド
米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[サイボウズ株式会社] AIに何を聞いても「汎用的な答え」しか返ってこないのはなぜか? -
製品資料
[サイボウズ株式会社] なぜAIは組織で定着しないのか? 全社活用を阻む「3つの壁」の突破法 -
製品資料
[株式会社スタディスト] 「不適合品率」改善はどこから始める? すぐにできて効果が大きいポイントとは -
製品資料
[株式会社スタディスト] 食品ロスを利益に変える「現場標準化」のすすめ -
技術文書・技術解説
[株式会社スタディスト] チョコ停・ドカ停を防ぐ「事前対策」の進め方
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
いまIBM iエンジニアが直面する「5つの技術的課題」とその解決策
-
2
SAPの負荷増に苦しむZeissが「リアルタイム分析」「安定運用」を両立させた道
-
3
Microsoft 365侵害企業の9割はMFA導入済み 1002人調査で見えた盲点
-
4
なぜ「Claude Code」拡張は消しても危ないのか? Cursorで不正版配信
-
5
【基本情報技術者試験】データ消失リスクを防ぐ3つの「バックアップ手法」を比較
-
6
なぜMicrosoftは「Rust」を標準言語に? AIで進むC/C++書き換えの課題
-
7
8割がアナログに逆戻りする“やっぱりな理由” DXを阻む2つの落とし穴
-
8
レガシー基幹システムをSAPに統合 山善が突き止めた「標準化と個別最適」の境界線
-
9
脱VMwareの真実:データセンター大手がNutanixを選んだ「コスト以上の理由」
-
10
PHPはそもそも必要か? 脆弱性で問われる自社サイト安全性と保守負担のバランス
ホワイトペーパーランキング PR
-
1
「IT史に名を残すシステム障害」8選
-
2
侵入から横展開まで27秒の脅威にどう立ち向かう? 防御のカギがEDRの理由
-
3
有識者が語る、中堅中小企業に求められる最新のサイバーセキュリティ対策とは
-
4
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
5
10G回線の真価をフルに享受するには? 導入前にチェックしたいポイント
-
6
なぜAIは組織で定着しないのか? 全社展開を阻む「3つの壁」と突破のヒント
-
7
パスワードレスへの移行で失敗しないためには? 導入・運用上の注意点を解説
-
8
自社のセキュリティ対策は大丈夫? 自己診断リストで対策の優先順位が分かる
-
9
ランサムウェア攻撃“究極の対策”はこれだ
-
10
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー