天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

ドメイン駆動設計のためのマネジメント入門に参加してきた

modeling-how-to-learn.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

今年3月に出版された佐藤 大典さんの『エンジニアのためのマネジメント入門』は、エンジニアにマネジメントの楽しさを伝えるために書かれたそうです。

この本の内容はソフトウェア設計、特にドメイン駆動設計の視点からみても興味深い内容です。

このイベントでは、著者の佐藤さんをお招きして、執筆の思いをお聞きします。

その後で、ドメイン駆動設計のための基礎知識という観点からこの本の内容について佐藤さんと私であれこれ話をしようと思います。

会の様子

ソフトウェア開発とマネジメント

マネジメントの基礎的/基本的な知識はソフトウェア開発においても役に立つという話を佐藤さんから聞いていきました。以下、内容を記載していきます。

価値連鎖

ソフトウェアエンジニアとしては、最高のプロダクションコードを書いてソフトウェアを構築することを目指しがちではありますが、ソフトウェアに関わっている人は非常に広範囲であり、一人だけで挙げられる成果は限られたものだよね、という前提から話がスタートしました。

この前提を置くと、様々な活動が価値としてつながっている価値連鎖の考え方がソフトウェア開発には適応できるということで、この価値連鎖を全体論や制約理論を用いて捉えると、エンジニア以外の活動がボトルネックになっている場合は最高のソフトウェアを作ってもソフトウェアとしては全然役に立たないということもあり得るということです。

組織の生産性

ここまでの話を総合して、エンジニアリング生産性*1が高くても、他の要素の生産性が低ければ部分最適になっているに過ぎず、組織の生産性としては低いままだという話がありました。

アウトカムの先

アウトプットやアウトカムが重要視されがちですが、企業の戦略*2実現というアウトカムの先の部分が重要だという話がありました。

また、ソフトウェア開発は企業の利益を上げる要素に過ぎないため、如何にしてソフトウェア開発を企業の利益と企業の組織戦略につなげるかが重要であり、そのために売上アップやコストダウンをしていくことが重要だということです。

マネジメントはソフトウェア開発に役に立つ

マネジメントを身につけることで、

  • ソフトウェア開発の成果を最大化する
  • ソフトウェア開発の選択肢を広げる
  • 事業状況に合わせたソフトウェア開発を作る

ことが実現できるようになるという話が最後にまとめとしてありました。

マネジメントの知識がドメイン駆動設計を加速する

続いて、増田さんから、佐藤さんの「エンジニアのためのマネジメント入門」を読んだ上で感じたことやドメイン駆動設計とマネジメントの関わりの話を聞いていきました。

エンジニアのためのマネジメント入門を読んだ感想

基礎的な内容が見事にまとまっており、全体を通して幅の広さ*3がうかがえる本だったということです。
また、増田さんは佐藤さんと一緒に働いていて佐藤さんのマネージャーとしての取り組みもそばで見ているため、幅の広さを支えた苦い経験など生々しさを非常に感じたということでした。

全体的に、エンジニアにとって有用である一方で、マネジメントという言葉が出た瞬間に読みたくなくないエンジニアも一定数いるだろうなあと感じたそうです。

エリック・エヴァンスのドメイン駆動設計

エヴァンス本はエンジニアであれば誰にも本のタイトルと表紙は知られているものの、本に書かれている4部構成すべてを知った上でドメイン駆動設計を語っている人はなかなか少ないという話がありました。

例えば実践ドメイン駆動設計の本ではエヴァンス本の第3部がまるまる抜けてしまっているし、ドメイン駆動設計入門だと本に明示されている通り第2部の話が中心に書かれているということです。

エンジニアのためのマネジメント入門とドメイン駆動設計の関連

まず、エンジニアのためのマネジメント入門の第2章/第3書のスキルがあればあるほど、エヴァンス本における第一部の目標に向かっていくことができるという話がありました。エヴァンス本で書かれているような対話に対してハードルが高いと感じるような人は、ぜひエンジニアのためのマネジメント入門の第2章/第3書を読んでほしいということでした。

次に、エンジニアのためのマネジメント入門の第4章/第5章にある話が、エヴァンス本におけるエンティティ管理や経営/事業をソフトウェアで如何にして表現するか?につながっているいう話がありました。

続いて、エンジニアのためのマネジメント入門の第3章/第4章にある話は第3部における「良い設計」やリファクタリングに対してつながっているという話がありました。良い設計はいきなり生み出すことができないし、段階的に活動していくことが重要で、その具体的な活動の話がエンジニアのためのマネジメント入門の第3章/第4章において説明されているそうです。

最後に、エンジニアのためのマネジメント入門の第4章/第5章にある話が、エヴァンス本における第4部の話につながっているという話がありました。
エヴァンス本の第4部はふわふわして経験が浅いエンジニアにとっては何が書かれているのかさっぱり分からない可能性が高いですが、エンジニアのためのマネジメント入門の第4章にあるオーガニグラフやバリューチェーンの話を知り、そこから少し経営関連の本をあたっていくと良いのではないか?ということです。

パネルディスカッション

佐藤さんと増田さんの話が終わった後は、お二人でディスカッションがありました。
以下、トピックごとに記載していきます。

社内政治

社内で何かしらの説得が必要だったりした時に、「社内政治は苦手」という言葉で片付けるのではなく、社内政治という取り組みに対しての解像度を上げているエンジニアのためのマネジメント入門を読んでほしいということでした。

事業戦略と機能戦略と企業戦略の関係

企業戦略があって、その下に事業戦略と機能戦略が同列で存在しているようなイメージを佐藤さんは持っているそうです。(エンジニアのためのマネジメント入門にも詳細は記載されている)

観察

増田さんが佐藤さんの本を読んだとき、「観察」という言葉が色々なところで使われていると感じたそうです。

マネージャーをしていると、情報が人より手に入ることが佐藤さんの場合は多いため、情報をあまり知らないエンジニアに対してどのように伝えるか?みたいな部分を意識していく中で出てきた言葉なのかもしれない、というコメントが佐藤さんからはありました。

増田さんが一緒に仕事をしていると、佐藤さんは普段から情報を色々な角度から集めて整理することをされているため、非常に納得感があるコメントだということでした。

事業戦略と設計

佐藤さんが増田さんに設計の相談をすると、「事業戦略どうなんだっけ?」といったような質問が頻繁に出てくるそうです。
増田さんは、設計の判断軸として業務視点や事業戦略が重要だと考えているため、こうした質問をしているということでした。*4

また、もし上場会社で働いているなら、財務諸表を見ておくとよりよい設計ができるんじゃないか?という話がありました。

ドメイン駆動設計とマネジメントの関連

今日はマネジメントを学ぶことがドメイン駆動設計に役立つという話をしたものの、逆も然りでドメイン駆動設計を学ぶことでマネジメントのスキルが高まることもあると思っているという話が増田さんからありました。

増田さん自身は、ドメイン駆動設計やマネジメント、RDRA...の要素を組み合わせながらソフトウェアを作っているということで、参加者の人達も色々な要素を組み合わせて現場の開発に役立てて欲しいということです。

緊急度と重要度

この機能さえあれば営業が取れるという話が出て短期的な利益を取って機能開発をしていくと、緊急度が高い仕事ばかりになってしまい、事業戦略と結びつきが強く重要度の高い仕事がおざなりになってしまうという話がありました。

思いつきと深い洞察の違い

何か事業のアイデアが出てきたときに、それが思いつきなのか深い洞察なのかわからないという話が参加者からありました。

社長を経験していた増田さんからすると、これは両方だということで、アイデアがどういう出方をしたのか?よりもそのアイデアを自分の中で咀嚼することが重要だということでした。

増田さんはDeNAの南場さんと、DeNAの創業期に一緒に仕事をしたことがあるそうですが、南場さんはめちゃくちゃ考える一方で思いつきのアイデアを試すことが多いと感じたそうで、そういった経験からもあながち間違った話じゃないのではないか?という話をされていました。(ただし、南場さんは思いついた後に再精査するステップを必ず踏む)

コード至上主義からの脱却

佐藤さんは今でこそマネジメントをしているものの、新卒当初はコードを書くことが正義だと考えていたそうですが、自身が携わっていたビジネスが失敗する経験を通して、マネジメントの重要性とただいいコードを書いていてもいいソフトウェアが作れないことを実感したそうです。

増田さんは、社運をかけたプロジェクトで徹夜しながら損益計算をしていたような取り組みを社会人のスタート時にしていたそうですが、ある時に表計算ソフトを使ったら仕事がいきなりめちゃくちゃ楽になったそうで、そこからITの可能性に取り憑かれたということでした。(ビジネスからプログラミングに移動した)

会全体を通した感想

エンジニアのためのマネジメント入門を増田さんがどのような視点で読んだのか?という話が、全然自分と違った見方だったので面白かったです。

マネジメントにしろドメイン駆動設計にしろ、(一部分であっても)色々な場所で組み合わせながら実践をしていくことでスキルが高まっていくという話は、特に興味深い内容でした。

*1:生産諸要素の有効利用の度合い

*2:企業戦略、事業戦略、機能戦略

*3:佐藤さんが幅広い内容を勉強したことが伝わる内容

*4:ただし最近は事業戦略が変わる速度も速くなっているため、設計をする立場としてはなかなか大変な時代だと思っているそうです