Last year around this time I decided to pursue an idea for a simple file sharing service without any real planning. Although it shouldn’t have taken more than a few months of part-time work, I just managed to launch SharURL today (you will need this invite code to signup: p9q1h). I made a lot of mistakes along the way and the following are a few of the lessons I learned.
I must have thought it would be a waste of time defining the requirements of such a simple system. I was wrong. At least half of the time I spent developing SharURL involved adding, removing, and reworking features. Features that could have been thought out and fully defined in writing from the beginning.
No matter how simple the project appears to be, define it in detail before jumping into design and development. After all, if the project is so simple, it won’t take long to write out the requirements.
Avoid scope creep
Even if you have defined requirements, it’s a slippery slope when you start making exceptions mid project. It’s surprisingly easy to believe that the project will fail if such and such a feature isn’t incorporated. Then another feature becomes essential to success, then another. With user experience carrying so much weight these days, these feelings can be difficult to ignore.
“It’s going to annoy users if we don’t have this feature.”
It’s important to accept that the system will never be perfect. Establish requirements from the beginning and stick to them. When you get the feeling that a feature outside the scope is essential to success, write it down. Make it a “Phase 2” feature. It will help alleviate the feeling and allow you to continue focusing on the initial requirements.
Decide on a business model
Getting bought out by Google is not a business model. But it is the backward mentality I started with. The plan was simple: give everything away for free, gain a massive user base, and get bought by some conglomerate or at least get the attention of investors. If it worked for Facebook, YouTube, and MySpace it can work for me.
Around the end of 2008, I listened to a talk by David Heinemeier (Ruby on Rails / 37signals) that really opened my eyes. I realized I had gotten caught up in the hype of getting bought out instead of figuring out the value of the service and charging a price.
The free model is an especially bad plan when the service involves giving away storage space and bandwidth. It’s expensive. Who is going to front the cash in the beginning? As Heinemeier says, “It’s not rocket surgery.” If your app is great, people will pay to use it. Just charge a price.
Design is important
Usually I start a project with design. Work things out in Photoshop then jump into coding. When I started building SharURL I decided to ignore design and go right into coding. This was a mistake.
It turns out the design phase really helps flush out bad ideas, reshape poorly thought out ideas, and generate new ideas that can be shelved for later. It is especially helpful when there is no established requirements.
One project at a time
“Bah, I think I’ll write a framework too.” On a whim I decided that as I was coding SharURL, I would build a framework that would appeal to WordPress developers. It turns out writing a tidy, generic framework ready for public consumption as part of a project is very distracting to that project. Juggling two different sets of priorities splits focus, hinders progress, and likely sacrifices quality. Prioritize the sets of priorities. Focus on one set of priorities until they are complete and tackle the rest later.
During SharURL’s development, I built and released a Facebook application and made some progress redesigning thesimpsonstrivia.com (still in progress). If you’re as spastic as myself, the urge to start a new project can be difficult to control. If you build web sites as your day job, you just have to keep reminding yourself that you don’t have enough spare time for multiple projects. When you get the urge to start something new, it may help to take a deep breath or get off the computer for a bit.
Don’t be afraid of launch
Every time I thought about launching SharURL I worried. I worried that people would think its a dumb idea. I was worried no one would use it. Fear of rejection and failure is something every entrepreneur faces sooner or later. But good entrepreneurs persevere. They reassure themselves it is a great idea. It will succeed. By all means welcome constructive criticism, but ignore the naysayers.
While building SharURL, I also worried that I wouldn’t be able to afford to pay the bills as I gained a massive user base. If it is ridiculous to worry about failing, its even more ridiculous to worry about being too successful. You’re in control. You can turn off signups whenever you like. You can control the growth of the service with an invite-only system. If you’re app is great, slowing down growth is not going to result in failure.
Despite being unhappy with the design, unsatisfied with the user experience, and the fact that users can’t even update their account details yet I have launched. There’s probably three dozen other things that I would like to have done before launching, but the reality is they aren’t necessary to launch. SharURL works great for sharing files. The rest of the features are nice-to-have.
SharURL is a convenient way to share files with friends and family. You simply open your web browser to sharurl.com, click the big blue button, and select files from your computer. Then you watch as your files are uploaded, packed into a zip file, and a short, unique URL is created for you to share.
The idea was born when I asked a friend to send me their photos, to which they replied “I’ll just burn you a CD.” It seemed ridiculous they would need to burn a CD, but when I looked into it there weren’t great alternatives. There were file sharing services that allowed you to upload a single file at a time and others that involved installing software, but nothing as convenient as what I had in mind. So, with plenty of room in the file sharing market, I dove in and here we are a year later.
Be sure to subscribe to the SharURL blog or follow @sharurl on Twitter for feature announcements, etc. I won’t be cross posting here.