You're an indie hacker. You love creating products and talking about it on Twitter etc. You read tweets sent out by @levelsio or @yongfook or @alexwest and feel energized thinking about building solo one-man businesses online. You decide to do it - "Let's do the 12 startups in 12 months challenge!" you say to yourself in the hopes that at least one will succeed.
You start by building a SaaS app that solves a problem for someone or yourself. You make an About page, a Pricing page, you add analytics and a live-chat plugin. You design the dashboards, and spend countless hours writing marketing copy for your brand new spanking SaaS app #1. One month has gone by, you've been working hard building your SaaS app and now it's time to launch your MVP. Yes, it took too long but you have a working product that does what it should and nothing more. That's an MVP right? Now it's time to find customers. You make a list of 10-15 people who seem like a good fit for the problem you're trying to solve. You send them a message saying "Hey, I've built this thing over the past month, can you try it out and give me some feedback?" You realize that most people hate trying out products from cold outreach and that even if they do, they don't want to give you bad news. Half don't respond, and the remaining half try it and give you mixed feedback. Then you have to go spend another 1 month building those changes into the app and go talk to 10-15 more people who then give you more feedback. All in all, you've probably made <$50 so far, and it's been more than 2 months since you started out on the 12 months 12 startups challenge. You feel lost, and de-motivated. What happened? What went wrong?
Now let's look at an alternate scenario. You start by talking to customers first. You know about a potential area where people are facing a problem. You think "An app would probably solve that." This time, you try validating the idea first. You find 10-15 people who seem like good candidates for the problem you're going to solve. You send them a message saying "Hey, I noticed you're facing this problem xyz. Would you pay me $20 if I solved it for you within a few days?" To your surprise, half of the people actually pay you. You've now got 2-3 days to deliver an actual MVP. But it's easy to do it because now your MVP's requirements and constraints are CRYSTAL CLEAR. Color pallette doesn't matter. What matters is - Did it do what you said it would do? You build something in 2-3 days and manually onboard the customer because there is no time for a signup flow. The customer is happy and pays you $20. You now have 5 customers, $100 in the bank, and an MVP all within a week. Now you go out again and write to 10-15 new people. This time you say you can solve the problem within a few hours (since you already have an MVP built). If there are changes you say it will take an extra day or two. No biggie because they're already going to pay you for it. You're happier, extremely motivated, and have that feeling of nipping on the tails of a big opportunity. It's amazing.
OK, yes I simplified a lot here. But my point is, talk to customers first. In both scenarios you build an MVP, you iterate, and you try to get customers. In the latter scenario however, there is no guessing or wondering about what to build, how to design it, what positioning to take etc. You just solve problems and get paid for it.
Don't just start coding. Instead of fetishizing the idea of building a SaaS app, think about how you can make $100 online. That's how you get product-market fit.
Most plans won't survive the first customer interaction. Therefore it is critical to talk to potential customers before building ANYTHING.