Bespoke software: more affordable than you think

Most people are unaware how far the cost of software has dropped in recent years. There still seems to be a perception from the days of mainframes when it would cost a few thousand pounds to generate a new report. We all know how much cheaper it is to create a spreadsheet but the cost of programming has almost dropped as much.

Also, a bespoke application will provide a much better solution and be more efficient. So after a few months a bespoke solution can actually cost less than a spreadsheet.

Why use bespoke software

To be successful, an organisation needs a competitive advantage. It needs to do something differently and better. This will be constrained by off the shelf software. There are many opportunities from creative use of processes and customer interfacing. Organisations do not become great by following everybody else.

Spreadsheets will normally be the best way to provide a one-off solution but they are not convenient. For any application that has to be run regularly they are inefficient. The staff costs in using a spreadsheet will be higher that with tailored apps. In the long term, a bespoke solution will almost always be better value.

Also, while your staff are developing spreadsheets, they aren’t doing their main job.

Why has the cost dropped so much?

There are a number of reasons, including:

  • Modern programming languages like PHP are much more efficient than older languages like Cobol and Basic
  • SQL databases enable data tables to be created and modified in minutes rather than days.
  • Manipulation of data typically only takes a few lines of SQL
  • PCs and development tools
  • Better techniques, object orientation haa slashed debugging times.
  • Programmers’ wages have not kept pace with inflation.

There’s a chilling perspective here. In the 1970s I had to add some fields to a database and change the length of the main key field. It took a team of programmers six months. A similar exercise last year took about 3 hours.

See more tips on deploying software at www.mcmillantech.co.uk/Blog.html and
www.mcmillantech.co.uk/ComputerPrograms.html.

Controlling software costs

Software projects are seriously prone to run over budget. There are a number of reasons why this happens. Some common ones are:

  • lack of clear requirements
  • late changes
  • focus on the desirable rather than the essential
  • uncontrolled implementation

Be clear what you want

When planning a software project, you should know what you want it to do. You should make a list of everything you want the new application to do. You may be clear about this, more often you will talk to the users and find out what they need and would like. As you do this, create two lists of functions and features. One will list every thing the app needs to do, the other will list what people would like it to do.

These lists will form the basis of tender. The more thought you give to the requirements, the easier it will be to control the project. Suppliers will be clear as to what they must provide. If you skimp on this, after the software is ordered, more requirements will emerge. This leads to unplanned extra costs and often wasted work and disputes. The wisdom in the software industry is that every day skipped in the design phase of a software project consumes a week in the later phases.

Avoid Late Changes

Late changes are expensive. They mostly happen because not enough work was done laying out the requirements. Late changes result in wasted work. Work that has been done has to be discarded, other work is duplicated.

Software projects are like construction projects in this – imagine changing the design part way through building.

Focus on the essentials

Another factor is a lack of focus on what is essential and what would be nice to have. The way to overcome this is to break the requirements into mandatory features and desirables. Then, concentrate on implementing the mandatories first. (A main reason why major government I.T. projects fail is because the government fails to do this).

If the budget runs out, discard some of the desirables. If the quotes for the work are too expensive you can also discard some desirables.

Despite what I have said about late changes, most software projects do uncover extra requirements as they progress. Don’t commit the whole budget – allow for extras. Make sure your supplier understands which features are mandatory. A good software company will expect this. Then, make sure he delivers the mandatory features first. Only provide the desirable features when all the mandatory ones are working. You can always add the desirables later.

Control the roll out

It can be difficult to test software. Applications tend to be complex and there can be thousands of routes through an application. Some combinations of data or events can be obscure and the testers will miss them. But the hardest thing to test is the human computer interaction. Computers are predictable, people aren’t. The developers and managers know what should work: other users don’t and they do unexpected things that can break the system. It’s not a bad idea to test the system on the least tech savvy person you can find.

If you have a large number of users, don’t launch new software on all of them at once. Apart from anything else, most support issues occur within a short time, so rolling out the software smooths the support. Dealing with issues from 5 users is a lot easier than from 500.

When I supply packaged apps, I usually find that only around 80% of problems are found during the in-house (alpha) testing. The first few users will find about half the rest of the problems, then successive users each find about half of what remains. Thus, each roll out can be to a larger number of users.

Who owns the software you’ve paid for?

Ownership

There can be pitfalls in ordering bespoke software. One is control of the source code of your application. This can be complex. The biggest issue is ongoing support, but there are three issues:

Definition

Some software is written in compiled languages, like C++. The programmer writes what is called source code in, say, the C language. This is then compiled into an executable (exe) file. There are other languages. For example, most web applications are written in languages like PHP and Java Script. In these cases the source code is deployed unchanged. In such cases, you should be able to access the source code from your web server. However, some web sites are generated by software like Adobe. You may find in these cases that you do not have access to the source code and the site can only be changed by the holder of the source code.

Support and maintenance

This often causes major problems. You commission some software, install it, sign it off and pay for it. You then find the software house charges high fees for any extra work on the application. Many software houses adopt this approach. Others consider it to be unethical.

The worst problems occur after disagreements. If you fall out with the supplier, and this happens far too often, you will be stuck. You may have to order new software. Even taking data from the old software can be difficult.

To overcome this, the contract should clearly state that the software company must make the source code available to you, or at least to a third party. It must also state that the source code must be handed to the client at the end of contract.

Copyright

This will only normally arise if you or the software company decides to sell your application as a package. The legal issues are complex, but, in the absence of a clear agreement, it is quite likely that the software house would own the copyright of the source code.

If there is any possibility that you would want to market the software, this should be discussed before the contract is signed. In fact, many software houses (including McMillan) would be very happy to collaborate with you in marketing a package. This needs to be made clear at the outset.

But what about the software house using parts of the code in other contracts? In reality it will be difficult to stop this, and in any case you would be unlikely to be able to profit if that did happen. It does help to check before agreeing to the order.

Escrow

Software houses do sometimes go out of business. If this happens and you don’t have access to the source code, you will be in trouble. Escrow agreements are common, and state that an up to date copy of the source code must be deposited with a third party.

Some care needs to be taken in drafting the terms of the escrow agreement. By default, the source would probably only be released following the commercial failure of the supplier. The author’s view is that it should be released at the end of contract.

Summary: useful contract clauses

Apart from normal terms and conditions, the contract should:

  • Define the copyright
  • State that at the end of a maintenance agreement, you will have full access to the source code.
  • If the supplier is not prepared to deliver the source code to you, insist that an escrow copy is deposited with a third party. Also insist that you have the right to access this at the end of a maintenance agreement.

Problems are more likely to occur with larger software houses. Smaller ones need to be more flexible and they will need you as much as you need them. So negotiation will be simpler and you won’t need anything like as much access to lawyers.

About the author

John McMillan is a software developer based on the Essex Suffolk border in England, close to Cambridge and North East London. He writes business programs to order, his applications have carried out many business functions.

Have you a need for software?

Visit McMillan’s web site
Contact McMillan to see if we can help

Are spreadsheets and office tools the best way?

Firstly, spreadsheets are a generic tool. They can provide basic reporting but do have major limitations. For example, applications built around spreadsheets are rarely easy to use.

Spreadsheets will normally be the best way to provide a one-off solution but they are not usually convenient to use. For any application that has to be run regularly they are not an efficient solution. They are also very error prone (see below).

The staff costs in using a spreadsheet do need to be balanced against the cost of bespoke software. In the long term, a bespoke solution will almost always be better value. It may cost more initially but the costs will be recovered over time.

Spreadsheets are error prone

A year or so ago, I advised a software company who are spreadsheet experts. It was interesting to say the least. Studies from academics and the European Spreadsheets Risks Interest Group (http://www.eusprig.org/) have found that most spreadsheets contain at least one error. Problems occur when rows are inserted or deleted and formulae are not adjusted properly. How do you check the results of a spreadsheet calculation? One man told me he checks by adding up the column with a calculator. You have to wonder about the point.

And …

Your staff are not IT experts. They will take longer to develop a solution than the professionals will. They often don’t know what can be achieved so won’t come up with the best solutions.

And while staff are developing apps, they are not doing the job they are paid to do.

 

The Different Types of Website

Static and interactive

The simplest websites are static. Static sites generally display the same information to all visitors. The information usually changes only occasionally. Static sites are rather like brochures – once a brochure is printed it will have a lifetime of many months.

Interactive websites change their content “on the fly” in the light of visitors’ requests. A common use is to allow visitors to see selections of items, perhaps from a catalogue, or the visitor to see personal information. Social networking and dating sites are examples of this. Interactive websites can allow high degrees of personalisation.

Websites built around content management systems (CMS) allow the website owner to make changes to the site. CMS allows sites to be kept up to date without recourse to the web developers.

Under the hood

Websites are written in a language called HTML. HTML defines how the page will look on screen and provides forms, navigation and multi media. HTML is usually used together with cascading style sheets (CSS) which control the appearance of the pages.

Scripts are basically programs which provide interaction. Scripts work both on the visitor’s computer (client side) and on the server. Client side scripts are useful for things like form validation and are mostly written in a language called Java script. Server side scripts can pull information from databases and build a page from that. Search engines are an example: the visitor types in a search term, the server script fetches records from the database and sends back details of web sites containing those terms. Catalogues are another example. The script can build a list of, say, women’s knitwear.

Server side scripts can also process information like orders. The commonest languages for server scripts are Microsoft’s ASP and the open source PHP. There are a vast number of pre-written components that can be used by designers and developers.

How websites are produced

Websites can be simply typed into text editors. This needs a detailed knowledge of the HTML language. More often, WYSIWIG generators like Adobe Dreamweaver allow designers to create the pages. These generate the HTML and CSS. WYSIWIG generators are most suitable for producing static websites but can be used to provide the basis for interactive sites.

Interactive websites are really bespoke software applications. Production of the more complex ones needs high software design and programming skills. Such websites have to be created by a team of designers and software engineers.

Website owners don’t want to have to keep returning to their supplier every time they want to make a minor change. For this reason content management systems (CMS) have been developed. A CMS allows the user to make changes easily. He can change wording, make basic changes to the layout and appearance and he can add new pages. Most smaller websites are now built around A CMS. The CMS generates the HTML and scripts, and creates the necessary databases.

There are many CMSs on the market. WordPress, Joomla and Drupal are probably the most common.

Complex sites

The advantages of CMS depend on how much processing is needed on the site. For complex sites with large databases and high degrees of personalisation, it is usually more economical to use a software developer to produce a bespoke site. The more complex the tailoring, the harder it becomes with a CMS and it quickly reaches the point where a bespoke site is better.

Bespoke websites don’t lose the benefits of CMS because the developer will provide a control panel that allows the website owner to change his content.

Designers and developers

Most smaller websites are created by designers. Designers tend to work with a CMS. Larger sites need to be built by experienced software developers who will be expert in the languages used. More importantly, they understand how to design and debug applications and are more aware of user issues. Complex sites often need to be audited and security is often an issue. Experienced software developers understand this.

Controlling what you pay for

When you commission a website, you must beware of locking yourself into the supplier. What a designer enters into a CMS or other generator is called the source. Many generated websites can only be maintained by changing the source and not all suppliers will hand over the source. If you don’t have access to the source, an unscrupulous supplier can charge high fees for future work. Worse, if you enter a dispute with your supplier or he goes out of business, you will be stuck. Demand a contractual clause that states he will hand over the source. At the very least, insist that an escrow copy of the source be kept by a third party. If the supplier won’t agree to that, don’t deal with him.

 

Using Web Technology to Provide Low Cost Business Software

Spreadsheets have transformed business. But there are limitations in what spreadsheets can provide. Once the limits of spreadsheets are reached, database solutions are needed. (See my blog What is a Database) . Most business applications, whether bespoke or off-the-shelf, are based around some form of database.

Recently, some software developers have found that web technology can be used to make bespoke database applications much more affordable and usable.

Windows has many advantages and is nearly universal on PCs but it suffers from poor database support. In fact, Windows is really designed for applications like word processors and spreadsheets. There have never really been any standards for providing Windows database apps. The solutions that exist have tended to veer between the very expensive and inelegant. The solutions are rarely easy to set up and they often place many restrictions on the layouts of forms. The lower priced ones are difficult and expensive to maintain.

However, the software to create web sites has become very standard and sophisticated. The software components work well, and many are open source with minimal or no licence charges. Some developers have realised that it is now easy to build business apps around intranets. These reside on the user’s server and are accessed through the browser.

Using intranets to provide apps provides many benefits.

No deployment costs

You only pay for the development, not licences for a database engine

Ease of deployment

Traditionally, database drivers have had to be installed on every workstation. All that is needed to use the software from a new PC is to type the app’s address into the browser.

And, of course, everybody knows how to use a browser.

Wide availability of resources (skills)

Web software, especially the PHP programming language and the MySQL database engine are popular with developers and there are large numbers of developers available. This reduces being tied to one supplier.

Future proof

Web technology is here to stay. The environment is stable and suppliers are committed to the future. Standards are not controlled by users, not companies.

Low cost

Cost of development can be significantly cheaper than traditional methods.

What is Bespoke Software?

What is Bespoke Software?

Bespoke software, often also called custom software, is software written for a specific purpose. Bespoke programs can be written by an in-house programming team, or ordered from a software house. Simple custom programs can be written by the user.

Broadly, there are three ways to achieve computer software:

  • commercially available packages (off the shelf software)

  • bespoke software

  • by configuring spreadsheets and similar tools

The word bespoke was originally a tailoring term and referred to a suit that was made to measure. Comparisons between tailoring and software are apt. The opposite of a bespoke suit is off the peg. In the same way, packaged applications are the alternative to bespoke software.

The cost of bespoke software can vary from a few hundred pounds to over a million. It is often perceived as being expensive. Perhaps this is because users are more aware of the larger systems. However Wikipedia in an article on custom software http://en.wikipedia.org/wiki/Custom_software suggests several reasons why bespoke solutions are not always more expensive than packages. Often, the costs of configuring off the shelf systems can reach those of a bespoke system.

Why use bespoke software?

There are several reasons to use bespoke programs. Typical reasons solution are:

No standard package fits the need

Competitive advantage

There are times when you need to deliver more than your competitors

You are not at the whim of the supplier’s upgrade policy

Packages are updated frequently. This can entail training. Some suppliers (Microsoft is one of the worst offenders) change standards, too. This all increases costs.

Easier to negotiate conditions

Packages tend to be supplied by larger companies with standard conditions. When you order a bespoke solution, you can tailor the conditions as well as the actual programs.

In conclusion, although a bespoke solution will usually cost more than a packaged app, the benefits will be also be greater. Ultimately, a bespoke solution will develop more profit.

Have Companies Become too Reluctant to use Bespoke Software?

I was recently chatting to Colm Coyle of RoIT about bespoke software and the way in which few companies now use bespoke software. I made the point that companies largely stopped commissioning bespoke software after the year 2000. We came to the conclusion that it is time they restarted.

The year 2000 forced many computer departments to do what they should have done years before – ditch their mainframes and install networks of PCs. Suddenly, when staff needed new reports, instead of having to incur weeks of Cobol programming, they could create a simple solution on a spread sheet. This has transformed the use of IT but has the process now gone too far? Colm and I think it has.

Competitive advantage

Firstly, spreadsheets are a generic tool. They can provide basic reporting but do have major limitations. Applications built around spreadsheets are rarely easy to use.

To be successful, an organisation needs a competitive advantage. It needs to do something differently and better. This will be constrained by off the shelf software. There are many opportunities from creative use of processes and customer interfacing. Organisations do not become great by following everybody else.

Spreadsheets will normally be the best way to provide a one-off solution but they are not convenient. They are also very error prone (see below). However, for any application that has to be run regularly they are inefficient. The staff costs in using a spreadsheet do need to be balanced against the cost of bespoke software. In the long term, a bespoke solution will almost always be better value.

Spreadsheets are error prone

A year or so ago, I advised a software company who are spreadsheet experts. It was interesting to say the least. Studies from academics and the European Spreadsheets Risks Interest Group (http://www.eusprig.org/) have found that most spreadsheets contain at least one error. Problems occur when rows are inserted or deleted and formulae are not adjusted properly. How do you check the results of a spreadsheet calculation? One man told me he checks by adding up the column with a calculator. You have to wonder about the point.

It’s become economic

One thing that emerged in the run up to the year 2000 was that software had a much longer life than was realised – we discovered that an awful lot of software had its origins in the 1970s. The world of IT has changed out of recognition since then. Development costs have plummeted but I don’t think some IT managers have understood this.

In the 1970s I had to add some fields to a database and change the length of the main key field. It took a team of programmers six months. A similar exercise last year took about 3 hours. In trying to remember why, I realise we didn’t even have databases in those days, never mind SQL. A simple extraction and sort of data required a program. Today it’s one line of SQL. Files were essentially flat, so the length and position of each field had to be specified. Incredibly, programmers rarely employed reusable code. Object orientation did not exist.

Legacy systems often had their origins in this environment which is why, even in 1999, it would cost thousands just to generate a report.

These are not the only reasons why development is cheaper. Modern programmers use integrated design environments (IDEs) which speed up the development process. Object orientated techniques have slashed debugging times. And programmers’ wages have not kept pace with inflation.

Software that does exactly what a user wants is now affordable. In fact, I’m sure it can often be provided with less effort that a spreadsheet solution.