But, we turned the corner after a few years of hard work. We're now 25 people (we're hiring!), raised $7.3 million, and just had our best month ever.

I often fantasize about going back in time and giving myself advice based on what I've learned over the last 5 years.

I probably wouldn't have listened but here's what I would have told myself:

Teach yourself to code. After a disastrous experience outsourcing, you'll eventually make this decision. I just want you to make that decision today. Of all the things that will happen, this is the single biggest step function change you'll experience. Also, I know your outsourcers used Perl but please do not teach yourself Perl. Teach yourself Python/Django or Ruby on Rails.

Stop holing yourself up in your apartment. You think that an hour spent working is more productive than grabbing coffee with another founder. The problem is that you don't yet know what to do in that hour. Talking to other founders, you'll get some valuable advice that will help you save weeks of time. Plus, those founders will eventually introduce you to new hires and investors.

Don't be afraid to talk to potential investors. You keep avoiding it because you know you're not yet ready to raise funding. While you're right, you should still meet with them to get advice. Investors want to have a relationship with you and not just shotgun fund you. When you finally do raise a round of funding, it will have been with investors who had already gotten to know you.

Stop worrying about PR. You spend too much time thinking about it. Your startup won't take off because you got great PR. It will take off because you built a great product. PR is a good way of getting some early test users. It's not how your company will take off.

You're not supposed to know what you're doing. You keep trying to rely only on your instincts. The truth is, your instincts are terrible. You don't know what your'e doing and it's okay. You'll realize this at some point and go out and get advice. You'll eventually stumble into the Lean Startup movement. I just want you to do this sooner.

Celebrate the small victories. That feeling that you're not quite where you want to be won't go away. The way you feel now hoping to get your first 1,000 users, you'll feel the same way when you've raised $7.3 million and have 25 people working on the team. You'll never be satisfied with your progress so take time to celebrate the milestones.

Don't worry about all the problems you don't have yet. Focus on the one big problem in front of you. There's a good chance the other problems you're worried about either will get solved on their own or won't be as a big deal as you think.

Build your prototype in weeks, not months. You're going to get lots of ideas. Don't spend months trying to build a prototype. Build something simple to test out the core assumptions of your idea. In a few years, your prototypes will be built in days.

Your first few prototypes are going to fail. You're going to work really hard on your first few prototypes only to find out that they don't work. That's okay because you'll learn so much that it will make you more likely to succeed with your next prototype. But, what's not okay, is spending months and months building those prototypes.

Lastly, I have an idea for you. When the iphone comes out, build a photo sharing app where you help your users make their photos look better by adding filters. Call it "Instagram". Trust me.

While I have yet to figure out how to go back in time, I hope others who are just starting out can benefit from the advice above.