Last week I wrote some notes on what you need to think about before you start designing and developing a business software package (see Developing a Software Package). I suggested you shouldn’t even consider it if you’re of a timid or risk averse disposition. You’ll need more courage, more determination, more time and money than you ever imagined. You’ll need a thick skin, impervious to the disappointment and impatience of customers, colleagues and managers. It’s all much harder than you think.
I asked three questions:
- Who are your customers?
- Who are your competitors?
- How are you going to make it simple enough but flexible enough to fit a broad range of customer needs?
Here are a few more:
- Have you thought of the linguistic, national and currency issues?
If you’re ambitious and you see yourself selling to an international market, then think of what this means before you’ve written much code. The cost of trying to get this right at any later stage is terminal. So if you aim to provide multi-language capability, make sure your technology supports UNICODE (double-byte representation) at the database and software level. Find a Japanese friend to prove this aspect really works. Make sure you can handle transactions in more than one currency. In fact, think in terms of representing every transaction in your system in at least four currencies simultaneously (transaction currency, local currency, reporting currency, customer/supplier currency). And don’t forget to build sufficient flexibility to cover all the idiosyncratic national tax reporting issues you can think of.
- Have you thought about technology?
In this area, don’t try to be too clever. Make sure you choose uncontroversial but up-to-date technology. Be cloud ready and design the software so that it can run in multi-tenant mode (one copy of the software serving multiple clients safely and securely). You can’t go far wrong MS-SQL, IIS, Internet Explorer/Chrome/Firefox/Safari and Windows. Don’t, whatever you do, let your programmers seduce you into using something ‘better’. Don’t be on the leading edge, hitching your wagon to some promising technology that might fail to win market share. Your customers don’t want to be pioneers. Be just that little bit behind.
- How important is technical perfection?
It’s a cliché, but in software development, as elsewhere, ‘perfection is the enemy of the good’. If you aim to do things perfectly it’s going to take far too long, and you’ll always fail. So be aware of that when you’re starting. Set yourself guidelines. Have the good sense to know when something’s good enough.
- Have you thought about how you’ll manage the technical aspects of licensing?
If your package is modular, and you’ve priced it accordingly, then you’ll need a mechanism for restricting access to components of the system, even if your installation program installs the entire software suite and database. And you’ll need a way of limiting a license period, so that you’ve got some way of making your customer pay you.
- Have you thought about the techniques you’ll use for installation and upgrade?
Installation has to be fool proof. Don’t depend on your software falling into the hands of IT specialists. It has to be consumer proof too. Don’t depend on the user having to download additional components from Microsoft or other vendors to make it work. They won’t read the manuals, they won’t understand the error messages and they won’t do it.
Version control is also essential. So is easy upgrade. You’ve got to provide new functionality and bug fixes with easy installation and guaranteed forward compatibility.
Some final thoughts next week….