Which is more difficult?

Somewhat of a continuation of this thought, but really which is more difficult: building scalable well designed software or writing simple, easy to use software?

My answer: Building software that is simple and easy to use it much more difficult than building scalable well designed software.

Building scalable well designed software really isn't that hard any more. A lot of the important things that you had to do or know (like C++) really isn't a factor any more. The base technology has improved so much that even poorly written code on top of a great platform (like .NET) can perform exceptionally well or can iteratively be addressed as problems show up. Furthermore, at least as it related to public web applications, the number of exceptionally high traffic sites (>250mm impressions/mo) is relatively small.

It seems there are 2 ways software gets written and marketed: inside-out development which places the emphasis on the technology, for example describing itself as follows, "…Implements Microsoft Enterprise Library…", "…uses AJAX everywhere…", and "…abstract data access APIs…". This is contrasted against outside-in development which places emphasis on the problems the software solves, using descriptions such as. "…simple to use, get started in less than 5 minutes…", "…intuitive screens with simple step-by-step wizards…", and "…works with your existing data…".

Building simple and easy to use software is hard because is forces you to make choices. Instead of adding features and making that the selling point (quantity of what the software can do) you instead focus on writing features that solve the problem in the simplest possible way. It sounds like it should be simple, but it's really not.

We've applied this line of thinking to our newest product that we're rolling out on November 7th, blogmailr.com, as well as several other new products we'll roll out in 2007.