I believe that every software project has to comply with a law best shown in the chart below.
If you get something done right away, it will be very far from perfect. On the other hand, the perfect software never gets done.
Every software project that I have ever worked on had to make this compromise and anyone who has ever been a part of a software team has been involved in the conflict between those who want it to be perfect and those who want it to be done.
I recently read “Lean In”, by Sheryl Sandberg, the Chief Operating Officer at Facebook, and while some of the points in her book were pretty far from my own experience, when I came to the chapter where she discussed having signs at Facebook that read,
“Done is better than perfect.”
I felt like she had been spying on me in the office.
On some days, for example, with Spirit Lake, I think we hit the right spot, where we tested it in the schools far from perfect, but still done enough that we received really valuable feedback on what we needed to do to make it better. We still have a lot more improvements we want to make. In fact, in the past three months, we have made over 150 changes to Fish Lake and Spirit Lake.
With Fish Lake, I think we released our beta version too soon and it would have been better if we worked on it longer. The problem we have is being dictated by both grant funding and the school year. If we were making games for businesses and we didn’t have the release done the way we wanted in March, we could slip the schedule to May. Working with schools, that would mean changing the date to September.
Here is the truth – no matter what language I write it in or what the application, there is never a time I don’t think,
“I could do this better if I only had more time.”
The other hard truth is that you have to pick a point on that line, face up to all of your flaws and imperfections, and in the words of Seth Godin, “just ship.”
Otherwise, you end up with a perfect game that no one ever plays because it never gets done.