For the past four months I've been working on building a new product. Starting with ideation on possible product ideas all the way to actually building something useful and acquiring customers. What they say is true, this is very hard. My goal with this writing is to reflect on a few key things I've learned and explain them in an easily understandable way. This will help me organize and think through my ideas. Let's get started. Work Extremely Closely with Users It is important to work extremely closely with your users. It's really hard to get someone to use a piece of software that you build, and when you do anything they love or hate about your software is a little piece of gold. Dig into what they love and shy away from what they hate. What users actually do in your software can be very different from what you think they'll do or even what they say they would do. Therefore, what they actually do is extremely important. What they do may not make intuitive sense or even be the most efficient way to do something. But they're doing it for a reason and you'd be a fool to ignore it and think you know better. In some cases you may know better and you'll have a more efficient way of doing something. But that doesn't mean they'll just go ahead and do it. You'll have to earn their trust, and eventually they'll let you automate tasks that they'd previously wanted full control over. This will improve their process, your software will add even more value, and users will love your product even more. Win win. User Feedback is Crack Cocaine It can be very depressing and discouraging building a piece of software that you can't convince anyone to use. When you finally do convince someone to use it, and they begin to point out issues and suggest features it is like crack cocaine. It's the best feeling in the world. This means that someone actually finds at least some piece of your software useful. They are using it for something and they want more. There is no better feeling than someone pointing out issues in your software after grinding incredibly hard just to get any usage (they care!). You Will Have to Make Some Guesses With the above points in mind, there is a point before any usage when you have to make guesses as to what might be useful. So you should do that. You have to do that. But as I mentioned earlier, what users end up doing and finding useful may not be what you expect, and it may not make any sense to you. You'll think to yourself, "but they could do it this way, and it would be so much more efficient!". Well, then build that out and test it but don't lose sight of what is working and double down on things that are working. There's likely something that you don't understand about the user's psyche or some dynamic you don't understand yet. Try to work towards understanding those things through scientific experimentation. Use the scientific method. Hypothesize, test in a controlled environment, then try to draw conclusions. It's more important to build out a piece of software that users use, than to build out something that you think is beautiful and efficient. But Users Don't Know What They Want The above thoughts don't conflict with the classic adage that users don't actually know what they want. It's pretty generally accepted these days that you shouldn't build exactly what users ask you to because they don't actually know what they want or what is best for them. This is true, and that's why it's so important to pay attention to what users actually *do* in your software (what I try to emphasize in the Work Extremely Closely with Users section). Building something no one else has built before is extremely hard. Identifying a problem space alone is very difficult, then building something that solves that problem for users is extremely hard, but not impossible. If you pay attention to what your users are doing (the *facts*), and acknowledge what your assumptions, hypothesis, and biases are, you may be able to build something people actually use. Thanks for reading, Zach Disclaimer: These are my thoughts today, they might change tomorrow.