OpenWork Tech Blog

社員クチコミサービスを運営しているオープンワークエンジニアによるテックブログです。

"小さな"ドキュメントでより良い開発体験を。「世界一流エンジニアの思考法」のTipsを開発に取り入れてみた

Web開発エンジニアの森山です。

2023年10月に出版された、ソフトウェアエンジニア牛尾剛さんの「世界一流エンジニアの思考法」という書籍を読みました。この中で紹介されていた「小さなドキュメントを実装前に書く」という方法が良さそうだったので、やってみてどうだったのかを書きたいと思います。

「世界一流エンジニアの思考法」はどんな本?

簡単にまとめると以下のような内容です。

  • 著者は44歳でマイクロソフトに転職したエンジニア
  • 周囲から評価されている強みではない分野で転職している
  • アメリカで一流のエンジニアと働く中で学んだ思考法(マインドセット)や実践方法がまとめられている

著者の牛尾さんは自身について「私は三流エンジニアであり、どうやったら不得意なことでも効率よく人並みにできるようになるのかを意識してきた。」と書いています。さらに周囲からマネジメント方面で評価されているにも関わらず、自身が強みではないと思っている「プログラマ」としての転職です。

そんなエンジニアが本場アメリカでどのように凄腕エンジニアと働いているのか。本書にはそのような内容が詰まっています。

実践方法「小さなドキュメントを実装前に書く」

本書で「理解に時間をかけること」の重要性について書かれているのですが、それを実践する方法の一つが「小さなドキュメントを実装前に書く」という方法です。
以下は私が要約した内容です。

【内容】
設計のアイディアと大まかな仕様をワード数枚程度に書く。

【目的】
これはプログラマのためのもの(クライアントのためのものではない)
良いソフトウェアを書く上で理解して効率良く開発するためにするもの

【項目】
・スコープ:ドキュメントの範囲
・バックグラウンド:なぜするか?の背景
・プロブレム:解決したい問題
・プロポーザル:どういうデザインにするか?その理由。2-10ページ程度

【メリット】
・自分の頭を整理できる
・考えていることを書けば良いため、後から“退屈な”ドキュメント作成をしなくて済む

P39 小さなドキュメントをコードの前に書く

【実践】開発に取り入れてみよう

良いアイディアだと感じたので早速開発に取り入れてみました。

OpenWorkの開発ではBacklogを用いて開発機能の管理を行っています。
開発の際にはプロジェクトマネージャーがBacklogに作成した、機能の仕様が書かれた「施策チケット」を元にしてエンジニアが開発をしています。 本書で紹介されていた小さなドキュメントの項目の内、スコープ/バックグランド/プロブレムはこの施策チケットに既に書かれています。そのため小さなドキュメントとして作るのはプロポーザル(どういうデザインにするか?その理由。2-10ページ程度)の項目について書くことにしました。

小さなドキュメントには以下のような"開発に関わること"を書いていきます。

【小さなドキュメントに書くこと】
・施策チケット内の実装に関わる内容
・機能をどのように作るか
・実装するクラス名/関数名/変数名
・ユーザーの条件
・判定方法 などなど

【感想】やってみて良かったこと

1. 仕様の確認が必要な内容を事前に挙げることができる

これまでの私は「実装をしながら疑問が出た時点で仕様の確認を都度行う」という方法をとっていました。しかし、この方法だと「実装の手が止まる」「仕様の検討に時間がかかる内容をスケジュールの後半で確認してしまう」「リリース数日前に他機能に影響があることが分かる」ということが度々ありました。これを小さなドキュメントを実装前に作ることで仕様の理解が深まり、実装に関わる内容を事前に整理できるため、仕様の考慮漏れを無くすことができました。

2. 実装をスムーズに進めることができて気持ちが良い

実装をしながら仕様に沿ったものを作ろうとすると「考える→手を動かす→考える→手を動かす…」という進め方になるため、「実装の中断によりどこまで対応していたか忘れてしまう」ことがありました。これが「考える→手を動かす」となり、実装の進捗は小さなドキュメントを確認すれば良くなったため、再開もスムーズになります。何より途中で手が止まらないので実装していて気持ちが良いです。

最後に

今回は本で紹介されていた実践方法の一つを紹介しました。 他にも「試行錯誤は悪」「怠惰であれ(Be lazy)」「マルチタスクをやめる」などの思考法が書かれており、エンジニアの悩みを解決してくれるヒントが何かしらあると思いました。今後も開発をより良くするアイディアは積極的に取り入れていきたいと思います。

オープンワークでは開発をより良くしてくれるエンジニアを募集中です。 開発に興味のある方はぜひ、採用サイトも覗いてみてください! www.openwork.co.jp