Saturday, January 31, 2009

SaaS Customer specific modifications - Lessons learned

After various years of maintaining SaaS applications, I've learned various things, one is that you sometimes have to add feature(s) just for one customer. Some will say that you should avoid those at all costs as it breaks the economy of scale but small SaaS ISVs sometimes do not have a choice if they want to stay in business.
37 signals explained that you should be careful to not let your customers drive, they mention that many people have been asking for Gantt charts in Basecamp and that the answer has and will always be no because it's not aligned with their view of how project management should be handled and how their software should be used. I could not agree more...

Now, if you do have to add a small feature for one customer, you might be tempted to add that feature in a "quick and dirty" way. Maybe hard code it based on the tenantID or add the setting to the database but do not create a UI for managing it, to try to save on development costs. I'm sure you'll have pressure coming from the sales person that want that feature right away and at the same time a tight budget.
So when that happen and you start to think about hard coding, think twice. First, because that feature will be buried into the code and the QA team will have to remember that this feature is enabled for that Tenant only, not to mention that in your QA environment you'll have to create that special Tenant to be able to test the feature. Second it's easy for a developer to break that feature without noticing and if you're not so lucky, your Unit Tests and QA team could let the problem slip up to the customer.
Adding the setting to the database and managing it just like any other feature but without a UI can be seen as valid and less problematic but still your QA team will complain and might end up forgetting about that feature (intentionally?)
After some time, I've seen how many of those custom features ended up becoming real features used by multiple customers (I'd say maybe 30%), so always take into account that maybe that feature will be enabled for multiple tenants/customers and also take into account that maybe that feature will disappear either because the customer that asked for it left or simply because he is no longer using it. I'll even recommend running a poll if possible to try to determine if that feature could be valuable for another customer either as-is or with some slight modifications.

Interestingly, the customers asking for special features are usually the same and somehow when your company granted them one, they suddenly think it's always going to be that way and tend to ask for more and more up to the point where the number of custom features you've added for them outgrow their value and you have no other choice than to let them go knock the door of a competitor.

Some customers may have developers handy and may start asking you to open up your API more and more. Be careful about that too as at some point you might end up building a platform which is usually not your area of expertise.

At the end of the day, what you need to remember is that you should add features the right way or let the customer go. The ROI is not always clear and more than once you'll end up spending on a customer that will leave anyway...

Friday, January 16, 2009

2009 RIA Technology Trends

Since we are starting a new year, many of you like me, may start thinking about what technology will empower 2009's Rich Internet Applications. Various bloggers posted charts and there are even sites dedicated to doing those stats. I am not going to put charts here along with the usual disclaimer explaining that indicators are and will remain indicators. Instead I’ll provide links and info on how to have your own opinion and discuss it here.

Let’s first go thru a list of indicators that can be used.

  • Book sales: this indicator is used by O’Reilly and you can see their stats on O'REILLY Radar.
  • Number of pages containing the word: you can easily get access to that information from Google trends or using Yahoo API and the TIOBE Index will provide a consolidated from all search engines.
  • Number of job posting: A couple of sites can give you access to that information: Indeed or SimplyHired
  • Number of Hits on specific sites: you can see what LangPop.com did to give you ideas.

Once you have indicators you can start using them with some keywords. For example you can try to compare Flex, Silverlight and Ajax. Or compare Ruby on Rails, Python Django and ASP.net MVC. The fact is that RIA applications have a client side and server side technology so you should really end up with 2 lists even though not all combinations are possible.

Whether an indicator is valuable or not is up to you but I guess that if you’re looking for a job, the job postings indicator will probably tell you on which technology to concentrate on even though it might not be the most popular.

Here are my forecast for 2009:

  • I think that for the UI XHTML/CSS/JavaScript will remains on top, followed by Flex and Silverlight (Omitting JavaFX, XUL, Curl as they are small).
  • For the backend Java and .net seems to come first, with Java going down and .net going up. Second place would be PHP and third place Python Django, Ruby on Rails, ColdFusion with Ruby and Python rising.
Feel free to post your own as undoubtedly my forecasts are biased :D

Monday, January 12, 2009

Scio Consulting Partners with Apprenda for Rapid SaaS Product Enablement

It is now official, Scio Consulting has partnered with Apprenda to offer SaaS enablement services using Apprenda’s cloud OS “SaaSGrid”. You can read more about the partnership on the company blog and you can read more about SaaSGrid here.
Among other things, that platform is built with SOA in mind and will allow us to not only build ASP.net Ajax applications but Silverlight and Flex RIA leveraging WCF services. And all that without having to worry about billing, multi-tenancy, subscription management and so on, as those are bundled with SaaSGrid.
So well, expect to see, reviews, tutorials and code samples soon…

Friday, January 9, 2009

Quartz.net Final Release

A few years ago, I had to create a scheduler to run .net jobs on a server. I went that route because using the OS scheduler had some limitations and also because no scheduler was available at that time.
I am pleased to see that Quartz.net, a port of the Java app Quartz has now reached v1.0 and can be used in production environment.

I hope to be testing that application soon, and I'll make sure to post a small review.
Congratulation to the Quartz.net team !

Monday, January 5, 2009

MVC with Silverlight - Frameworks review

For those that want to build large applications or are using TDD for all their projects, the MVC pattern is often used to make the presentation code more testable.
Almost every development platform have frameworks to assist developers when building MVC applications. With Flex, Cairngorm is the most popular I think but what about Silverlight?
If you don't like frameworks, you can just do MVC without using any but if you'd like to leverage a framework, I've found 3 frameworks:
  • Caliburn
    Pros:

    • Support Commands, Actions
    • Includes a simple Dependency Injection Container
    • Easy to use, use of XAML
    • Small documentation available
    • Extensible, you can use another DI Container if you want.
    Cons:
    • Alpha quality and not yet feature complete.
    Comments:

    I think it's a good framework, that's the one I've selected for a small ShowCase in Silverlight and so far I'm happy with it even if it's an alpha build.
  • MVC#
    Pros:

    • Support for tasks (aka use cases)
    • Same code for WinForm,Silverlight and ASP.net can be used to create 3 applications.
    Cons:

    • No direct support for XAML and declarative coding.
    • Not built for Silverlight only.
    Comments:

    Even if called MVC#, it uses the MVP (Model View Presenter) variation. The fact that it's built to support Winform, Silverlight and ASP.net make it harder to use and you need to write more code compared with the other frameworks. I think it has been built for LOB applications and not really for RIA.
  • Silverlight.FX
    Pros:

    • Part of Silverlight.FX
    • Supports declarative coding
    • Lightweight
    Cons:

    • Limited features
    • Limited documentation
    Comments:

    For those that already have a reference to silverlight.FX in their application and don't need a fancy framework it will work well. You can even extend it if you want. Needless to say that it has been created by Nikhil and just like the Silverlight.FX code in general you can learn things by reading the source code even if you don't use the framework.