Not all about the “value add” in dollars. there is convenience, retaining good staff in interesting work, sense of ownership etc
– off the shelf software that is “good” and lasts a long time is software that is a platform. like dbase. getting the “right size” of platform is key. Sql server is great as it has everyting you need, but probably has too much.. excel is an unbelievably good platform that goes all the way from day 1 to running a whole business with macros and interop and so on. again, a stable problem with a good “edge”.
so when does it make sense to write
– when there is nothing that does what you want
– specialised thing that no one else has ever thought of (be careful)
– supports a “new way of doing business” that is important to you but no one else. could be a new legal perspective or something
– low concerns on security, scalability, transparency, logging, etc etc
– what you want is tiny
– glue code between 2 systems, e.g., draws data from accounting system, produces XML that can be imported into your CRM system for new accounts
– built on an existing platform (e.g., macro in Excel, access form)
– building a better mousetrap
– you better be in category 1 for this as well.
– are you going to be better, really?
– the problem is a stable problem, preferably depending on “abstract” ideas, not concrete cases. This is why writing software that covers operational aspects of a business is so hard. Covering “store the names and addresses of our clients” seems like it will be easy; and it will be, to start with. As soon as you have people who live in 20 countries all of them with different conventions for addresses; then you want some people who have 2 email addresses, some who have none; then you have people who want to share an address, but only want to tell you once when they move house and you should remember to update all the addresses. Then someone will suggest something like having every change to the address logged in an auditing database. This is the kind of progression that means that a “simple” CRM system takes 20+ person-years to write and it still sucks. Of course, I’m am not saying that Salesforce.com or Siebel don’t suck, they probably do as Software Sucks; however, writing this kind of thing yourself is hard because the journey is always uphill. There is never a point when magic stuff starts emerging from the data; if you want to add auditing to all 200 tables in your database then you have to add it “manually” and add the username/userId onto every table and every interface on every service.