ソフトウェア開発おける不確実性について
public.icon
y_matsuwitterのソフトウェアと経営を参照されたい
結論:ソフトウェアを開発するのに、「計画」を立てることはできない、だからアジャイルで作っていこう
理由:「予算・計画」というウォーターフォールでの開発手法は、(工場などの大量生産とは違って)不確実性の高いソフトウェアでは役に立たない
最初に決めた計画で課題解決を達成できるかどうかは誰もわからない
課題を解決するためのプロダクトの開発に、リソースの予測が難しい
具体:「ソフトウェア開発における不確実性」とは何か
1. ソリューションを実現するためのプロダクトが、実際に問題解決をするかは分からない
実際にプロダクトを作ってみたけど、何にも問題を解決していない
/emoji/twitter.icon工程表とか数値目標を切ると、単なる見た目の目標の達成に強いインセンティブが生じてしまいます。プロダクトの質を高めることにインセンティブを設定しないとダメなのに、質を管理する安定した方法論がないから、量の管理に逃げるんですよね。その結果、質を高める努力をしている部署が邪魔になる。
@tweeting_drtakatweeting_drtaka.icon September 17, 2020
2. 実際に問題解決がされたところで、利益となるかは分からない
コンテキストの変化が原因で、開発期間中に情勢が大きく変わり、解決されるべき問題が消失したり変容したりする
上記は事前のデータ解析によって予測できない
3. ソリューションを実現するためのプロダクトを開発するにあたり、期間・人員・リスク対策費などのリソースが正確に予測できない(期間と規模が大きいほど顕著)
そもそも”ソフトウェア開発”自体が、生産のための期間や必要なリソースを特定できない
上記の不確実性があるのに、なぜ「計画」を立てたがるのか
結論:計画がないとお金を出してくれないから
理由:発注側は「お金を出すに足る理由」を求めている
そこで、開発者側は(世界線ではなく)「予算と計画」を提示する
具体:多くの人は以下のようなフローでソフトウェアを開発する
1. ある問題を解決するにあたり、ソリューションとしてIT化が浮上
2. そのソリューションを実現するための期間とコストを概算
3. お金を出す人が承認(予算の確定)
4. 詳細な計画の作成と、リソースの確保
5. あとは何とか作りきろう
そうすると、以下のような「失敗(と、言われる虚構)」が存在する
予算オーバー & 計画遅延
上記の2つがあると、作っているものが「役に立たない」と分かっても軌道の修正に対して消極的にならざるを得ない
大層な時間とお金をかけて、役に立たないゴミを作ってしまう
結論:「予算と計画」というのが、そもそもソフトウェア開発における不確実性を非常に無視した概念である
要はアジャイルは行き当たりばったりってことですか? - Quora
「銀の弾丸」にはならないけど、『鉄の弾丸』ぐらいにはなるかもしれない”アジャイル”という概念
補足:アジャイルソフトウェア開発宣言
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。
結論:予算と計画という考えから脱し、「ソフトウェア開発における不確実性」に向き合う必要がある
具体例:どのように不確実性と向き合うのか
決して止まらないカイゼン体制を作りたい(深津氏)
決して止まらないカイゼン体制を作りたい|深津 貴之 (fladdict)|note
例えば、「こういう施策を打つと、利益が増えるのではないか?」という仮説を立て、施策を打ったグループAと打たなかったグループBに対してA/Bテストを実施し、数ヵ月後にその結果を統計的に検証する
仮説検証は全てのチームが自己完結的に持つべきスキル
対象としている業務や部門・サービスに対して(理想的には一つの)チームが永続的に関わり、仮説検証を繰り返す必要がある
システム化・アドリブ化(深津氏)
図解 システム化とアドリブのよい使い分けとは?|深津 貴之 (fladdict)|note
システムは外部のを使ってもいいよね、という概念
Agility経営(松本氏)
ソフトウェアの特徴である可観測性によって、課題の解像度を上げる
失敗の予算化・局所化
閾値、SLI / SLO
3-4 失敗予算 #ソフトウェアと経営|Matsumoto Yuki|note
自治体・行政のシステムはウォーターフォール(「予算と計画」)での開発が多い
これは”大企業あるある”と言われることもあるけど、これを克服できて大企業であれば誰も追いつけない企業になる
そういう意味でDMMは大きいけどめっちゃ分社化されてる(良いか悪いかは置いておく)
民間より多くの人が使う、公共のシステムだからこそ難しいところもある
「公共のシステムに求められること」と『私営のシステムに求められること』の違いに関してはこの記事が良かった
税金を使って最終保証を行うことで、経済市場を発展させる。そのためには”最低限の機能を持つものを公共として提供する”
2020/11/03 IPA のけしからん技術が再び壁を乗り越え、セキュアな LGWAN 地方自治体テレワークを迅速に実現
だけど、ソフトウェアを開発していくのであればアジャイルで進めていくことは避けられないはず
実際にはCivicTechの文脈では地域の課題解決の鍵はテクノロジーと協働。UIJが取り組む、日本の未来を支える挑戦とは?|ヨシナガ タカユキ|noteとかもある
GovTechやCivicTechは法人・非営利・マネタイズ…などと難しい領域ですが、めちゃくちゃ面白い領域
Civichatという会社を立ち上げました
各業界の人たちがどんどん参加してくれていて、みんなで日本をよくしていこうという1番面白いフェーズ
民間で結果出した人がこういう形で国・地域に還元してくれるのは嬉しいし、そんな人たちと一緒に未来を作っていきたい
この未来を特等席で見れる物として、OSSへのコントリビュートや都庁の求人、私たちCivichatへの参画などだと思っています
私が政府CIO補佐官になった理由|Hal Seki|note
行政がオープンソースに投資すべき理由|Hal Seki|note
シビックテックに参加する10の方法|陣内 一樹(Code for Japan)|note
地域の課題解決の鍵はテクノロジーと協働。UIJが取り組む、日本の未来を支える挑戦とは?|ヨシナガ タカユキ|note
テクノロジー×協働の力で日本各地の社会課題に挑む、プロジェクトマネージャーを募集!【IT業界経験者、協働経験者歓迎】|Urban Innovation Japan|note
東京都 構造改革推進チーム(東京都 公式)|note
都庁と伽藍とバザール|miyasaka|note
伽藍とバザール
デブサミ2020夏のベストスピーカーが決定、1位はCode for Japan 関治之氏:CodeZine(コードジン)
2020年の奇跡 GitHub上に公開された「東京都公式 新型コロナウイルス対策サイト」の裏側(世永玲生) - Engadget 日本版
新型コロナ対策サイト、三重県版は高専生が開設|編集室ブログ|ナレッジステーション
“新型ウイルス感染症対策サイト”を爆速で創った舞台裏…「一人のヒーローだけじゃ世の中は変わらない」 | Business Insider Japan