開拓するのか制御するのか

George Stocker    
チームがテスト駆動開発を通じて、より良いソフトウェアを、より速く提供できるようにすることを使命とするソフトウェア技術者。
この記事は、著者の許可を得て配信しています。
https://georgestocker.com/2020/03/04/cultivate-vs-control/

制御することで良いコードが強制的に誘発されるのでしょうか、それよりはむしろ、良いコードを開拓しますか? コントロールとは、RACIマトリックス、バグメトリックの追跡、コードレビュープロセス、ゲートチェックイン、ゲートデプロイ、スタイルガイド、コードフリーズなどを指すのでしょうか?

答えは簡単ではありません。

「開拓する」と言うとどっちつかずとも聴こえ、VPEやCTOがお気に召すようなものには聴こえません(もしあなたがCTOであれば、CEOや役員会の皆さんに「開拓する」などとは死んでも口には出来ないのではないでしょうか)。しかし、RACI、バグメトリック、ゲートチェックイン、および変更管理をライン開発者に伝えることから始めれば、彼らは熱心にアイデアをサポートしてくれるか、内実ではドン引きする可能性があります。

私は「実のところはドン引きする」グループに入るかも知れません。それらの活動に価値がないと信じているからではなく(ソフトウェア開発を理解していない他の人間を管理することになったとしても価値はあります)、こうした活動では何らソフトウェアの改善にはつながらないからです。せいぜい物事を悪化させないためのメカニズムにしか過ぎません。これらのプロセスから欠陥のないソフトウェアを手に入れることも、それらを使用して特徴をより速く伝えることも出来ません。

より良いソフトウェアをより速く提供することをゴールとする場合、あるいは、私が考えているように、チームの生産性を2倍にしようとする場合(理屈っぽい言い方だと本当は有効性というところを「生産性」と呼ぶことになります。マーケティングとは厄介なものです)。そうなると真実は既にお分かりでしょう。ゲートチェックイン、変更管理、バグトラッキングメトリック、およびRACIマトリックスは、災難から引き起こされる変化の流れを食い止める材料にしか過ぎません。より良いソフトウェアをより速く提供するというゴールの達成にはつながりません。

開拓という言葉は、役割を果たしていると言うにはどっちつかずのように聴こえます。ソフトウェアは、伝えようとしていることを常に理解しているとは言えない人間、あるいは、(主に理解できない何かしらの問題が故に) 問題に取り組むよりもインターネットサーフィンをする人間、あるいは、タイヤブランコで振り回したがっていると思いながらも、ツリーハウスを造り上げるにはいい機会だと考える人間により作り上げられています。


ドキュメントパネルがいみじくも示しています

こうした人たちがより良いソフトウェアをより速く作り上げようとするなら、いくつか必要なものがあります。

1.要件を理解すること(!)

2.変更のしやすさ。システムへの追加と変更を容易にすること。

3.変更を容易に伝え、それによるより大きなシステムへの影響を容易に示す能力。

4.既存のシステムへの変更または追加の際のバスファクターの排除。

それらの「制御」メカニズムのうち、どれがこうした結果をもたらすでしょうか? ありません。価値が無いというのでは無く、全てはコード自体で決定されるからです。

だからこそ、テスト駆動開発(TDD)こそがより優れたソフトウェアをより迅速に作り上げるための中心にあり、全てのプロジェクトチームはそれを採用すべきだと確信し、重要視しているのです。TDDを使用して業務を開拓すれば、より優れたソフトウェアのより迅速な提供が可能となります。TDDにより以下のことが実現します。

1. 要件はコードとそのテスト結果で書類化されます。

2. 変更は簡単です。ロジックは分離されています(プログラマーでない方はこう考えてください。箱から欲しいものを取り出す度にいつも屋根裏部屋をきれいにする必要などありません)。

3. テストスイートの実行により、変更が既存のテストの失敗につながるかどうかが直ぐに判ります。またこれらのテストは、コードが転送される前に問題が検出されるほど速やかに実行されます。

4. テストで規定されたシステムには、バスファクターを排除するために2つのことが必要です。1)読み取り可能なテストであること、および記述されていてドメイン中心の名前がつけられていること。

これらのまとめとして、私のお気に入りの逸話の語り手、(shog9という名でも知られる)ジョシュ・ヘイヤーからの言葉を(彼はTDDについて触れてはいませんが)(再び)引用して最後とします。

扱いやすく解決出来る問題などそんなに多くはありません。雑草を刈るのではなく、ただひたすら耕すのです。スパムを排除するのではなく、スパムの脅威から身を守り続けるのです。

ソフトウェアシステムとは大体そんなものです。小さなステップで容易に繰り返すことの出来るシステムで、いい仕事を開拓することです。そしてテストに合格する持続性のある確かな強化を実践することで、習慣づけを行うのです。それを十分に行えば、より良いソフトウェアをより速く提供する能力が養われることにつながります。


コメントを読む

新着ピック  






















新着ニュース

東大卒プロゲーマー「ときど」はスランプに陥っていた——ウメハラからの助言、そしてたどり着いた「努力2.0」

5分でできるS3とCloudFrontを利用したセキュアな静的Webサイトの作り方 | Developers.IO

[初心者向け] AWS CDKのレイヤーについて調べてみた | Developers.IO

気化した過酸化水素で除染すればN95マスクも再利用可能に | TechCrunch Japan

Wheelsがハンドルとブレーキレバーがセルフクリーニングされる電動バイクを展開 | TechCrunch Japan

ロケット打ち上げスタートアップのSkyroraは消毒液とマスクの生産に注力 | TechCrunch Japan

AWSアカウント間でAmazon EventBridgeイベントを送受信してみた | Developers.IO

CloudFrontの作成や更新時間が約5倍高速になりました | Developers.IO

ポラロイドカメラが復活、新モデルPolaroid Nowが登場 | TechCrunch Japan

新型コロナ、過去2カ月の感染状況を比較した

市販の材料を使い1分で完成する医療用フェイスシールドの作り方をニューヨーク大学が無料公開 | TechCrunch Japan

「エスパーウィーク」は自宅で新ポケモン捕獲のチャンス 家で遊ぶ「ポケモンGO」まとめ

[オンラインハンズオン] はじめての自然言語処理(NLP)powered by LINE API Expert #jawsdays #jawsug #jawsdays2020 #LINE_API | Developers.IO

ソフトバンクGも出資の英OneWebが新型コロナで破産申請 74の衛星を残して

Looker 7でIDE(モデルやビューのWeb編集画面)のUIが改善されました #looker | Developers.IO

Lookerで「Liquid変数」を使ってWeb記事のURL情報をカスタマイズ #looker | Developers.IO

5分間で陽性がわかる米食品医薬局が新たに認可したAbbottの新型コロナ検査 | TechCrunch Japan

ソフトバンクなどからの追加資金を確保できずOneWebが破産を申請 | TechCrunch Japan

【小ネタ】スクリーンショットをカレントへ移動する処理をちょっと深掘り | Developers.IO

AIとビッグデータが新型コロナとの戦いで奇跡を起こすことはない | TechCrunch Japan

もっと見る
記事をPICKする
会員登録
Register
記事をPICKする

会員登録すると、もっと便利に利用できます。