ビープラウド社長のブログ

株式会社ビープラウドの社長が、日々の思いなどを綴っていきます。

「実践Django」は筋肉質かつ骨太で、技術書のお手本のような書籍

学生時代にビープラウドで仕事をされていた@c-bataさん執筆の実践Django Pythonによる本格Webアプリケーション開発を拝読しました。

読み終わり感じたことは「筋肉質で骨太な書籍である」ということです。

筋肉質である

なぜ「筋肉質」かというと、それは書籍の構成にあります。

構成は、1章のチュートリアルを一通り学べば、Djangoの主要機能を広く学ぶことができ、さらに知識を深めたい場合は、2章以降を必要に応じて読めば良い構成になっています。

また各章は、必要最低限の要素が学べる洗練されたサンプルコードをもとに説明されています。

これは現場でDjangoを使った開発に取り組む必要があり、短時間で学ばなければならないエンジニアにとってとてもありがたいことです。

骨太である

「骨太」という点においては、各章の説明が充実していることです。

実運用するWebアプリでは、機能を動かすだけではなく、保守性を高めるための設計、性能やセキュリティなどの非機能要件も当たり前に求められます。

本書は、機能を作るための説明だけではなく、性能問題(N+1問題)、セキュリティ(SQLインジェクション、XSS、CSRF)、再利用性を高めるための設計などについて説明されています。そのあたりが書籍のサブタイトルにもある「本格Webアプリケーション開発」に該当すると思います。

必要かつ十分に説明されていますので、開発現場の時間に余裕の無い中で確認する時にとても役立つでしょう。

業界で活躍している方たちがレビュワーとして参加している

謝辞に書かれていますが、PythonやDjangoでの開発に長年携わり、Python関連の書籍を執筆したりカンファレンスで登壇するなどの実績のある方々がレビュワーとして参加されています。

筋肉質で骨太な内容は、このレビュワーの方々とのコミュニケーションの中で生まれていったのかも知れません。

そのように技術書籍としての品質が高められているという点でも、この書籍をおすすめしたいと思います。

最後に

本書は、Djangoを速習することもでき、深く学ぶこともできる技術書のお手本のような書籍と感じました。

すべてを読み終わり知識が身につけば、Djangoについて中級以上の知識が身についているといえるでしょう。

Djangoの書籍を探している方に「実践Django」を是非おすすめしたいと思います。

価値創造に必要な「価値」を明確化するスキル

本記事は、匠塾 Advent Calendar 2021の12/23の記事です。

プロジェクト(仕事)の目的は、価値を届けること

2021年8月にPMBOK(Project Management Body of Knowledge)の第7版がリリースされました。第6版までは「成果物を届けること」が主目的であったのに対し、第7版は「価値を届けること」が主目的になりました。

この変更は、予測型(PMBOKでは第6版まで)から適応型(同第7版)への変化とも言われています。

「予測型」は、「あらかじめ決められたとおり(予測したとおり)に仕事をしていれば価値が生まれる」という前提に立っています。予測型の開発では、その前提のもとに「決められたことを、しっかりやり遂げること=成果物を届けること」にフォーカスします。

「適応型」は、「あらかじめ決められたとおり(予測したとおり)に仕事をしても価値が生まれない」という前提に立っています。適応型の開発では、その前提のもとに「状況に適応して行動し、価値を生み出すこと」にフォーカスします。

ソフトウェアエンジニアの仕事で言えば「ソフトウェアを作ることが仕事」から「価値を創ることが仕事」になったといえるでしょう。

PMBOKの第7版の変更点については、以下の記事が参考になります。

note.com

「価値」を明確化する匠Method

「価値を届けること」を目指して皆で仕事をするときに、目指す対象が曖昧であれば、開発プロジェクトは迷走してしまいます。目指す対象とは価値のことです。

一方で価値を明確にしておけば、その実現のために各自で考え動き出すことができます。

価値を表現し明確化する方法として有効なのが、匠Methodです。*1

匠Methodでは、価値を表層的価値深層的価値という2つの価値で表現します。

表層的価値とは、製品やサービスを使うことによって得られる機能性やデザイン性などの価値です。価値といわれて思い浮かべるのは、この価値でしょう。

深層的価値とは、自分たちの内面にもつ価値です。一般的にストーリーとして表現され、ビジョン、意志、価値観などで表されます。

匠Methodでは、表層的価値を価値分析モデル、深層的価値を価値デザインモデルという図で表現することで、価値をカタチにします。

※各モデルについては以下のスライドを参照してください。(価値分析モデルは、P36、価値デザインモデルはP39)

speakerdeck.com

匠Methodの価値のモデル(価値分析モデル、価値デザインモデル)を、開発のスタート時点でつくることで、目指すべきものが明確化されます。

もちろん、プロジェクトのスタート時点でつくった価値のモデルも仮説でしかありません。

ソフトウェアをリリースし、使用されることで新たな価値が見えてきます。

ソフトウェアを使用した学びの中から、価値のモデルを洗練させていくことが必要です。

ビジネスでの開発に求められる仮説検証サイクル

ビジネスでの開発では、仮説検証のサイクルが求められます。*2

開発のスタート地点で、このようなものをつくればうまくいくという仮説をカタチにして人に見せる必要があります。

なぜなら、仮説も無しに企業が人員をアサインすることはほぼ無いからです。「未知のジャンルなので、とにかくやってみよう」という場面でも、最低限の仮説は求められるでしょう。

仮説を立てるときの注意点としては、頭でっかちにならないことです。

頭でっかちにならないためには、仮説をスピーディーにつくることです。

匠Methodの価値のモデルはシンプルなので、慣れれば数時間で価値の仮説を作成できます。

価値のモデルがうまくつくれないのであれば、そのアイデアで進めても、価値は生まれないかもしれません。

まとめ

「価値を届けること」を目指して皆で仕事をするときに、匠Methodで「価値」を明確化することが有効です。

また、ビジネスでの開発では仮説検証のサイクルが求められるので、匠Methodで価値の仮説をつくってみるとよいでしょう。

匠Methodについて知りたい方は、以下の書籍を読んでみてください。

匠Method: 〜新たな価値観でプロジェクトをデザインするために〜

*1:ビープラウドでは、自社サービスの開発、受託開発、自社の方針決めなどで匠Methodを活用しています

*2:仮説検証のサイクル=まず仮説を立てて行動によって仮説を検証していくこと。それを繰り返すこと

『PythonユーザのためのJupyter[実践]入門』は、Pythonでデータ分析を始める人に最初におすすめの書籍

PythonユーザのためのJupyter[実践]入門を拝読しました。3人の方々はビープラウドのひとたちとも親しくして頂いてる、池内 孝啓さん, 片柳 薫子さん, @drillerさんの執筆です。

本書の構成

本書の構成を下図にまとめてみました。

f:id:haru860:20210321124747p:plain

図に書いたとおり、本書は大きく3つのパートに分かれています。

1つ目はデータ分析ツールについての章です。1章と2章は本書のメインツールであるJupyterLabの環境構築方法と使い方の基本を紹介しています。最終章の8章は環境構築の必要がないクラウドツールのColaboratoryの紹介です。

2つ目はPythonでのデータ分析で最も使われるpandasでのデータ処理の基本を説明しています(第3章)

3つ目は、データの可視化です。標準的ツールであるmatplotlib、matplotlibをラップして使いやすさを向上したseaboanについて説明しています。matplotlib、seaboanともにまずグラフの描画方法を説明し、そのあとにさらに使いこなす方法を説明しています。本書のコアはこの3つ目のパートであるといえるでしょう(4〜7章:合計230ページ)

Pythonでデータ分析を始めたい人が、足回りの知識を揃えるのにおすすめ

本書の読み進め方は、以下のようになると思います。

  1. データ分析ツール(JupyterLab)の環境を構築し、基本的な動かし方を学ぶ(1,2章)
  2. Pandasのデータ処理の基本を学ぶ(3章)
  3. グラフの可視化の基本を学ぶ(4章、6章)
  4. 可視化のための細かい指定方法、設定方法を学ぶ(5章、7章)
  5. クラウドデータ分析環境のColaboratoryについて知る

本書の特徴となる章は、5章、7章です。Excelでもそうですが、データを可視化する時に細かい指定方法や設定方法を調べていると、意外に時間が過ぎてしまうものです。そうなるとデータを分析する本質的な作業に使える時間が少なくなっていきます。 本書の5章、7章(matplotlibを使う場合は5章、seabornを使う場合は7章)をひととおり学んでおけば、データ分析の作業に使う時間を増やせるでしょう。

また本書はPythonのデータ分析の基本についてひととおりまとまっていますので、実務のときも本書をリファレンスとして手元においておけば重宝しそうです。

「PythonユーザのためのJupyter「実践」入門」は、Pythonでデータ分析を始めてみようという方におすすめの書籍です。

改訂版 Pythonユーザのための Jupyter[実践]入門

独習Pythonは、入門書の次のスモールステップとしてオススメ

山田祥寛さんが執筆した独習Pythonを拝読しました。

独習Python

独習Python

著者の山田祥寛さんは、WingsProjectという執筆者コミュニティ(会社でもある)を運営されていて、200冊近くのプログラミング、技術書籍の執筆、監修の実績があります。(その他、雑誌記事やWeb記事など多数)

私も2005年から2010年の期間、雑誌記事(JavaPress、DB Magazine、ムック本)やWeb記事(CodeZine、@IT)をWingsProjectの1メンバーとして執筆させていただき、山田さん(ご夫妻)に監修いただきました。Codezineに掲載したDjangoチュートリアルGoogleAppEngineの記事ははてなブックマークでホットエントリー入りもしました*1

前置きはこのあたりにして、独習Pythonの特徴を紹介します。

対象者

  • 入門書でPythonを動かしてみたが、知識が頭の中でまとまっていない人
  • 他言語を知っていて新たにPythonを学ぶ人
  • Pythonについて体系的な知識を学びたい人

Pythonの対応バージョン

3.8(この記事を書いた2020年8月時点で最新)

Pythonの文法を基本から応用までひととおり学ぶのに最適

Pythonプログラミングの入門書(たとえば、いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで 「いちばんやさしい教本」シリーズ)を読んで、なんとなくプログラムを動かせるようになった次のステップは何をすればよいでしょうか。

それは、Pythonの文法や書き方をひととおり憶えることです。

入門書の次のステップとして自分のつくりたいプログラムをつくりながら都度文法を調べるという方法もあります。

しかし、その方法だとなんとなく動いてしまったために適切な書き方を知らないままになってしまい、悪い癖がつくなどの弊害が生まれます。

そのようなことにならないためには、入門書の次のステップとしてはPythonの文法を網羅的に学ぶのが良いでしょう。

独習PythonはPythonの基本からひとつひとつ丁寧に説明が始まり、応用レベルの文法まで解説されています。

応用的な内容として、特にオブジェクト指向構文については110ページを割いて丁寧に説明されています(10章、11章)。

オブジェクト指向はプログラミングのレベルを上げるための必須スキルなので、じっくり読んで理解できるまで取り組んでみるとよいでしょう。

学ぶペースとしては基本的な内容である1〜8章を1日1章ペースでさくっと進め、9章〜11章は1節ずつ自分のペースで読み進めていくのがよいでしょう。

ひととおり学んだ後もプログラミングのリファレンスとして活用できる

山田さんの書籍の特徴は、書籍が網羅的でかつシンプルにまとまっていることです。独習Pythonもその例外ではありません。

網羅的でかつシンプルな構成なので、ひととおり学んだ後もプログラミング時のリファレンスとして活用できます。

プログラミングのときに手元に置いておくと役に立つでしょう。

私もプログラミングが主な仕事のときは山田さんの書籍で学び、知識を身につけていました。特に新しい言語を学ぶ時は手元に書籍を置き、ことあるごとに読み返していました。

プログラミングで大事なことが随所に書かれている

プログラミングには「書くことはできるが書かないほうが良い書き方」があります。

コードは他の人が最短時間で理解できるように書かなければならない」とはリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)に書かれている「読みやすさの基本定理」です。

「書くことはできるが書かないほうが良い書き方」をしてしまうと、他の人(将来の自分も含む)がプログラムコードを理解するスピードが落ちてしまいます。

文法を学んだだけではこれに気づくことができず、実践の場でレビューされて初めて気づく(もしくは気づかないままプロダクトコードに埋め込まれてしまう)などといったことになりがちです。

独習Pythonでは文法を説明するだけでなく、どのように書いたら良いかという点についても折りに触れて説明されています。

この説明を理解することにより、学んだ文法を適切に使うことができるでしょう。

まとめ

Pythonプログラミングの入門書を読んだ次の書籍として独習Pythonで文法をひととおり学ぶことで、中級プログラマーへの土台をつくることができるでしょう。

網羅的かつ簡潔にまとまっていますので、他言語を知っている人がPythonを学ぶ際にも役立つ書籍です。

Pythonの本もいろいろ出ていますが、これからPythonをじっくり学びたい人には独習Pythonをおすすめしたいと思います。

WebでPythonを学びたい人は、オンラインPython学習サービスのPyQもありますので、よろしくお願いします。

独習Python

*1:httpからhttpsへのURL変更でブックマーク数がリセットされてしまったのが残念です。

「自走プログラマー」は中級以上のPythonプログラマーになりたい人のための豊富なレシピ集

ビープラウドの清水川貴之さん@shimizukawa , 清原弘貴さん@hirokiky@tell-kさんが執筆(ビープラウド監修)した「自走プログラマー」が出版されます(大手書店は2020年2月18日から先行販売、電子書籍は2月22日販売開始、一般書店は2月27日販売開始です)。

自走プログラマーの前書きには「プログラミング入門者が中級者にランクアップするのに必要な知識をお伝えする本」と書かれています。

私なりに、入門、初級、中級以上のそれぞれのプログラマーのレベルをイメージしてみました。

  • 入門プログラマー
    • プログラミングの文法を学びながら書いている。プログラムが完成しないこともある。
  • 初級プログラマー
    • 見よう見まねで動くプログラムを完成できる。しかしレビューを受けると、多くの指摘があり、レビュー、修正ともに大きな時間がかかってしまう。行ったり来たり、止まったりの「迷子状態」にハマることが多い。
  • 中級以上のプログラマー
    • 動くプログラムを完成できる。レビューは指摘事項が少なく、少量の修正で済む。人の助けを借りる量も少なく自走している状態。

中級以上のプログラマーが持っている習慣

中級以上のプログラマーが持っていて、入門、初級プログラマーが持っていない習慣があります。

それは「すべての設計・実装に理由をもつ習慣」です。

中級以上のプログラマーは、設計や実装の理由を質問すると、明確な答えが返ってきます。

一方で、入門、初級プログラマーにレビューで質問をすると「なんとなく」「憶えていない」「Webからコピペしたので理由はない」というような答えがしばしば返ってきます。

中級以上のプログラマーは「すべての設計・実装に理由を考える」習慣をもっているために、プログラムやシステムの全体の一貫性が維持され、メンテナンス性、パフォーマンスにも優れたプログラムを書くことができるのです。細部まで心が行き届いている状況といえるでしょう。

入門、初級者の人がすべてに理由を考えられない理由

入門、初級者の人が理由を考えられないのには理由があります。

入門・初級者はプログラムを動かすための知識を1つしかもっていません。

それは、プログラムの入門書には「プログラムを動かす方法」は書かれていますが、設計や実装の選択肢やメリット・デメリットは書かれていないからです*1

設計や実装の選択肢を1つしか持っていないので、それが良いのか悪いのかわからないのです*2。そのため、設計や実装の理由を考えようにも考えられないのです。

設計・実装の選択肢を良いも悪いも含めて複数もっていれば、それぞれの案を比較検討できますし、少しずつでも理由を考えられるようになります。

「自走プログラマー」には、この良い(ベストプラクティス)・悪い(具体的な失敗例)の選択肢が良い・悪いも合わせて240(120のプラクティス☓2)個掲載されていますので、理由を考えるための「設計・実装の選択肢」を得ることができるでしょう。

この「理由を考えるための設計・実装の選択肢」が、前書きに書かれている「プログラミング入門者が中級者にランクアップするのに必要な知識」の本質です。

「自走プログラマー」の具体的な内容

自走プログラマーの目次は以下です。

第1章 コード実装
1.1 関数設計
1.2 クラス設計
1.3 モジュール設計
1.4 ユニットテスト
1.5 実装の進め方
1.6 レビュー

第2章 モデル設計
2.1 データ設計
2.2 テーブル定義
2.3 Django ORMとの付き合い方

第3章 エラー設計
3.1 エラーハンドリング
3.2 ロギング
3.3 トラブルシューティング・デバッグ

第4章 システム設計
4.1 プロジェクト構成
4.2 サーバー構成
4.3 プロセス設計
4.4 ライブラリ
4.5 リソース設計
4.6 ネットワーク

第5章 やることの明確化
5.1 要件定義
5.2 画面モックアップ

関数名の名前付け、関数設計から始まり、クラス設計、モジュール設計、ユニットテストと進み、レビュー、モデル設計、エラー設計、システム設計、要件定義と、ソフトウェアの小さな範囲からソフトウェア全体へと範囲が広がっていきます。

中級以上のプログラマーの意識は、機能をつくるというソフトウェアの「点」にとどまらず、開発するソフトウェアが安定して持続的に運用や開発を続けていけるのかという「面」にも視点が及んでいるのでそのような構成になっています。

プログラマーは、実運用で起きうるエラーや異常をあらかじめ認識したエラーハンドリング、そして迅速な状況把握を可能にするロギングができて、はじめて一人前です。

「自走プログラマー」では、エラー設計(ロギング)にも37ページの紙幅をとっています。

このように自走プログラマーは、本番運用まで見越した実践的な内容になっています。

「自走プログラマー」の活用方法

設計・実装の選択肢を得た上で「自走プログラマー」を以下のように実践で活用していただければと思います。

  • 「自走プログラマー」のプラクティスに書かれているように実装してみる。実装・設計のパターンを頭に入れる
  • 「自走プログラマー」にかかれている「具体的な失敗例」と「ベストプラクティス」の違いをひとつひとつ理解する*3
  • 「ベストプラクティス」ではない設計・実装をしたときにどのようなデメリットが発生するかを考える
  • すべての設計・実装に理由を考えることを始める・続ける

「自走プログラマー」のひとつひとつのプラクティスは日々の開発で「理由」を考え抜いて得られたものです。料理でいうとプロの料理人によって考え抜かれたレシピ集です。

これらを読んでいくことで、中級以上のプログラマーが、日々どのようなことにこだわり、思考を積み上げているかを知ることもできるでしょう(中にはそこまで考える必要あるの?というものもあるでしょう)。

最後に

中級以上のプログラマーには誰もが一足跳びには到達できません。

日々のひとつひとつの仕事(設計・実装)に意味・理由を考えて、思考を重ね、洗練させていくなかで、徐々にそのレベルに到達していきます。

日々、すべてに理由を考える習慣を続けられる人は、短い期間で初級者から中級以上のレベルに達することができます

逆にいうと、日々すべてに理由を考える習慣のないプログラマーは何年経っても初級プログラマーから中級以上のプログラマーに進化はできないでしょう。これは厳しいようですが現実です。

このようにならないためにも、理由を考えるための設計・実装の選択肢と、中級以上のプログラマーの考え抜く視点を「自走プログラマー」から手に入れてもらえればと思います。

そして、得た知識をもとに、すべてに理由を考える習慣を始めるとよいでしょう。

入門・初級レベルのプログラマーの方は是非とも、中級以上のプログラマーを目指しましょう。

一回このレベルに到達すれば、プロフェッショナルなプログラマーとして安定した成果が出せますし、周囲からの信頼も高くなるでしょう。

そのための入り口として「自走プログラマー」を是非お手にとっていただければと思います。

自走プログラマー ~Pythonの先輩が教えるプロジェクト開発のベストプラクティス120

*1:これは入門書という性質上仕方のないことです

*2:良い悪いは相対的なものなので

*3:プログラミングの設計や実装の違いは、小さなこだわりであることもしばしばあります。そのため違いを理解できないこともあるかもしれません。読書会を開催して複数の視点から考えるのも良いかもしれません

「ザッソウ」は価値を創造するチームのための導入しやすいコミュニケーションガイド

ソニックガーデン社の倉貫義人さんが執筆された「ザッソウ」を拝読しました。

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

「ザッソウ」とは

「ザッソウ」とは雑談+相談の造語です。

本書のメイン・テーマは、雑談と相談をチームコミュニケーションの土台にしていくことの提案です。

書籍を読んで感じた本書の特徴や感想を以下にあげていきます。

「チームの価値創造力」を高めることが中心コンセプト

私が「ザッソウ」を読んで納得感を感じたのは、チームが価値を創造し、成果を生むために「ザッソウ(雑談と相談)」が必要という観点から全体が書かれていることです。

チームの心理的安全性を高めたり、働きやすい職場をつくるのはなぜでしょうか。

その理由をつきつめると、チームが価値を創造し、成果を生むためです。

その目的を忘れてしまうと、うまくコミュニケーションを取っているようでも、実は衝突を回避したり、嫌われないための表面的なコミュニケーションだったりすることも多々あります。

本書は、チームが価値を創造し、成果を生むことを目的とした、しかし敷居が低く取り組みやすいコミュニケーション方法としての「ザッソウ」を提案していることに、書籍の骨太さを感じました。

チームコミュニケーションを俯瞰するための理論がまとまっている

雑談や相談によってコミュニケーションが活発化した結果、チーム内で衝突が起きるなどチームに変化が起きます。

また、日々、漫然と雑談していてよいのだろうかという不安に襲われることもあるかもしれません。

そのような時に、役立つのがコミュニケーションや心理学の理論です。

本書で紹介されているチームコミュニケーションの理論を知っておくことで、チームに起きた変化や現在地点を俯瞰できます。

それにより、自分たちの状況を客観的に考えることができるので、対策を考え、行動できるようになるでしょう。

また、ザッソウの目的・効果を知っておくことで、チーム内のザッソウの内容も時間とともに進歩していくことでしょう。

本書では紹介されている主な理論は以下のようなものです。

わたしも紹介されている理論は部分的には知っていたのですが、書籍にまとめていただいたことで、それぞれが関連付けられ深く知ることができました。

チーム内での役割や個人の段階に応じて読むことができる

本書は、チームリーダーやメンバーなどチーム内の役割や成長の段階に応じた、ザッソウのコツや考え方が書かれています。

  • チームリーダーが、チームのコミュニケーションを活発化し、チームのレベルを高めていく考え方、ザッソウを促すコツ
  • 経験の浅いメンバーが、チームでザッソウする考え方やコツ

自分の状況に応じて、必要な箇所を読んでみるとよいでしょう。

また、経験の浅いメンバーがリーダーの気持ちや考えを知ることもでき、リーダーもメンバーの気持ちを知る(思い出す)こともできるでしょう。

各個人が、自分と違う役割や段階の人についてお互いに知ることで、チームのコミュニケーションレベルもあがり、チーム力の底上げにつながります。

最後に

これからの時代は、人が時間をかけて作業していた単純な仕事は、AIやロボットによって自動化されます。

そのような時代では、人にしかできない仕事が人の仕事になります。

その仕事とは、未来のビジョンや実現したい価値を描き、それをカタチにし、価値を創造していくことです。

そのような仕事は、ひとりではなく複数人のチームで実現していくことになります。

そのときには、チームとしての創造力を高めることが、価値の実現につながります。

なぜなら、創造力に必要な、想像力、知識、発想、アイデア、技術力、視点、ビジョンなどは、人とのコミュニケーションから生まれてくることが多いからです。

チームの創造力を高め、最大限に価値を実現するためのコミュニケーション手法が「ザッソウ」です。

本書を読めばわかりますが、ザッソウは導入の敷居が極めて低く明日からでも始められます。

仕事の期限に追われているときは、少しでも早く手を動かしたい気持ちになります。

しかし日頃から「急がば回れ」の発想で「ザッソウ」を導入することで、ビジョンの実現に速く近づくチームになれるのではないでしょうか。

「ザッソウ」を価値を創造するチームのためのコミュニケーションガイドとしておすすめします。

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

*1:書籍を参照してください

「正しいものを正しくつくる」は、エンジニアの傲慢が詰まった書籍か

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで」の著者、市谷聡啓さんが2019年6月に出版した「正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について」を拝読しました。

正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について

本書をおすすめしたい人

  • プロダクト開発において、アジャイル開発での進めかたを知りたい人
  • アジャイル開発チームのプロダクトオーナー(ビジネスサイド、企画者)
  • プロダクト開発チームが所属している会社の経営者
  • アジャイル開発を新たに学びたい人
  • アジャイル開発をひととおり知っているが、あらためて学びたい人

「正しいものを正しくつくる」という中心理念

本書のAmazonレビューを見ていたところ、星1つのレビューを見つけました。

エンジニアの傲慢さが詰まった本

「正しい」という言葉を使うエンジニア、同じエンジニアとして非常に恥ずかしい思いです。 「正しいもの」など誰がわかるのでしょう?わかるのなら皆誰も失敗などしないでしょう。

書籍のタイトルだけを見たら、このように考えるのもおかしくはありません。

必ず成果が出る「正しい」要求や仕様をビジネスサイドから提供されれば、それにもとづいて作りますというエンジニアも世の中には存在するからです。

しかし、本書に描かれているアジャイル開発チームの考え方は、真逆です。

プロダクト開発のプロジェクトは「不確実性*1」と常に背中合わせです。

その状況のなかで「正しいものとは何か?」という問いを立て、仮説検証しながらつくるべきものを探り、開発においては「正しくつくれているか?」を日々確かめる、謙虚で思慮深いアジャイル開発チームの姿を本書からはイメージすることができます。

プロダクト開発において「正しさ」はプロジェクトが続く限り、追い求めていくものであり、問い続けていくものです。

「正しいものを正しくつくる」という言葉は、本書の内容を読めば、いうまでもなくエンジニアの傲慢ではないことがわかります。

「正しいものを正しくつくる」とは、「正しいものとは何か?」「つくっているものは正しいといえるか?」「正しくつくれているか?」と問い続けるチームをつくるための中心理念であるといえるでしょう。

チームが不確実性と戦っていくための戦略の書

本書の第4章「アジャイル開発は2度失敗する」で、アジャイル開発チームは2つの壁につきあたると説明されています。

  • アジャイルに作ることによる困難の壁

    • アジャイル開発を習得することそのものの難しさによる困難
  • プロダクトの成果が上がらないという壁

    • プロダクトをリリースしたが売上が伸びない、使われない

本書は、これらの壁をアジャイル開発チームが乗り越え、成長し、成果を出すための考え方と取り組みを順を追って説明しています。

その説明の深さと内容は、アジャイル開発チームが不確実性と戦っていくための戦略の書であるといえます。

アジャイル開発の基本を学べる

本書はアジャイル開発そのものについても、ボリュームを割いて丁寧に説明しています。

アジャイル開発の一般的な説明というよりも、プロダクト開発という文脈を起点にアジャイル開発を説明しているので、より実践的な説明であるといえるでしょう。

そのため、アジャイル開発について入門したいという人から、アジャイル開発をあらためて学びたいという人にもおすすめです。

最後に:著者のプロジェクト経験から学ぶ

アジャイル開発に関する書籍では「アジャイルで開発すればうまくいく」という内容になりがちです。

しかし、本書ではアジャイルに開発するだけではうまくいかないことにしっかりと目を向けています。

本書は、チームがアジャイル開発における失敗から学び、成長していく過程を追体験できる構成です。

愚者は(自分の)経験に学び、賢者は歴史(他人の失敗)に学ぶ*2といいます。

プロジェクトのチームに与えられる時間も、人生の時間も限りがあります。

アジャイル開発でプロダクト開発に取り組む方々は、自らの経験と失敗の中から学ぶのもよいですが、本書の著者の失敗と経験の中から得た知見から学ぶのはいかがでしょうか*3

P.S

私は自分の血肉になりそうな書籍は、図にまとめて理解を深め、ことあるごとに参照するようにしています。

「正しいものを正しくつくる」を拝読させていただき、今後何度も読み返す書籍であると思い、図にまとめました*4

本書のさらなる内容紹介になれば幸いです。

f:id:haru860:20190721100551p:plain

*1:不確実性とは、起こりうる事象はわかっているが、それが起こる確率が事前に予測できないという性質のこと

*2:オットー・フォン・ビスマルク(初代ドイツ帝国宰相)の言葉

*3:それでも、多くの失敗をするでしょう

*4:書籍内の全体構成図をさらに加筆