
463
ソフトウェア工学教育については、コンピュータサイエンスの新入生たちがプロのソフトウェア技術
者になる上で必要な、プログラミング、設計、テストのスキルをいかに教えるか、について書かれたも
のは多数あります。しかし、コンピュータサイエンスの学生たちは卒業時にその教育を終えていないど
ころか、実際はほんの入り口にいるのです。新規に雇用される技術者たちは締切を守ってコードを編集
し、デバッグし、作成することを学びつつさらに、大規模チームの同僚たちとの適切なコミュニケーショ
ンややり取りの方法も学ばなければなりません。本章では、ソフトウェア開発者たちのはじめての生産
現場でのお仕事における初心者としての体験をつぶさに眺めながら、上記の
2
種類のことがらに対する
教育経験の類似点と相違点を調べます。
大学は、学生たちにコンピューティングの中核的な概念を教育し、それによって学生たちに生涯に渡っ
て学び続けられ、またこの分野
の革新にもついて行けるようになってもらうという形で、学生たちが産
業界に進む準備を整えようとします。これらの「固い」スキルを教えるというアプローチは、新しいプ
ログラミングパラダイム(オブジェクト指向)や開発手法(アジャイル、エクストリームプログラミング)
などに見られるような、産業界の進歩に後押しされて来ました。その反面、大学の環境では、仕様を創
り出したりデバッグしたり、コードやその背景、歴史を文書化する能力などの「柔らかい」スキル、な
いし、ソフトウェア工学の人間的要因については、それほど力を入れて来ませんでした。 ...