Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
カイゼン・ジャーニー・カンファレンス - プログラマのジャーニー
Search
h.t.
August 18, 2018
Technology
8
3.1k
カイゼン・ジャーニー・カンファレンス - プログラマのジャーニー
2018-08-18 - カイゼン・ジャーニー・カンファレンスでの発表資料。
h.t.
August 18, 2018
Tweet
Share
More Decks by h.t.
See All by h.t.
サービスとは何だっけ?的な話(s-dev talks. LT)
hiroshitakeda
1
110
仮説とはなにか?(s-dev talks. LT)
hiroshitakeda
2
1.2k
管理画面をなくした話 DIST.25 LT資料
hiroshitakeda
1
2k
エンジニアがUXを とりこぼさないために考えたこと
hiroshitakeda
0
130
自己組織化されたエンジニアチームが実現するUX
hiroshitakeda
0
280
Other Decks in Technology
See All in Technology
Vueで Webコンポーネントを作って Reactで使う / 20241030-cloudsign-vuefes_after_night
bengo4com
4
2.5k
Apple/Google/Amazonの決済システムの違いを踏まえた定期購読課金システムの構築 / abema-billing-system
cyberagentdevelopers
PRO
1
220
Amazon FSx for NetApp ONTAPを利用するにあたっての要件整理と設計のポイント
non97
1
160
プロダクトチームへのSystem Risk Records導入・運用事例の紹介/Introduction and Case Studies on Implementing and Operating System Risk Records for Product Teams
taddy_919
1
170
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
570
AWS CodePipelineでコンテナアプリをデプロイした際に、古いイメージを自動で削除する
smt7174
1
100
大規模データ基盤チームのオンプレTiDB運用への挑戦 / dpu-tidb
cyberagentdevelopers
PRO
1
110
バクラクにおける可観測性向上の取り組み
yuu26
3
420
生成AIとAWS CDKで実現! 自社ブログレビューの効率化
ymae
2
330
一休.comレストランにおけるRustの活用
kymmt90
3
580
Autify Company Deck
autifyhq
1
39k
カメラを用いた店内計測におけるオプトインの仕組みの実現 / ai-optin-camera
cyberagentdevelopers
PRO
1
120
Featured
See All Featured
Become a Pro
speakerdeck
PRO
24
5k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.2k
The Cost Of JavaScript in 2023
addyosmani
45
6.6k
How STYLIGHT went responsive
nonsquared
95
5.2k
Optimizing for Happiness
mojombo
376
69k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Code Review Best Practice
trishagee
64
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
A Tale of Four Properties
chriscoyier
156
23k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Visualization
eitanlees
144
15k
Transcript
カイゼンジャーニーいたるまでの プログラマのカイゼンジャーニー (プログラマ賛歌) 会社員・エンジニア/スクラムマスター ※ 個人の意見であり、所属する会社・組織の意見ではありません
カイゼンジャーニー 自分のことのように読みました、とても面白かったです!! 多謝 わたしスクラムマスターもやっていますが、 本職はプログラマです。 今日は "プログラマ" という、現場の人間が、 どうやって 「カイゼンジャーニー」
の主人公になっていったか。 現場では何が起きていて、その結果、なぜ「カイゼン」が生まれていったか。 そんなジャーニーをプログラマ視点で語ってみようと思います。 もし近い境遇の方いましたら、何か1つでも持ち帰ってもらえるとうれしいと思って話します!! (けっこうややこしい話をしますがついてきてくださいね……汗)
はじめに MSX BASIC があった スペース1byte分のメモリも惜しかった ただただプログラムが動くことがすべてだった
C/C++@お仕事 ただ動くだけじゃダメ。 プロとして安定した品質・保守性が必要。
「なるほど、ソースコードの品質をあげればいいのね?」 つまり バグをなくせばいいんでしょ?
ソースコードの品質向上のためのソフトウェアテスティング JSTQB取得 ※ JSTQB=Japan Software Testing Qualifications Board 品質工学の勉強 ペアワイズ法(直交表)
ソフトウェアテストの原則 テストの心理学
しかしそんな簡単にはいかない バグの発見工程における修正コスト 要件 設計 コーディング 単体テスト 結合テスト 運用後 単体テストでバグを見つけるより、 コーディングでバグを対処した方が半分くらいのコストで対応が可能
ソースコードへのアプローチ 静的解析・メトリクス ⇒ ソースコード品質の定量化 McCabe循環的複雑度 CKメトリクス Martinのメトリクス Static Code Analytics
Memory Leak Coding Style :
しかし潮流は更なる上流重視の流れ 要件 設計 コーディング 単体テスト 結合テスト 運用後 コーディングよりも設計段階でバグを見つけた方が早く安く解決できる バグの発見工程における修正コスト
ドキュメント重視 ◦◦設計書 xx株式会社 ソースコードよりも設計段階で不具合をつぶしたい "非エンジニア" でも読める "非コード" による設計とレビューの充実 ◦◦設計書 xx株式会社
◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社 ◦◦設計書 xx株式会社
しかししかし 要件 設計 コーディング 単体テスト 結合テスト 運用後 要件段階でバグを見つけた方がもっと早く安く解決できる バグの発見工程における修正コスト
SysML REBOK (要求工学) 形式手法 フォーマルメソッド 要件定義で不具合をつぶしたい
高度な設定ファイルによるフレームワーク 厳密な仕様がそのまま実装に自動変換 UML XMI MOF .java application .xml beans .xml
build .xml server .xml web .xml * .xml うんうん 大事なのは要件や仕様であって、コードではない
厳密・厳格なUML Booch → UML 1.x → 2.0 SysML,BPMN... ユースケースを洗い出すのに1年以上をかけるプロジェクトも class
object 厳密・厳格な要件定義 大事な要求・仕様の表現のために
人の欲求はつきない 要件 設計 コーディング 単体テスト 結合テスト 運用後 バグの発見工程における修正コスト ????
そもそも、どの工程でも、 すべての成果物は "プロセス" の結果でてくるもの。 であれば "プロセス" をしっかりすれば全ての成果物は良くなる。 インプット プロセス アウトプット
Six Sigma PMBOK Project Management Body Of Knowledge CMMI Capability
Maturity Model Integration ISO 各社各団体から様々な改善手法の乱立 BPMN SPI
上流工程からプロセス通りに作っていけば、 安く・品質の高いものが誰でも作れる 上流 下流のエンジニア 指示者 えらい 給料高い エース 作業者 しもべ
給料低い 量産可能 > ※ 外部発注やオフショアで良い という幻想
要件定義 設計 実装 テスト 保守運用 格差 格差 発注元
上流重視 プロセス重視 の時代が到来 … わたしも、しばらく管理する側の人間に …
… けれどプログラマ出身なので知ってた … どれだけプロセス管理しても最後は作る側の人間の問題。 本当に誰でも作れる完璧な手順や仕様を考えられますか? プロセスの手順と成果物さえ規定すれば品質は安定しますか? その手順は日本人がやってもインド人がやっても絶対ミス なくできるものですか? 大人がやっても子供がやってもできるものですか? 手順書の中の日本語はぜったい読み間違い
ないものですか? その仕様には全ての条件が含まれていますか? すべての例外が含まれていますか? 作ってる最中に 環境は変わりませんか? すべてのグラフィックデザインが含まれてますか? アイコン1ドット1ドットについて計画済みです か? すべてのエラーメッセージが含まれてますか? その計画にはわたしが風邪で休むこと考えてますか? わたしがスキ ルアップして作業効率あがること考えてますか? わたしが出すすべてのバグまでがすでに計画されているのですか?
… けれどプログラマ出身なので知ってた … どれだけプロセス管理しても最後は作る側の人間の問題。 本当に誰でも作れる完璧な手順や仕様を考えられますか? プロセスの手順と成果物さえ規定すれば品質は安定しますか? その手順は日本人がやってもインド人がやっても絶対ミス なくできるものですか? 大人がやっても子供がやってもできるものですか? 手順書の中の日本語はぜったい読み間違い
ないものですか? その仕様には全ての条件が含まれていますか? すべての例外が含まれていますか? 作ってる最中に 環境は変わりませんか? すべてのグラフィックデザインが含まれてますか? アイコン1ドット1ドットについて計画済みです か? すべてのエラーメッセージが含まれてますか? その計画にはわたしが風邪で休むこと考えてますか? わたしがスキ ルアップして作業効率あがること考えてますか? わたしが出すすべてのバグまでがすでに計画されているのですか? 作るのは個性をもった人間 未来は予測できない (ソフトウェアみたいな超絶複雑なものを予測できるのはラプラスの悪魔のみ)
外野がワーワー言ったって、現場では無理なものは無理!! すべてを事前に予測するなんて無理 事前に完璧な計画を作るなんて無理 という現場出身の心の声
コードに触れることが出来なかったプログラマの日々 「死んだ魚のような目をしてミーティングしてましたよ」 と言われた日々…
そんなある日 「必要な師は、必要な時にあらわれる。」 (どこかの国のことわざ)
PMOのセンセイあらわる センセイ曰く、 「みんな色々言ってるけど、 やっぱり 現場・現物・現人 だよ」 ※ PMO = Project
Management Officer
センセイ 「これをみんなで読んでね、課題図書」 個人での働き方 いかに効率よくコードを書くか 品質をあげるか 仕様はコミュニケーション の道具であること ドキュメントのことではない チームによって 品質をあげること
(ピア=同僚) 個人でサバを読まず バッファをチームで持つ チームを信頼する 消化タスクではなく 残りタスクで管理する手法 チームの働き方 チームの効率の上げかた 品質の上げかた
センセイ 「これをみんなで読んでね、課題図書」 個人での働き方 いかに効率よくコードを書くか 品質をあげるか 仕様はコミュニケーション の道具であること ドキュメントのことではない チームによって 品質をあげること
(ピア=同僚) 個人でサバを読まず バッファをチームで持つ チームを信頼する 消化タスクではなく 残りタスクで管理する手法 チームの働き方 チームの効率の上げかた 品質の上げかた !
CMMI … 組織カイゼンのプロセス
TSP …チームカイゼンのプロセス Team Software Process CMMI … 組織カイゼンのプロセス
PSP Personal Software Process 「 ソフトウェア品質の始まりは一人一人の技術者である。 組織プロセスは個人プロセスの集まり。 自律した技術者なくして組織プロセスのカイゼンは困難。 」 (たぶんワッツ・ハンフリーさん自身の言葉)
TSP …チームカイゼンのプロセス Team Software Process CMMI … 組織カイゼンのプロセス
自律した技術者なくして組織プロセスのカイゼンは困難。
ほらー! やっぱりエンジニアが大事なんでしょーーーー!! しっかり上流やってプロセスだけ管理すれば物事うまく行くなんてウソばっかりっ (#`Д´)ノノ┻┻;:'、・゙
ここからの急展開 ※ ここからはほぼカイゼンジャーニーの話 ※
ここからの急展開 ※ ここからはほぼカイゼンジャーニーの話 ※ 命題 「現場を、一人一人のエンジニアを、大事にするやり方とは?」
そう、 "あじゃいる" ですよ
Agile XP : Extreme Programming アジャイルサムライ Scrum FDD Crystal Pair
Programming インセプションデッキ レトロスペクティブ リファクタリング The New New Product Development Game KANBAN
かなり勉強した。 勉強するほど深みがある。 「おぉ... Agileすごいなぁ... 叡智がつまってる...」 言葉は違えどPMOのセンセイが言ってたのがまさにこれか。 「でも、これは、独学じゃ限界あるなぁ…」 "認定Scrum Master" とった。
試行錯誤の日々 ・ 勉強に次ぐ勉強 ・ 周囲への啓もうと説明説得 ・ 従来手法とのハイブリッド化 ・ 小さなプロジェクトからの実践Try&Error FairじゃないのでWaterfallについても勉強しなおした
その試行錯誤を支えたのは、 品質の高い「要件定義~設計~プログラミング~テスト」が出来るという経験と自信 「いざとなれば…… 全部自分でやる」という覚悟 もともとはネットワークの会社にいたのでインフラもある程度できます…… 組み込みソフト、Windowsアプリも、Webのバックエンドもフロントエンドもできます……
アジャイルの実践 ・ グループ内(外)での登壇、仲間づくり ・ スタンドアップミーティングやKANBANを 契機にみんなが集まってきた 「あそこ、楽しそうに何やってるの……?」 ・ まわりでもスクラムマスター目指す人が増えた ・
Scrumの各種セレモニーの実施 ・ インセプションデッキを使ってのKickoff時の意識合わせ ・ LEAN UX的手法でのビジネス/デザイナの巻き込み ・ ドラッカー風エクササイズ ・ KANBAN ・ one teamでのインフラ構築~実装~運用までの実現 : さまざまな変化がおきてきた
「え!? スクラムマスターなのに、スクラムを捨てたの?」 開発から運用に移ってスクラムの柔軟性でも難しくなってきて、 KANBAN だけを残してみたり 「うふふ . . 醸成された我がチームに不可能はない!! スクラムマスターは、スクラムの"マスター(支配者)"。
"スレーブ(奴隷)"ではない。 スクラムに使われるのではなく、 必要なときにスクラムを使うんですよ ( ー`дー´)キリッ」
アジャイル万歳、エンジニア万歳、スクラムチーム万歳 なんでも作れそう
アジャイル万歳、エンジニア万歳、スクラムチーム万歳 なんでも作れそう ・・・そう「作れと」言われたものはね
ん?
ん? んんん? ( ,,`・ω・´)ンンン? 「作れ」と言われたものを作ればいいの?正しいの? けっきょく「作れ」と言われたものがすべてなら それって要件定義を重視してた上流指向のころと変わらないのでは?? …という気づき…
また、ここからの更なる急展開
UX よりよいものを作るための挑戦!! 越境Challenge
マーケティングの勉強 よりよいものを作るための挑戦!! 越境Challenge アクセス分析の勉強(GAの資格) データを扱うための統計・分析 もちろん機械学習もね 実現するための組織の勉強も(ティール組織) デザインの勉強も
勉強して登壇もした!!
見るべきものが変わってきたよ ソースコード ビジネス お客さま
見るべきものが変わってきたよ ソースコード ビジネス お客さま
見るべきものが変わってきたよ ソースコード ビジネス お客さま
役割が変わってきた・変えていった 今まではこう 伝言ゲームで言われたものを作るのが仕事 Engineer Designer Business
Designer Engineer Business 役割が変わってきた・変えていった かかわり方を変えた 何を作るかを考える ところから入った
Engineer 役割が変わってきた・変えていった バナーも作った サイトデザインもした メール文面も考えた サイト文面も考えた Marketer アクセス分析もした AIでのデータ分析もした 商品Lineupも考えた
Scientist BPR ビジネスプロセス改善 Legal さらに広げた 利用規約とか Designer Business SCM Logistic CS
おきゃくさまに価値を届ける、 エンジニアリングが得意なビジネスの一員 殻を破った エンジニアとして出来る限りのことで手を動かした エンジニアとして出来る限りのことに口をだした システムを作る、 エンジニア 大きなパラダイムシフト
1つやりきった
1つやりきった でも 「 カイゼンとは良くし続けること 何かを達成しておわりじゃない 」
となると次は?
これは1つの妄想 例えば、 ブリコラージュ と呼ばれるもの エンジニアリングの対極にあるもの 目的にむかって収束していく活動ではなく 木のように育って広がっていく活動
閑話休題 (それはさておき) これはまた別の話 いつかどこかで誰かと話したい! まだ、わたし一人だけの、次のジャーニーの話です
スクラムの先生に言われました、 アジャイルは、やっている時にはわからない。 その時に 「アジャイルやってます」 とは言えない。 振り返ってみて 「あの時はアジャイルだった」 とわかるもの。 Not doing
But being
言いたかったこと ジャーニーは終わらない まとめ
カイゼン(≒アジャイル)とは "今よりも良いもの" を目指している状態 今が良くなったら、明日はもっとよいものを目指すだけ まとめ
つまり、 カイゼンジャーニーはいつまでたってもおわらない旅 まとめ
自分? チーム? 組織? セコイこと言ってないで世界そのものをカイゼンしていきましょう♪ でもそのための一歩は、現場の一人一人の小さなカイゼン、 ひとりのプログラマの1行のソースコードだって大事な最初の一歩 まとめ
カイゼンジャーニーを読んで 「でも、自分はここまで出来ないなぁ…」 と思った人がいたら大間違い。 実際に価値を作ってるのはわたしたち・あなたたち 「法隆寺をたてたのは聖徳太子ではなく、腕のいい大工」 がんばれっ プログラマ!! 胸張って1行のコードを書きましょう!!! そのソースコード1行のこだわりからカイゼンは生まれてきます!!!! まとめ
自己紹介 プロのプログラマ スクラムマスター デザイナ見習い ←最近追加・越境中・カイゼン中
補足. 謝罪. すこしだけプレゼン用に面白可笑しく脚色しましたが…… 別にトラディショナルな手法嫌いじゃないんです!! • ウォーターフォールも悪じゃない。 悪く言ってる人がいたら、その人が一体どうやって勉強をしたか聞いてみて ください。 なんちゃってアジャイルが失敗するのと一緒で、なんちゃってウォーターフォールも当然失敗します。 •
ソースコードメトリクスの分析は面白いです。 ものすごくエキサイティングな分野です。 • オブジェクト指向は神。 基本5原則なんて神。 • 厳格なUMLも知ってほしい!! 矢印の使い分けや様々な記法を知っているということはそれだけ頭の中をごま かさずにクリアに整理できるということ。 フローチャートもなんちゃってで書かないでね!! • タグチメソッドやSixSigmaやCMMIやPMBOKやITILもすごい。 本当に叡智の塊。 知ってて使わないのは 良いですが、知らないのはプロとして罪。 構成管理やってる? いえいえ、きっとそれは単なるバージョン管理 (版管理)です。CMMIを読んで構成管理について考えてみて!! • ◦◦に価値があるのを認めつつも、より△△に価値を見出しているだけです。 トラディショナルな手法の価値 を認めつつ、アジャイルにより価値を見出しているのが今です。 • ちなみに、AI/Machine Learningも、Blockchainも、xRも、IoTも、5Gも、Roboticsも…エンジニアにとって 楽しみなことだらけです。 今は本当によい時代ですが、きっと未来はもっとよい時代になってます。
カイゼンジャーニー とても面白かったです! ご清聴ありがとうございました m__m