I’ve been thinking a lot about how I want to proceed with Crescendo. I have had some misgivings lately about how it turned out so far:
- Firstly, the installation is too cumbersome if not all prerequisites are already installed. It is quite confusing to have to install all kinds of stuff you don’t know what the hell it means when you thought you were installing a little file-sharing application. Or worse, if you click the ClickOnce link and nothing happens.
- Secondly, there is no clear focus on the audience of the application. Is it grandma that wants to share photos of her grandchildren? Or is it the seasoned torrent-sharer that want to supply richer descriptions for the files he/she shares? Is it a social application or are users basically anonymous to each other?
To solve the technical problems with deployment, there are several options. I could keep a native client, but provide a traditional installer. Or I could switch to Silverlight or even an AJAX web application. I debated all these options in my mind, but ultimately I decided that I should not switch to another technology I don’t have much experience with. Of course it would be fun to try something new and I’m all for that, but right now I should be focused on getting a viable product as quickly as possible and that means sticking to the things you know. I don’t intend to change much about the ClickOnce deployment, but I will reduce all prerequisites to just the dependence on .NET 4.0. I should also change the web page to be more helpful. I toyed with the thought of making a ‘Crescendo-lite’: a simple web-app that you could use to quickly submit data to a file host and then send the link to others by email. Then I saw the website of WizDrop, it is more or less the same idea, but perfectly executed.
The second misgiving is about my audience, which was not clearly defined. I more or less assumed I could force a better way of sharing files (by adding meta data) on the world by just building a great GUI. That was kind of naive. Building a GUI is hard, much harder than I anticipated. Of course, a great GUI gives so little friction that it makes all interactions seem simple and obvious, which ironically makes you think it shouldn’t be hard to make. The other reason it was naive is because there are not thousands of people patiently waiting until they can finally use my application. You need to have a clearly-defined group of people you want to reach and you have to build your product around that vision. If you design for everyone then you reach no one.
The concept of entering meta-data when you share something is useful only if you are serious about file-sharing. If you just want to let some other people show your home-made movie, you don’t care about title, director or other characteristics. You just put it on YouTube or whatever and share the link. So Crescendo is not for casual file-sharers and as such it also doesn’t make sense yet to build social capabilities (like the ‘groups’ that are in the application currently). It is however absolutely critical to build search into Crescendo.
Of course, in my previous post I said I couldn’t do two things at once and if I continued learning I wouldn’t be able to develop Crescendo anymore. I can not really decide that I will drop doing either one, so I will try to find time elsewhere. For example, by wasting less time watching epsiodes of Criminal Minds and Psych.