私たちは、土木技師がスライドルールから電卓に移行したときの経験をしている。あるいは、電気技師が手動で回路図を描くのからCADツールに移行したように。面白いのは、ソフトウェアエンジニアリングも進化しなきゃいけないってこと。プロセスやツールも進化し続ける必要がある。2004年に大学を卒業する時、私たちは「ソフトウェアの危機」や、カスケード開発プロセス、新しい「反復的手法」が始まっていることを学んだ。スパゲッティコードがPascal/Cの構造化プログラミングに取って代わり、さらにOOPに進化したことも学んだ。エンジニアリング手法も進化して、UMLが有名な言語の一つだけど、形式的検証のためのZ言語や、ABCやサイクロマティック複雑性の測定などもある。で、今の話に戻ると、今やコンピュータがほとんどのコードを書いているから、現在のプログラミング言語やソフトウェア開発プロセスの価値が下がってきてる。プログラミング言語は人のために作られてるから(そうじゃなきゃアセンブラで書き続けるはずだよね)。だから、コンピュータに意図を伝えるための抽象化を変えなきゃいけないし、最終的な指示が自分たちの望んでいたことをしているか確認する必要がある。新しい抽象化がどうなるのか、すごく興味がある。コーディングの細かい部分が完全に自動化されるなら、ソフトウェアエンジニアリングの職業にもっと厳密なエンジニアリング(本当のエンジニアリング)が見られるかもしれないと思ってる。コーダーはまだいるだろうけど、家を建てたり改造したりする非エンジニアもいるからね(少なくともメキシコではよくあること)。