I continued work on signing in today. After thinking about it for a while, I’ve decided that I was trying to be too fancy by separating phones into their own table. Programmers are famous for their ability to make things more complicated than they need to be and I’m no exception. I have to constantly be look out for my own tendency to overcomplicate things, even when it’s in the name of making things simpler or better in some other way.
My mind is constantly trying to look ahead to what I may need down the road instead of focusing on what I need right now. I’m not a rigid TDD disciple, but this is one of the benefits that I believe can be gained from doing tests first. If I can write a small test that is broken right now, based on what actually needs to happen next, and only do the simplest thing possible to fix that, then repeat, then TDD can be really helpful.
The trick is keeping that test small enough. It’s so easy to start writing multiple tests and get off into things that don’t actually need to happen right now. For me, that tends to take the shape of thinking a lot about the database and how to structure the tables behind the application. The perfectionist part of me wants to get it just right and always have things clean and tidy. But the reality is that this process is messy and needs to move fast if I’m going to ship before I lose momentum.
Hoping to wrap this up and get back on track tomorrow.
You can come back and fix things later. You’re not creating a sculpture or building a bridge. This is software and you need to embrace the flexibility instead of letting it paralyze you.