I’ve been working with a startup since September and it’s been a great learning experience in how to start a company from nothing. I was actually the first full time employee of YouService, and was brought in to beef up their server side experience. I came in with a fair amount of experience working with high volume J2EE, having spent several years as the lead engineer on webshots.com and was tasked with designing a system that would scale to millions of users.
Working with a startup is very different than working with an established company. The skies the limit on what you can do and often you need to focus on what’s important if you’re going to get anything done. I’ve tried to balance out some ideas on where we should be spending time.
While I believe it’s always a good idea to keep the future in mind and be prepared for success when you’re building systems, you can also take this way too far. You can paralyze yourself worrying about being able to handle millions of users when first you have to handle hundreds. In order to handle hundreds of users you have to work properly and as expected. For a startup keeping this balance is key. Get the first customers in the door, paying, and happy before you put too much time worrying about the millionth customer.
Inorder to get the first happy customers, you have to be able to deliver a product that people will pay for. For this to happen the product has to work as expected and be reliable and stable. So for a startup these are the key points. The system needs to be bullet proof more than anything else. If your first few customers find issues, they’ll leave and there won’t be any more following.
So this is where the balance comes in. How to design bullet proof systems without painting yourself into a corner when it comes time to expand. It’s also much easier to calculater ROI of expanding if you have actual paying customers to set up that equation instead of estimates pulled out of nowhere.