職人技とクレバス

2011年1月19日

Daniel Terhorst-Northによる最近のソフトウェア職人技に関するブログ記事は、多くのブログ議論を引き起こしました(興味があれば、以下に要約します)。多くの内容がありますが、彼のテーマの一つが特に心に響いたので、この投稿を書きました。

しかし、その前に、一つの要素を脇に置いておきたいと思います。私は長い間、ソフトウェア開発のメタファーに関する議論は退屈だと感じてきました。長年感じてきたようにメタファーへの疑問提起にはそれなりの場所がありますが、ソフトウェア開発が職人技、芸術、技術、あるいはデザートのトッピングのどれであるかには基本的に興味がありません。

私にとって重要な点は、職人技というメタファーではなく、過去数年で生まれたと思われる運動の特徴です。私の外部からの視点では、ソフトウェア職人技コミュニティを活性化させた主要な力は、アジャイル運動の変化への反発です。アジャイルの初期においては、エクストリームプログラミングが支配的な系統であり、技術的な実践について多くのことを述べていました。現在、支配的なアジャイル系統はスクラムとリーンであり、プログラミングにはあまり関心がありません。そのため、主にプログラマーとして自己認識する人々は、自分たちの生活の大きな部分がアジャイルの世界ではもはや重要でなくなっていると感じています。

そのため、ソフトウェア職人技の世界は、プログラミングが再び中心となる場所です。人々は、テスト、関数型言語の学習と使用方法、優れた設計の原則などについて議論できます。そして、経営と分析の問題は、弱体化したアジャイルコミュニティに任せることができます。ここで、私は多くの点で共感しています。DesignStaminaHypothesis(設計持久力仮説)を受け入れています。これは、効果的にソフトウェアを開発するには、優れた技術的な実践に注意を払う必要があることを示唆しています。そのため、これらの問題に注目する運動は重要です。しかし、技術的な問題に集中しすぎることで、職人技運動が顧客とのコミュニケーションという同様に重要な役割を軽視する危険性もあります。

ケントの作品で私が非常に気に入っていることの1つは、顧客との関係と、私たち側の約束を適切に実行するために必要なスキルとの間に真のバランスがあることです。私は彼がアジャイル宣言作成会議で、エクストリームプログラミングの主な目的はソフトウェア開発者と顧客との間の溝を埋めることだったと言っていたのを覚えています。ダンと私が「破滅の巨大なクレバス」と表現したこの溝は、ソフトウェア開発における最も重要な問題の1つです。

クレバスの責任の多くは、プログラマーと顧客は非常に異なる存在であり、コミュニケーションをとることができない(そして取るべきではない)という考えに基づいた組織習慣にあります。しかし、多くのプログラマーは、クレバスを広げることに喜んで協力しているようです。数年前、私はエリック・エバンスの観察に衝撃を受けました。それは、開発者が年上になるにつれて、技術的な問題に集中する傾向があり、自分が取り組んでいるドメインを理解することに関与しなくなる傾向があるというものです。ドメイン駆動設計は、それを変えようとするものですが、多くの場合、リポジトリへの依存性注入の使用方法など、トピックの議論に巻き込まれてしまうようです。(私自身のキャリアもこれによって苦しんできました。一般的なソフトウェア開発の専門家として成長するにつれて、ドメインモデリングを行うことができなくなりました。それは常にソフトウェア開発で最も好きな部分だったにもかかわらず。)

したがって、スクラムとリーンが技術スキルを無視することでこの問題を悪化させるように、職人技も関係スキルを無視することでクレバスを悪化させる可能性があると懸念しています。私の理想とするプログラマーは、単にプログラミングの技術に熟練しているだけでなく、ドメインについて学ぶことに意欲があり、ドメインエキスパートとコミュニケーションをとることで、顧客が自分の仕事で成功するためにソフトウェアを支援する最良の方法を見つけることに参加できる人です。ダンを言い換えると、ソフトウェアをプログラマーの世界の中心に置くのではなく、プログラマーはソフトウェアが提供すべき利益に焦点を当てるべきです。

ブログの議論

(このエントリへの返信として投稿されたアイテムが含まれています。)

  • Daniel Terhorst-Northのオリジナル投稿
  • Liz Keoghは、ソフトウェア職人技マニフェストに対する彼女の不快感を説明しています。
  • Gil Zilberfeldは、ソフトウェア職人技とalt.netを比較しています。
  • Jason Gormanは、ラベルにこだわらないように求めています。
  • Michael Feathersは、私たちの仕事にもっと意図的な練習を求めています。
  • George Dinwiddieは、高品質な仕事が顧客にとってなぜ重要であるか、そして資格やライセンスがどのように役に立たないかについて、物理的な例を示しています。
  • Daniel Terhorst-Northは、彼の以前のいくつかの点を拡大して明確にしています。
  • Bob Martinは、ソフトウェア職人技は、粗悪なソフトウェアを書くことにうんざりしているプログラマーのためだけだと言っています。
  • Bob Martinは、私の懸念は根拠がないと考えています(彼が正しいことを願っています)。