TDDは大事

僕はいつもmodelから実装を始めます。
modelから書くと言う事は、rspecから書き始めます。
※TDDはテスト駆動開発の事です。

うちの会社はTDDをやろうと最初は試みますが、「納期」と言う魔物が迫って来るので、
プロジェクト発端時は「実装>>>|壁|>>>テスト」になりがちでした。

落ち着いてきて、機能拡張や追加を行うフェーズとなればそこまで納期を迫られません。(多分・・・
むしろ今動いているプロジェクトが自分のデプロイで落ちてしまう事の方が大問題です。
ただ、TDDをやったからと言って完璧に動くプログラムになるかといえばそうではありません。
どちらかと言えばmodelのテストだけなのでブラックボックスなテストもしないといけませんが今回は端折ります。

さて、なぜTDDが大事かと言うと
Railsで開発をしていると、柔軟な仕様変更を求められます。(javaだろうがPHPだろうがあると思いますが)
そこで、まずmodelでプログラムの動きの部分だけでもテストを書いてしまえば、
その時点で「仕様がこれであっているか」と言う事が確認出来ます。
これがTDDでやらないと、MVCが出来た頃に仕様が違うと言われて、大きな修正をしなければいけない場合があります。
そうすると納期は縮まりませんので、必然的に残業が増え肉体的にも精神的にもダメージが蓄積され、
「とりあえず、動くソース」ができてしまい悪循環を招いてしまいます。(以前は僕もそうでした・・・)

最近は、TDDを取り入れる事により大きな戻りを最小限にし、
定時で上がる事ができています。

慣れない事をやろうとする時は、時間がものすごいかかります。
しかし、その時間は決して無駄ではありません。
残業の方が無駄な時間です。
やり続ければ自分の物に出来ますし、スキルアップになります。

何からやればとか難しいって思うと思います。
まずは、必須チェックをTDDで書いてみて、テストが通らない事を確認したら、
必須チェックのバリデーションを書いてみてはどうでしょうか?
railsならvalidates_presence_ofを追加するだけでテストは通るでしょう。
慣れてきたら、正常系からテストを書いて通れば異常系のテストを書いてみましょう。