2022年11月15日火曜日

Googleのソフトウェアエンジニアリング

 Googleでのソフトウェア開発がどのように行われているのかを解説した本。

正直、特別なことは何もない、当たり前のことを当たり前にやり続けた結果の積み上げがあるのだなと納得する。

一時期、Googleではマネージャーを廃止したこともあったらしいが、リームリーダーに関してかなりのページを割いているのは面白い。

また、設計等については特に言及していない。あくまでも重要なのはコードで、それを継続的に発展させるためのツールとしての設計があるだけという印象。あくまで製品に集中しているのがわかる。

手元において、迷った時に読み返したい本だと思う。目次だけでも記載しておく


第1部 主題

1章 ソフトウェアエンジニアリングとは何か
    1.1 時間と変化
        1.1.1 Hyrumの法則
        1.1.2 例:ハッシュの順序付け
        1.1.3 「何も変化しない」状態をとにかく目指すのはどうか
    1.2 スケールと効率
        1.2.1 スケールしないポリシー
        1.2.2 よくスケールするポリシー
        1.2.3 例:コンパイラーのアップグレード
        1.2.4 左への移動
    1.3 トレードオフとコスト
        1.3.1 例:ホワイトボードマーカー
        1.3.2 意思決定への入力
        1.3.3 例:分散ビルド
        1.3.4 例:時間とスケールの間での決定
        1.3.5 決定を再考すること、間違うこと
    1.4 ソフトウェアエンジニアリング対プログラミング
    1.5 結論
    1.6 要約

第2部 文化

2章 チームでうまく仕事をするには
    2.1 自分のコードを隠すのを手伝ってはくれないか
    2.2 天才神話
    2.3 隠蔽は有害とみなされる
        2.3.1 早期発見
        2.3.2 バス係数
        2.3.3 進捗ペース
        2.3.4 要するに、隠れるな
    2.4 チームが全て
        2.4.1 社会交流の三本柱
        2.4.2 何故三本柱に意味があるのか
        2.4.3 謙虚、尊敬、信頼の実践
        2.4.4 非難なきポストモーテム文化
        2.4.5 Google的であること
    2.5 結論
    2.6 要約

3章 知識共有
    3.1 学びを阻む課題
    3.2 哲学
    3.3 舞台を整える:心理的安全性
        3.3.1 メンター制度
        3.3.2 大規模集団での心理的安全性
    3.4 自分の知識を発展させる
        3.4.1 質問を尋ねよ
        3.4.2 文脈を理解せよ
    3.5 質問をスケールさせる:コミュニティへの質問
        3.5.1 グループチャット
        3.5.2 メーリングリスト
        3.5.3 YAQS:Q&Aプラットフォーム
    3.6 自分の知識をスケールさせる:教えられるものは常にある
        3.6.1 オフィスアワー
        3.6.2 テックトークと講習
        3.6.3 ドキュメンテーション
        3.6.4 コード
    3.7 組織の知識をスケールさせる
        3.7.1 知識共有の文化を養う
        3.7.2 カノニカルな情報源の確立
        3.7.3 情報の輪に参加し続ける
    3.8 リーダビリティ:コードレビューを通じての標準化されたメンター制度
        3.8.1 リーダビリティプロセスとは何か
        3.8.2 何故このプロセスがあるのか
    3.9 結論
    3.10 要約

4章 公正のためのエンジニアリング
    4.1 バイアスこそがデフォルト状態である
    4.2 ダイバーシティの必要性を理解する
    4.3 多文化理解の能力を育む
    4.4 多様性を行動可能なものにする
    4.5 一本槍のアプローチは退けよ
    4.6 確立されたプロセスを疑え
    4.7 「価値観」対「結果」
    4.8 好奇心を持って突き進め
    4.9 結論
    4.10 要約

5章 チームリーダー入門
    5.1 マネージャーとテックリード(とその両方)
        5.1.1 エンジニアリングマネージャー
        5.1.2 テックリード(TL)
        5.1.3 テックリードマネージャー(TLM)
    5.2 IC役職からリーダーシップ役職への異動
        5.2.1 恐れるべき唯一のものは……えっと、全てだ
        5.2.2 サーバントリーダーシップ
    5.3 エンジニアリングマネージャー
        5.3.1 マネージャーとは四文字単語である
        5.3.2 今日のエンジニアリングマネージャー
    5.4 アンチパターン
        5.4.1 アンチパターン:押しに弱い者を採用する
        5.4.2 アンチパターン:成績の悪い者を無視する
        5.4.3 アンチパターン:人間的問題を無視する
        5.4.4 アンチパターン:全員の友人になる
        5.4.5 アンチパターン:採用基準で妥協する
        5.4.6 アンチパターン:自分のチームを子供のように扱う
    5.5 建設的パターン
        5.5.1 エゴを捨てよ
        5.5.2 禅の老師となれ
        5.5.3 触媒となれ
        5.5.4 障害を取り除け
        5.5.5 先生かつメンターになれ
        5.5.6 明確なゴールを設定せよ
        5.5.7 正直であれ
        5.5.8 満足度を追跡調査せよ
    5.6 予期しない質問
    5.7 他のヒントや秘訣
    5.8 人は植物のようなものである
        5.8.1 「内発的動機付け」対「外発的動機付け」
    5.9 結論
    5.10 要約

6章 スケールするリーダー
    6.1 いつでも決定せよ
        6.1.1 飛行機の比喩
        6.1.2 目隠しを特定せよ
        6.1.3 鍵となるトレードオフを特定せよ
        6.1.4 決定し、それから反復せよ
    6.2 いつでも立ち去れ
        6.2.1 あなたのミッション:「自動運転」チームを構築せよ
        6.2.2 問題空間の分割
    6.3 いつでもスケールせよ
        6.3.1 成功の周期
        6.3.2 「重要」対「緊急」
        6.3.3 ボールを落とすことを学べ
        6.3.4 自分のエネルギーを保護する
    6.4 結論
    6.5 要約

7章 エンジニアリング生産性の計測
    7.1 何故エンジニアリング生産性を計測すべきなのか
    7.2 トリアージ:そもそも計測するほどの価値があるか
    7.3 ゴールとシグナルを伴う、意味のあるメトリクスを選ぶ
    7.4 ゴール
    7.5 シグナル
    7.6 メトリクス
    7.7 メトリクスの検証にデータを用いる
    7.8 行動に出ることと結果の追跡
    7.9 結論
    7.10 要約

第3部 プロセス

8章 スタイルガイドとルール
    8.1 何故ルールを設けるのか
    8.2 ルールを作る
        8.2.1 指導原則
        8.2.2 スタイルガイド
    8.3 ルールを変更する
        8.3.1 プロセス
        8.3.2 スタイル調停者
        8.3.3 例外
    8.4 ガイダンス
    8.5 ルールを適用する
        8.5.1 エラーチェッカー
        8.5.2 コードフォーマッター
    8.6 結論
    8.7 要約

9章 コードレビュー
    9.1 コードレビューのフロー
    9.2 Googleでのコードレビューはどのように機能しているか
    9.3 コードレビューの恩恵
        9.3.1 コードの正しさ
        9.3.2 コードの意味の把握
        9.3.3 コードの一貫性
        9.3.4 心理的ならびに文化的な恩恵
        9.3.5 知識共有
    9.4 コードレビューのベストプラクティス
        9.4.1 礼儀正しく、かつプロフェッショナルになれ
        9.4.2 小さな変更を書け
        9.4.3 良い変更説明を書け
        9.4.4 レビュアーの人数は最小限にとどめよ
        9.4.5 可能な場合は自動化せよ
    9.5 コードレビューの類型
        9.5.1 グリーンフィールドコードレビュー
        9.5.2 挙動の変更、改善、最適化
        9.5.3 バグ修正とロールバック
        9.5.4 リファクタリングと大規模変更
    9.6 結論
    9.7 要約

10章 ドキュメンテーション
    10.1 何がドキュメンテーションとして適格か
    10.2 何故ドキュメンテーションが必要なのか
    10.3 ドキュメンテーションはコードのようなものである
    10.4 対象読者を認識せよ
        10.4.1 対象読者の類型
    10.5 ドキュメンテーションの類型
        10.5.1 リファレンスドキュメンテーション
        10.5.2 デザインドック
        10.5.3 チュートリアル
        10.5.4 概念的ドキュメンテーション
        10.5.5 ランディングページ
    10.6 ドキュメンテーションのレビュー
    10.7 ドキュメンテーション哲学
        10.7.1 誰が、何を、いつ、どこで、何故
        10.7.2 始まり、中盤、終わり
        10.7.3 優れたドキュメンテーションの特徴的要素
        10.7.4 ドキュメントを廃止する
    10.8 テクニカルライターが必要なのはどんなときか
    10.9 結論
    10.10 要約

11章 テスト概観
    11.1 何故テストを書くのか
        11.1.1 Googleウェブサーバーの物語
        11.1.2 現代的開発速度でのテスト
        11.1.3 書き、実行し、反応する
        11.1.4 コードをテストする利点
    11.2 テストスイートを設計する
        11.2.1 テスト規模
        11.2.2 テスト範囲
        11.2.3 Beyoncéルール
        11.2.4 コードカバレッジについてのメモ
    11.3 Google規模でのテスト
        11.3.1 大規模テストスイートの落とし穴
    11.4 Googleでのテストの歴史
        11.4.1 オリエンテーション講習
        11.4.2 テスト認定プログラム
        11.4.3 トイレでのテスト
        11.4.4 今日のテスト文化
    11.5 自動テストの限界
    11.6 結論
    11.7 要約

12章 ユニットテスト
    12.1 保守性の重要さ
    12.2 脆いテストを防ぐ
        12.2.1 変化しないテストを目指す
        12.2.2 公開API経由のテスト
        12.2.3 相互作用ではなく、状態をテストせよ
    12.3 明確なテストを書く
        12.3.1 テストは完全かつ簡潔にせよ
        12.3.2 メソッドではなく、挙動をテストせよ
        12.3.3 テストにロジックを入れるな
        12.3.4 明確な失敗メッセージを書け
    12.4 テストとコード共有:DRYではなくDAMP
        12.4.1 共有値
        12.4.2 初期設定の共有
        12.4.3 ヘルパーメソッドと検証メソッドの共有
        12.4.4 テストインフラストラクチャーを定義する
    12.5 結論
    12.6 要約

13章 テストダブル
    13.1 テストダブルの、ソフトウェア開発への影響
    13.2 Googleでのテストダブル
    13.3 基本概念
        13.3.1 テストダブルの例
        13.3.2 シーム
        13.3.3 モッキングフレームワーク
    13.4 テストダブル利用のためのテクニック
        13.4.1 フェイキング
        13.4.2 スタビング
        13.4.3 インタラクションテスト
    13.5 本物の実装
        13.5.1 分離より現実に即することを優先せよ
        13.5.2 いつ本物の実装を使うべきか決める方法
    13.6 フェイキング
        13.6.1 何故フェイクが重要なのか
        13.6.2 どんな場合にフェイクが書かれるべきか
        13.6.3 フェイクの忠実性
        13.6.4 フェイクはテストされるべきである
        13.6.5 フェイクが利用できない場合はどうすべきか
    13.7 スタビング
        13.7.1 スタビングを使いすぎることによる危険
        13.7.2 スタビングが適切なのはどんな場合か
    13.8 インタラクションテスト
        13.8.1 インタラクションテストよりステートテストを優先せよ
        13.8.2 インタラクションテストが適切なのはどんな場合か
        13.8.3 インタラクションテストのベストプラクティス
    13.9 結論
    13.10 要約

14章 大規模テスト
    14.1 大規模テストとは何か
        14.1.1 忠実性
        14.1.2 ユニットテストでよくある不足部分
        14.1.3 何故大規模テストを備えないのか
    14.2 Googleの大規模テスト
        14.2.1 大規模テストと時間
        14.2.2 Googleスケールでの大規模テスト
    14.3 大テストの構造
        14.3.1 テスト対象システム
        14.3.2 テストデータ
        14.3.3 検証
    14.4 大規模テストの類型
        14.4.1 相互に作用し合う1つ以上のバイナリの機能テスト
        14.4.2 ブラウザーとデバイスのテスト
        14.4.3 パフォーマンス、負荷、ストレスのテスト
        14.4.4 デプロイ設定のテスト
        14.4.5 探索的テスト
        14.4.6 A/B差分リグレッションテスト
        14.4.7 ユーザー受け入れテスト(UAT)
        14.4.8 プローバーとカナリア分析
        14.4.9 障害復旧とカオスエンジニアリング
        14.4.10 ユーザー評価
    14.5 大テストと開発者ワークフロー
        14.5.1 大テストの作成
        14.5.2 大テストの実行
        14.5.3 大規模テストのオーナーとなる
    14.6 結論
    14.7 要約

15章 廃止
    15.1 何故廃止するのか
    15.2 何故廃止はこれほど難しいのか
        15.2.1 設計中の廃止
    15.3 廃止の類型
        15.3.1 勧告的廃止
        15.3.2 強制的廃止
        15.3.3 廃止の警告
    15.4 廃止プロセスを管理する
        15.4.1 プロセスのオーナー
        15.4.2 マイルストーン
        15.4.3 廃止ツール環境
    15.5 結論
    15.6 要約

第4部 ツール

16章 バージョンコントロールとブランチ管理
    16.1 バージョンコントロールとは何か
        16.1.1 何故バージョンコントロールが重要なのか
        16.1.2 「中央集権的VCS」対「分散VCS」
        16.1.3 信頼できる情報源
        16.1.4 「バージョンコントロール」対「依存関係管理」
    16.2 ブランチ管理
        16.2.1 進行中の作業はブランチに似ている
        16.2.2 開発ブランチ
        16.2.3 リリースブランチ
    16.3 Googleでのバージョンコントロール
        16.3.1 単一バージョン
        16.3.2 シナリオ:複数の利用可能バージョン
        16.3.3 「単一バージョン」ルール
        16.3.4 存続期間の長いブランチを(ほとんど)なくす
        16.3.5 リリースブランチについてはどうか
    16.4 モノリポ
    16.5 バージョンコントロールの未来
    16.6 結論
    16.7 要約

17章 Code Search
    17.1 Code SearchのUI
    17.2 グーグラーはどのようにCode Searchを使うか
        17.2.1 どこに
        17.2.2 何を
        17.2.3 どのように
        17.2.4 何故
        17.2.5 誰が、いつ
    17.3 何故独立したウェブツールなのか
        17.3.1 スケール
        17.3.2 設定作業不要のグローバルコードビュー
        17.3.3 専門化
        17.3.4 他の開発者ツールとの統合
        17.3.5 API公開
    17.4 設計上でのスケールの影響
        17.4.1 検索クエリーのレイテンシー
        17.4.2 インデックスのレイテンシー
    17.5 Googleの実装
        17.5.1 検索インデックス
        17.5.2 ランキング
    17.6 選択されたトレードオフ
        17.6.1 完全性:ヘッドにあるリポジトリー
        17.6.2 完全性:「全部」対「最も関連性の高い結果」
        17.6.3 完全性:「ヘッド」対「ブランチ」対「全履歴」対「ワークスペース」
        17.6.4 表現力:「トークン」対「部分文字列」対「正規表現」
    17.7 結論
    17.8 要約

18章 ビルドシステムとビルド哲学
    18.1 ビルドシステムの目的
    18.2 ビルドシステムがないと何が起こるか
        18.2.1 でも必要なのはコンパイラーだけ!
        18.2.2 シェルスクリプトは救援となるか
    18.3 現代的ビルドシステム
        18.3.1 依存関係こそ全て
        18.3.2 タスクベースのビルドシステム
        18.3.3 アーティファクトベースのビルドシステム
        18.3.4 分散ビルド
        18.3.5 時間、スケール、トレードオフ
    18.4 モジュールと依存関係を扱う
        18.4.1 粒度の細かいモジュールの利用と1:1:1ルール
        18.4.2 モジュールの可視性の最小化
        18.4.3 依存関係の管理
    18.5 結論
    18.6 要約

19章 GoogleのコードレビューツールCritique
    19.1 コードレビュー用ツール環境の原則
    19.2 コードレビューのフロー
        19.2.1 通知
    19.3 第1段階:コード変更を作成する
        19.3.1 差分作成
        19.3.2 解析結果
        19.3.3 緊密なツール統合
    19.4 第2段階:レビューをリクエストする
    19.5 第3段階と第4段階:コード変更の理解と、コード変更へのコメント付加
        19.5.1 コメント付加
        19.5.2 コード変更の状態を理解する
    19.6 第5段階:コード変更の承認(コード変更のスコア付け)
    19.7 第6段階:コード変更のコミット
        19.7.1 コミット後:履歴の追跡
    19.8 結論
    19.9 要約

20章 静的解析
    20.1 効果的な静的解析の特徴
        20.1.1 スケーラビリティ
        20.1.2 ユーザビリティ
    20.2 静的解析を機能させる際に鍵となる教訓
        20.2.1 開発者の幸福を重視せよ
        20.2.2 静的解析を中心的な開発者ワークフローの一部とせよ
        20.2.3 ユーザーにコントリビュートする権限を与えよ
    20.3 Tricorder:Googleの静的解析プラットフォーム
        20.3.1 統合されているツール
        20.3.2 統合されているフィードバック経路
        20.3.3 修正提案
        20.3.4 プロジェクトごとのカスタマイズ機能
        20.3.5 リポジトリー提出前処理
        20.3.6 コンパイラー統合
        20.3.7 コードの編集中と閲覧中の静的解析
    20.4 結論
    20.5 要約

21章 依存関係管理
    21.1 何故依存関係管理がそれほど難しいのか
        21.1.1 競合する要件群とダイアモンド依存関係
    21.2 依存関係のインポート
        21.2.1 互換性の約束
        21.2.2 インポートを行う際に考慮すべき事項
        21.2.3 Googleはどのように依存関係のインポートを扱っているか
    21.3 理論上の依存関係管理
        21.3.1 何も変化しない(別名:静的依存関係モデル)
        21.3.2 セマンティックバージョニング
        21.3.3 バンドルされたディストリビューションのモデル
        21.3.4 リブアットヘッド
    21.4 SemVerの制限
        21.4.1 SemVerは過大に制約を課す可能性がある
        21.4.2 SemVerは過大に約束をする可能性がある
        21.4.3 動機
        21.4.4 最小バージョン選択
        21.4.5 では、SemVerは機能するのか
    21.5 無限のリソースがある場合の依存関係管理
        21.5.1 依存関係のエクスポート
    21.6 結論
    21.7 要約

22章 大規模変更
    22.1 大規模変更とは何か
    22.2 誰がLSCを扱うのか
    22.3 アトミックなコード変更への障壁
        22.3.1 技術的制約
        22.3.2 マージ競合
        22.3.3 幽霊の出る墓場をなくす
        22.3.4 異種多様性
        22.3.5 テスト
        22.3.6 コードレビュー
    22.4 LSCインフラストラクチャー
        22.4.1 ポリシーと文化
        22.4.2 コードベースの内部的知識
        22.4.3 コード変更の管理
        22.4.4 テスト
        22.4.5 言語サポート
    22.5 LSCプロセス
        22.5.1 認可
        22.5.2 コード変更の作成
        22.5.3 シャード分割とリポジトリーへのコード提出
        22.5.4 クリーンアップ
    22.6 結論
    22.7 要約

23章 継続的インテグレーション
    23.1 CIの概念
        23.1.1 高速なフィードバックループ
        23.1.2 自動化
        23.1.3 継続的テスト
        23.1.4 CIの課題
        23.1.5 密閉されたテスト
    23.2 GoogleにおけるCI
        23.2.1 CIケーススタディ:Google Takeout
        23.2.2 だがCIを行う余裕がない
    23.3 結論
    23.4 要約

24章 継続的デリバリー
    24.1 Googleでの継続的デリバリーのイディオム
    24.2 速度はチームスポーツである:デプロイを管理可能な部分へ分割する方法
    24.3 変更を分離して評価する:フラグによる機能の保護
    24.4 アジャイル性を目指す:リリーストレインの構成
        24.4.1 完璧なバイナリなどない
        24.4.2 リリースの締め切りは守れ
    24.5 品質とユーザー重視:使われるものだけをリリースせよ
    24.6 左への移動:データ駆動の決定を早期に行う
    24.7 チームの文化を変える:デプロイに規律を組み込む
    24.8 結論
    24.9 要約

25章 サービスとしてのコンピュート
    25.1 コンピュート環境を手なずける
        25.1.1 トイルの自動化
        25.1.2 コンテナ化とマルチテナンシー
        25.1.3 まとめ
    25.2 マネージドコンピュート用ソフトウェアを書く
        25.2.1 障害に備えたアーキテクチャー設計
        25.2.2 「バッチ」対「提供」
        25.2.3 状態管理
        25.2.4 サービスへの接続
        25.2.5 単発コード
    25.3 長期的にスケールするCaaS
        25.3.1 抽象化としてのコンテナ
        25.3.2 1つのサービスは全てを統べる
        25.3.3 リポジトリーへ提出される設定
    25.4 コンピュートサービスを選択する
        25.4.1 「中央集権化」対「カスタマイズ」
        25.4.2 抽象化のレベル:サーバーレス
        25.4.3 パブリック対プライベート
    25.5 結論
    25.6 要約

読みやすいコードのガイドライン

全体的にソフトウェアに関連することを薄く広く扱っている。
その上で、それらのソフトウェア開発の常識が読みやすさにどう影響するかを書いてくれている。
ソフトウェア開発をある程度経験している人が、読むと良いのではないかと思う。
悪い例が数多く乗っているので、ある程度の経験がないと、悪いコードが書かれがちなこととかが腹落ちしないのはないかと思うので、社会人向けの本だと思います。

手元においておいて、コーディングで迷ったらパラパラめくって見てみて、掘り下げたいものがあれば掘り下げるように使い方をするのが良いと思う。

(目次)
第1章 可読性の高いコードを書くために
  1-1 生産性への恩恵
  1-2 可読性の高いコードを書くための要件
  1-3 代表的なプログラミング原則
  1-4 まとめ
第2章 命名
  2-1 命名に使う文法
  2-2 名前の示す内容
  2-3 単語の選択
  2-4 言語・プラットフォーム・プロダクトの規約
  2-5 まとめ
第3章 コメント
  3-1 コメントの種類と目的
  3-2 ドキュメンテーション
  3-3 非形式的なコメント
  3-4 まとめ
第4章 状態
  4-1 可変の値の方が有用なケース
  4-2 複数の変数間の直交性
  4-3 状態遷移の設計
  4-4 まとめ
第5章 関数
  5-1 関数の責任
  5-2 関数の流れ
  5-3まとめ
第6章 依存関係
  6-1 依存の強さ:結合度
  6-2 依存の方向
  6-3 依存の重複
  6-4 依存の明示性
  6-5 まとめ
第7章 コードレビュー
  7-1 レビューイの注意点1:レビューしやすいプルリクエストを作る
  7-2 レビューイの注意点2:コメントを適用する方法
  7-3 レビューアの注意点1:レビュー実施時の基本原則
  7-4 レビューアの注意点2:コメントの内容
  7-5まとめ

遠巷説百物語

又市などが出てくるシリーズではあるが、又市は最後の方しか出てきません。
妖怪というか昔話が話しのベースになっていて、いつもどおりの安定した面白さがあります。

長編では無いので、読み応えという点では物足りませんが、ちょこちょこ読むにちょうどよいです。

2022年8月4日木曜日

現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法

 良い本だと思う。

色々学んだ著者が、全体的なことを道標的に書いてくれている。

業務システムを構築するときに役に立つが、他のWebのシステム設計であろうと役荷に立つ内容が書かれていると思う。

割と普通のことが書かれているので一通り学んだことがある人なら知っている内容が多いとは思うが、おさらい的に読むのにすごくよくまとまっていて良いと思うし、

業務の設計のパターンで

Account pattern

DueDate pattern

Policy pattern

State pattern

と大まかに4つに分けてパターンワケしている点などは具体的で良ても良い。


2022年6月21日火曜日

異文化理解力――相手と自分の真意がわかる ビジネスパーソン必須の教養

参考になる内容が多かった。

外国人と働く際には見直すと良いと思う。

覚えるというよりは、中身について記憶しておいて後で読み返すようなものになっていると思う。

ケーススタディが主で、色々なケースについて記述されている。アメリカ人が遠増しな表現をするという内容などは、知ってはいたがあまり一般的とは言えないので、この本で学べることの一つだと思う。

文化のマッピングは非常に役に立つと思うし、オランダ人やフランス人など、日本人から見ればみんなヨーロッパ人で一括りにしたくもなるが、実際には中国人と日本人のように性質が異なる。

2022年4月27日水曜日

ヤフーの1on1―――部下を成長させるコミュニケーションの技法

 1on1について解説している本。

人事の人が読んだりするような本かなと思う。

基本的にはコーチングをするのがよい。

といった内容なので、具体的に1on1のやり方を知りたい人はコーチングの本を読んだほうが良いと思う。

1on1もコーチングも知らないという人が、とりあえず、1on1ってどんなものかを知るための本。

といった感じ。

なので、実際のマネージャーが何度も読み返す本ではないかな。

マンガでわかる! トヨタ式資料作成術

 エッセンスが盛り込まれていて、良い本だと思った。

わかりやすいし。

トヨタのやり方が7つのステップに分かれるとか8つのステップに分かれるなどの話はあるし、ネットにいくらでもある。

演習をする機会というのはないので、漫画で使い方をなぞれるのはよい。

特に提案資料のA3というのは、みたことなかったので良かった。


結局はA3くらいにまとまっているくらいストーリーが上手く出来ていないと、物事がうまく進まないということなのだろうとは思う。

正直、トヨタの問題解決は

https://happymakeproject.com/24725/#toc16

がよくまとまっているので、これを見るのが良い気もする。

2022年3月22日火曜日

一下級将校の見た帝国陸軍

日本が持っている組織の問題を浮き彫りにしていると思う。

現代の日本的な製造業企業にも同様の特著が見られるとは思う。

大きな単位の軍隊がある。ただし第○軍は欠。といった具合で、表現だけの帳尻を合わせて実態が伴っていなかったり、員数と言って数の帳尻さえあっていれば実態はよいなどなど。

実態と報告書が乖離している。


若い将校が自分の地位を勘違いして、ズボンのチャックまで部下に降ろさせるようなことまであったらしいから恐ろしいが、そのような状況は現代日本でもいくらか残っている気がする。

誰が命令を出したのか、本当に出したのか疑心暗鬼になって信用ができないなどは、流石にないにしても、命令系統がはっきりせずに、誰が決定権を持っているのか全くわからないというのは、現代の日本の会社においても往々にしてあると思う。

計画や評価の仕組みを整えずに、現場に任せてしまっている状態で報告自体も信用できなくなり、当然仕組みを作ることなどできずに全体が崩壊していくというのもである。

本書に書かれていることは比較的に、日本の組織全体に言えることなのではないかという気がしてくる。

古き良き日本企業というのに務めているのであれば一読の価値はあると思う。