新人プログラマに贈るテスト駆動開発とのつきあい方

http://www.infoq.com/jp/interviews/coplien-martin-tdd_ja
見ていて、自分がテスト駆動開発でいきなりやれと言われても無理だろうなと思ったので自分の経験を振り返ってみてどうやったらテスト駆動開発に乗れるのか書いてみようと思う。
 ヒヨッコプログラマーがはじめてのプロジェクトでいきなりテスト駆動で開発しようとしても難しいだろうなというのは感じます。それは全体があっての部分、細分化なので小さく始めようにも全体が把握できていてなくては作ることができないだろうと思うからです。できたとしてもそのときの経験不足からくる使えない仕様を思い込みでつくってしまい何度も作り直しが発生すると思う。自分でも未だに作り直したほうがいいかなと思うときがある。テスト駆動開発をしているといってもほとんどの人は頭の中ではこう作ろうという全体的なイメージを思い描きつつ(アーキテクチャとかフレームワークっていうの?)作っている人がほとんどじゃないかと思う。じゃあ、ヒヨッコプログラマーはテスト駆動が当たり前になってきた時代にどうするべきか。
5人以下ぐらいの小さなプロジェクトならとにかくベテランプログラマが頭に持っている全体像をなんとか把握できるよう質問しつつ自分ならどう作ったらいいかを考え続けることです。そして、今はほとんど誰も薦めてくれないであろうUMLとかそういう設計に関する勉強をするといいと思います。たいていの人はこれを読んで設計に時間がかかることにイライラしつつも取り組んだし、その経験を経ることで頭の中で全体を描くという次のステップへの道すすめることができたんじゃないかと思う。ベテランプログラマだって最初からすらすらテスト駆動開発ができた訳じゃなくてどう作ったらいいんだろうかと、設計にすごく時間をかけていたときがあったと思う。
大規模になると全体を把握するのはとてもじゃないけど難しいだろうと思うので、…とここまでかいて自分が大規模開発の経験がないことに今気がつきました。だれか続きを書いてくれたら大規模開発に放り込まれた新人プログラマは喜ぶと思います。誰かかいて。
これを書いていて今になってかえって自分こそ、もう一度様々な設計に関する知識を深めた方がいいだろうなと感じた。