I am sure everyone has heard the expression “jack of all trades, master of none” before, but it usually applies to individuals. Today I would like to apply it to web applications and products to see which is the best direction to take.
Over the past couple of years the independent developer has made a huge comeback due to the power of the Internet. From del.ic.ious to Flickr to Blinksale we have seen what happens when you have one (or a couple of developers) focus their efforts on working on an application that does one thing really well. These type of applications build excitement and are the ones that you always seem to hear about, so is this the way to go?
It’s definitely easier to create one product that does one thing well, but very rarely does that application ever stay as master of one. Users ask for new features that begin to expand the reach of the application and within a couple of years you are no longer left with something that does one thing really well, but a product/service that does many things.
So this leads me to believe that it is best to plan for your application to expand over time. Don’t just think you will stick to it doing one thing really well. Of course not everyone follows that path. Some companies will decide to just release a new product that offers some of the funcationality that the old product could have integrated. Case in point, 37signals.
Back when they were a design company 37signals excelled at doing one thing really well and that was simplicity. Now that they are a service company they have created a popular application (basecamp) along with a couple other mini-apps. However, the mini-apps aren’t that much different than what could be done with Basecamp.
Is this a case of simply doing more than one should or does it make sense to spread the ideas out like this? Even though Blinksale is out now what is to stop 37signals from integrating invoicing into Basecamp? Do you add more features to an app or do you just create more apps? This is a problem I think 37signals is facing now.
As a freelancer do you just become the best designer out there or do you become the everyman who can code and design? If you are a developer do you master PHP and ignore Java or go for both? I know there is no definite answer to these questions, but who do you think ends up being the most successful?