「プリンシプルオブプログラミング」の「1.2 コードは設計書である」を読みました。
一般的な理解だと、システムやデータベースの設計は上流工程の仕事、コーディングは下流工程の仕事という整理がされます。
下流に行くほど具体的な仕事になるので、タスクベースの仕事になり、上流に行くほど抽象的な仕事なので目的ベースの仕事になります。
そのため、Web サービスを運営している組織では Biz 職がプロジェクトの目的・要求から用件を整理し、エンジニアに仕事を投げるということがよくなされると思います。
しかし、この本の主張は「コードは設計書であり、コーディングは上流工程の仕事である。」というものです。
では下流工程はというと、そのコードをコンパイルしてビルドする工程です。
このように考えると、ソフトウェア開発では人間のやることは全て上流工程の仕事ということになります。
それであればエンジニアのスタンスとして、Biz 職から渡された要件をただ実現するというだけでは不十分ではないかと思えてきます。
コーディングという上流工程を担当する以上、プロダクトのグロース戦略をしっかり理解し、プロジェクトの目的を理解し、顧客を理解し、企画段階から加わってコーディングを行うべきだなと感じました。