プログラマーにうまくアドバイスする心理的テクニック【前編】
同僚プログラマーの機嫌を損ねずにミスを指摘できる“魔法の質問”
プログラミングで重視すべき項目や、より良いソースコードをチームで作り上げるこつは何だろうか。エンジニアの実体験を基に解説する。
幾つものメディアやブログが、プログラミングで何を重視すべきかを解説している。例えばネイサン・マーツ氏は、同氏のブログ「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
-
事例
[サイボウズ株式会社] 受注約1.5倍と年間2万3000時間超の業務時間を削減、日機装に学ぶDX実践術 -
製品レビュー
[サイボウズ株式会社] 人材不足にどう挑む? ものづくり太郎が語る、製造現場でのAI活用成功の鍵 -
市場調査・トレンド
[グーグル・クラウド・ジャパン合同会社] 金融機関はAIエージェント導入でどう変わる? 7つの変化から19の事例まで解説 -
市場調査・トレンド
[グーグル・クラウド・ジャパン合同会社] 製造業のエージェント型AI活用に向けて押さえておきたい5つのトレンドとは? -
市場調査・トレンド
[グーグル・クラウド・ジャパン合同会社] 1231人への調査で見えた、企業が今直面するインフラの課題と今後採るべき戦略
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
RAGで「データをAIに送る」運用が限界を迎えている理由
-
2
Googleの業務向けAIエージェント「Gemini Agent」が登場 しかし課題は山積み
-
3
なぜ「Claude Code」拡張は消しても危ないのか? Cursorで不正版配信
-
4
いまIBM iエンジニアが直面する「5つの技術的課題」とその解決策
-
5
SAPの負荷増に苦しむZeissが「リアルタイム分析」「安定運用」を両立させた道
-
6
「Copilot」がIT予算を食いつぶす? 高額請求を招く課金体系と節約術
-
7
Claude利用8割のGMO、AI人材の評価軸が「トークン管理」に変わった
-
8
Microsoft 365侵害企業の9割はMFA導入済み 1002人調査で見えた盲点
-
9
なぜMicrosoftは「Rust」を標準言語に? AIで進むC/C++書き換えの課題
-
10
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
ホワイトペーパーランキング 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ジャパンをフォロー