I've been working on Cheddar full time for a month and a half now. This is the first time I've exclusively worked on my own products. The things I've learned in this short time are far from what I expected. Here's a few.
This brings me to my next lesson.
The feedback was super valuable. Lots of people reported little bugs that I had missed. The cycle became clear. Release, fix all the bugs, repeat. All of this feedback and watching the number of users double each time is super motivating.
If you're running a business, charge for something.
From day one of Cheddar being out, there was something the user could pay for. A few did. I think over the long term, the freemium model will be the way to go. I could've taken the lazy route, but this is important.
Charging sets the expectation between you and your users. They expect excellence if it costs money. This holds you accountable to not ship crap. I like it.
I've designed all of Cheddar (except the logo and iOS icon). At first it was hard. I was frustrated because I can program something way faster than I can design it. After awhile, the process became more enjoyable and the time it took seemed less relevant. Enjoy the process.
Cheddar has only been out (in limited release) for 2 days, so I'm sure there's much more to learn. This has been the must fulfilling project I have ever worked on. I can't wait to see where it takes me.
In this year's RailsConf keynote, DHH talked about progress. In short, things are always changing—usually for the better. Progress is good. Embrace it.
I know a lot of people (especially in the Objective-C world) that fear progress. We have all of these great tools like Automatic Reference Counting, Core Data, and UIKit to make writing iOS applications easy. Apple has spent some considerable engineering time solving problems that we all have to solve. Quit wasting your time and embrace it.
People give lots of excuses for not using these fantastic technologies. Most of them boil down to resisting learning how to use them. Progress means learning. Learning is good. For these three in particular, the learning required to leverage all of the solutions to problems you're spending time solving is absolutely worth it. Spend your time building something useful instead of reinventing a solution to a solved problem.