bonotakeの日記

元・ソフトウェア工学系研究者、今・AI系エンジニア

ソフトウェア開発での属人性は排除すべきでない??

昨晩、このような記事を読みまして。

ascii.jp

この中に、このような話が。

江草氏がたどり着いた答えは、「属人化を排除するのはよくない」だ。少人数のエンジニアが開発したものが大規模に普及している現実がある。

これについて、僕がFacebookの限定公開の記事にて、こう書いたんですよね。

ソフトウェア工学の基本思想とは相反するんだけど、一面の真実なんですよね……

すると、守田憲司さん(アジャイルコーチな方)からコメントが。

一言で「属人性の排除」と言ってもいろんなコンテキストが有りますが、一昔前のソフトウェア工学で言われた属人性の排除は、現在では概ね否定されていて、相反するって事は無いと思います。

(強調は筆者)

おおう、これは、ついこないだまでソフトウェア工学の研究者だった者にとっては聞き捨てならないぞ。 ということで掘り下げて聞いてみました。以下ログ。

Takeo Imai > 現在では概ね否定されていて

というのは、どのへんで言われてることなんでしょう?

Takeo Imai 僕自身、ついこないだまでソフトウェア工学の研究者だった(今も研究自体は続けてる)ので、ちゃんとしたソースを知っておきたいです

守田 憲司 端的には、CMMIなどは使われなくなって、アジャイル開発が一般的になってるという事です。

アジャイル開発自体は、現実には、従来型以上に属人性は排除されますが、ちょっと意味が違います。この記事のように。

従来のソフトウェア工学の流れも続いてると思いますが、それら全体が使われなくなって来ていると思います。

Takeo Imai > 現実には、従来型以上に属人性は排除されますが、ちょっと意味が違います。

この辺がよくわからなくて、もう少しきちんと教えて頂ければ……たとえばScrumだと、基本的にチームの構成員は「みんな同じスキルを持っている」(=チーム内に属人性はない)という考え方がベースにあると思いますが、これはどう「ちょっと意味が違」うのでしょうか。

守田 憲司 『Scrumだと、基本的にチームの構成員は「みんな同じスキルを持っている」(=チーム内に属人性はない)という考え方がベースにある』というのはよくある誤解です。

基本的にクロスファンクショナルチームなので、混成員のスキルが様々な事が基本です。

まぁ典型的なWFと比較すれば、多能工を志向しますが。

守田 憲司 大きな違いは、ドキュメントでしょうかね。従来型だと、ドキュメントを整備して、それに沿って作業すれば誰でも、作業ができる事を目指しますが、アジャイル開発では、そこが暗黙知になってる事を許容する代わりに多能化して、誰か居なくなっても大丈夫なようにします。

この時点で、「FBでやり取りするのは難しい」ということになって、「またお会いしたときに!」となって終了したのですが。

僕もわかったようなわからないような、何とももやもやした感覚。

ざっくり要約+補足すると、

  • 今はCMMI(的な手法・プロセス)は使われなくなり、アジャイル開発が一般的
  • アジャイル的な手法では、属人性の排除はなされるけど、その考え方が従来型のソフトウェア工学のものとは違う
  • Scrumでの「チーム内の属人性は排除」は「よくある誤解」

僕自身はそこまでアジャイル信者でもない(否定論者でもない)ので「アジャイル開発が一般的」と言われると、ちともにょってしまうのですが。ただ、より多くの現場に普及しつつあるのは確かにそうでしょうね。

結局、誤解を恐れず、守田さんの言葉をざっくりまとめると要はアジャイルでは属人性は排除されない」ということでよろしいか(誰に聞いてる?)

で、Scrumでの「チーム内の属人性は排除」は「よくある誤解」とあって、いや実は僕自身、Scrumに違和感感じていた点でもあるんですよね、このへん。 ただやっぱり、説明されてもよくわからず。「多能工を志向」すると、究極的には全員が同じスキルを持ってしまわないのだろうか……

例えば、以下の記事。 qiita.com ここには、

スクラムでは生産性を上げるためにも「自立や向上」を目指している。

そのためには、属人化を出来るだけ排除する必要がある。

とあって、属人性を排除してるように読めなくも。

あるいは以下。

デメリットとして最近感じているのは属人化を排除することで同時に個々人の責任感も削り落としてしてしまったのではないかという点である。

属人化の排除と責任感のトレードオフについて - MogLog

もっとも、「属人性」と「属人化」がまた違うものを指しているような気もして、そこがミソなのかもしれないけど。守田さんのいう

誰か居なくなっても大丈夫なようにします。

は、「属人化の排除」なのかな。

それに、僕がScrum勉強した(うちの1つの)この本を今ざっと読み返すと:

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

Scene No. 22. さまざまな状況に対応する この作業は苦手です…… に、チーム内の各人のスキルを書き出す、なんてやってるから、「全員が同じスキルを持つ」っていう前提ではないようではある。

ううーん、やっぱりよくわからん。今度守田さんにお会いしたときに、がっつり聞いてみよう。

【追記】続きです↓

bonotake.hatenablog.com

【追記おわり】

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。