Magnolia Tech

いつもコードのことばかり考えている人のために。

「いかにして問題をとくか」を読んでみよう

いかにして問題をとくか

いかにして問題をとくか

先日の設計Night 2018で発表したスライドの冒頭で「いかにして問題をとくか」に出てくる4つのステップを引用した。

  1. 問題を理解すること
  2. 計画をたてること
  3. 計画を実行すること
  4. ふり返ってみること

元々、表紙をめくった2ページがチートシートになっていて、ソフトウェア開発の進め方を考える上で非常に参考になる要素が全部ここに詰まっているといってもいいくらいの充実した内容が書かれている。この2ページのために1620円を払っても全然いい。

スライドでは最初のステップ「問題を理解すること」だけを使ったけど、当然残る3つのステップもソフトウェア開発においては大事な考え方が詰まっている。

計画をたてること

ここでいう「計画をたてる」とはスケジュールを引くことではない。ここでは類似の問題を探してきたり、問題をとくための条件を整理したりする過程をいっている。

特にチートシートの最後に書かれている「問題に含まれる本質的な概念はすべて考慮したか.」をことあるごとに唱えた方が良い。

計画を実行すること

単に実行するだけではなく、段階的に(形式的、または直感的に!)進めていき、それぞれの正しさを理解すること、更には正しさを証明できるか?と書かれている。

自分が理解できていることと、他人に向かって証明できることはまた異なるといっている。

現代的なソフトウェア開発ではテストを書くことは当たり前になってきたので、この辺りの記載は非常に納得感がある。テストは、その書かれている範囲においてプログラムが意図通りに実行されることの証明になる(バグのないことの証明ではない)。

ふり返ってみること

結果が正しいかを試すことができるか、同じ結果を違った仕方で導くことができるか、ということが書かれている。

KPTつかったりして、振り返りを日常的にやることが大事だ、という考え方が広まっているので、この辺も納得感がある。

おわりに

見開きのチートシート、第Ⅰ部「教室にて」、第Ⅱ部「いかにして問題をとくか」までが約40ページで、ここまでを読めばほぼこの本の主要なことは全部読むことができる。残る200ページは雑多なトピックが並んでいるので、拾い読みしておけばいい内容…決して全部読まなくてもいい。