気づく工程、考える工程
ソフトウェア開発はハードウェアの生産工程のように同じ作業を大量にしないので、抽象的な手順に留めておかなくてはならないからです。そして、ソフトウェア開発は「気づく」工程「考える」工程であり、気づくこと考えることのガイドはなかなか書きにくいからです。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
なるほどなー。
「ハードは手順の中に技術がある」ってのは、なるほどー、です。
ハードの仕事は詳しくは知らないので、間違ってるかもしれないけれど、ハード開発でも
設計は、エンジニアの知識や経験に依るところがあるのではないのですか?
そして、ソフト開発は「ビルド以外は全部設計」って話もあるじゃないですか。
とすると、手順化できないところって何かというと、設計中の思考であって、
つまりはそこが「気づく」や「考える」のことではないのかなー、と、そんなふうに考えました。
それから、作業標準の粒度、っていうのも面白い観点です。
確かにソフト開発で「作業」というものの粒度はかなり粗いと思います。
例えば、コーディングって単位は、十分に細かい単位と思うけれど、
何をやっているかを考えると、非常に多岐にわたっており、
その中に何があるのか、また、やってることが何であるかも決められないくらい、のように思えます。
一から十までコーディング規約でがんじがらめにするようなものではないし、
ソフトの設計はコーディング規約の外にあるものなのですから、
そんなもので、ソフト開発の作業を制御できるわけもありません。
設計書のこととか、ペアプロのこととか、過去バグのこととか、
最近なんとなく考えることがあったけど、
ソフト開発というものが、都度考えながら、そのときにあったことを決めながら、やりながら、
先へ進んでいく仕事なんだ、ということをまたあらためて思いました。
そういう意味じゃ、今の私はずっと思考停止で、仕事はただ「流しているだけ」、
のように思えてしまいます。うー、なさけない。
西先生のツイート、おもしろかったので引用します。
いつ読み返しても納得感ハンパないっす!*1
RCAの結果プロセスが重くなったりダブルチェックのようにムダな手順が増えたりいらん文書やハンコが増えるのは、きっと根本原因の分析の方向性がよくないのですね、今回の分析例のように。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
私の周辺だけかもしれませんが、ソフトウェア開発においてプロセス改善を管理システムの改善のみと捉えてしまうと、現場の開発者にとって不幸せな方向に進むことが多いです。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
彼らの多くは、ハードウェアの品質管理における改善を中途半端に勉強したか、彼らから又聞きをして、そう定義をしています。この人たちに決定的に欠けているのは、ハードウェアにおける作業標準の粒度と、書くべき内容の違いについての理解です。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
なぜハードウェアの品質管理において、改善は管理システムにのみ言及するのでしょうか。それは作業標準(=ソフトウェアにおけるプロセス)の粒度に依存します。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
ハードウェアの作業標準には、技術的な手順が書かれているのです。だから標準を改訂するというのは、技術的手順を改善することが主です。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
ですからハードウェアの品質関係者は口を開けば「作業を標準化して改善していけ」と言います。それは彼らにとって、技術的内容を改善していることと同義なのです。標準化とは、ベストプラクティスの可視化であり、改善のベースラインづくりなのです。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
しかしソフトウェア開発においてプロセス(=ハードウェアにおける作業標準)とは、単なる作業手順を表すことが多く、技術的内容を含みません。それはなぜか。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
ソフトウェア開発はハードウェアの生産工程のように同じ作業を大量にしないので、抽象的な手順に留めておかなくてはならないからです。そして、ソフトウェア開発は「気づく」工程「考える」工程であり、気づくこと考えることのガイドはなかなか書きにくいからです。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
まとめますね。ソフトウェア開発のプロセスには(多くの場合)技術的内容が入りません。一方ハードウェア生産の作業標準は技術的内容が主です。だからハードウェア生産のように管理システムの改善すなわち作業標準の改訂をそのままソフトウェア開発に導入しても、技術的内容の改善は意味しません。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
技術的内容を改善しないわけですから、現場にとっては不幸せな結果を生みます。プロセスが重くなったりダブルチェックなどムダな作業が増えたり文書やハンコが増えます。当然ながら、そこに向かおうとするRCAはほとんど的外れになります。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
自社のRCAとプロセス改善のやり方を見直してみてください。技術的内容の分析と改善が主に行われていたなら、よいQAです。手順や作業名、文書名、ハンコや承認の話ばかりで技術的内容が無ければ、役に立たないQAの可能性が高いです。
— Yasuharu NISHI (@YasuharuNishi) July 1, 2017
この「気づく」って話もおもしろいです。
”見続けているものは、探しやすくなる” というのはその通りなんだけど、例えば「バグを探す」という行為よりも先に「気づいてしまう」んだよね。前の姿を知ってるから、それとの差分が違和感となって現れる。あれ、昨日と比べて応答がすこし遅くなった?とか、なんとなく画質が変わった、とかね。
— miwa (@miwa719) July 2, 2017
Togetterにでもすりゃよかったかな。
*1:今日は 2023/1/14