ソフトウェア設計のトレードオフと誤り―プログラミングの際により良い選択をするには