After talking with a potential customer for my mobile coupon app idea, I began to come up with new ways to implement the software. I did some research on APIs that I could plug into. Then I got excited and started coding. Then I realized that I didn’t need those APIs at all and could just code things entirely myself, which actually made me happier because I generally prefer to build things from scratch…especially the parts that are core to application. Given the elimination of the dependency on an external system, I redesigned the application to be simpler.
Simple is good because implementing simple software is easier and faster than implementing complex software. I didn’t want to completely start from scratch. So I reused a bit of the code I had already written, but as I was doing that I realized that I had better figure out exactly how I’m going to charge money for this thing because it was going to influence what pieces were necessary in the design. I called my younger brother to discuss some ideas. In that discussion, I realized that I was making the mistake that I’ve heard about so many times. I was still trying to make the product into what I saw as the final version. That was going to take too long to meet my self-imposed deadline.
So I took a hard look at the program and took the perspective of my envisioned first customer. What would they need to use the software? What is my truly minimum viable product? Well, that feature list was much smaller and simpler. Would it be a beautiful and scalable system capable of handling all sorts of things that I haven’t even thought of yet? No. But it would work. It also has the benefit of being relatively easy to implement.
It’s time to get started…again. As my younger brother says, “It’s always easier to make something the third time.”