Over the years as a programmer, I’ve wondered what will happen to the custom software market considering the proliferation and specialization of ‘off the shelf’ software.
The first experience a user has with a computer is with ‘retail’ or ‘off the shelf’ software. These are applications that are written and mas distributed. The consumer has to determine if they like the feature set and making changes is limited to the options provided by the manufacturer. This is similar to other consumer products, but the limitations are more strictly imposed due to the complex nature of software.
Retail software is designed to complete specific tasks, and modifications to those tasks must be anticipated at the time of creation as changing published software is usually not a possibility. When software like QuickBooks is developed, the developers have to choose the minimal set of functionality that appeals to its market. They are looking for critical functionality requested by a certain percentage of their customer base. What this implies is if your need is not common – such that 1/3 of the customer base would demand that functionality – don’t expect it in the application.
When we arrive at the point that ‘the program MUST be able to do that’, we need the source code to make the changes. This can be accomplished by decompiling and hiring a ‘rocket scientist’ to rewrite the mess that was produced. But this is often illegal because of the license associated with the software.
Source Code License
Some vendors do provide the option of purchasing access to the source code, but this is usually in higher end business applications or open sourced software. Open source software is distributed under a very permissive license, and the source code is made available by the distributor.
Software Developer Kits
The second option is to find an “add-on” program. This has very specific requirements that the original software was designed with an import and export data abilities. If an application does not allow import / export of the data, it’s not a good foundation for any business system. Most business applications should provide this functionality, and some vendor even go to the extent of providing a “software developers kit” (SDK). This allow other program ti interact directly with the program in question. Limitations are implied by that the program will allow you to import and export, or what the “software developer kit” allows.
Database integration is where the custom developed software interacts with the retail software on the database level. This is possible, but circumvents any business logic or rules implemented in the retail software. For example, if the retail software requires that all invoices total and totals on save, the “database integrated” software must do this otherwise risks creating problems in the retail software.
The primary methods for integration is through the software development kit put out by the publisher, or to modify the source code from – unfortunately the source code is a luxury not afforded to most. The database is often frowned upon and some enterprise accounting systems (enterprise resource planning – ERP) even go to the extent of obfuscating the database as a deterrent.
Database integration does off some great benefits – you can use and modify the data without limits (assuming the retail software can handle the data your produce). This requires a substantial understanding of the program in question and the information structure expected by the program. Learning and understanding can be gained by controlled modification using the system and database to see how the data changes. This allows the reverse engineer to understand the meaning to some enumeration values, and where user interface fields are used in the database.
User Interface Integration
With Windows operating systems it’s possible to read the user interface screens with another program. We can even type in the screen and click on buttons and fields. This allows the developer the options to integrate with the application in the same way that a user interact with the retail software. This can prove useful in some instances, but it can easily go awry. If the user try to click or do something, the integration can easily be miss-lead to start interacting with a program it was never intended to. This should be done carefully where before each input the custom software checks, and possibly activates, the required screens before it makes changes.
The most useful instances of this integration are to open screens from the custom software allowing the user to make the changes needed.
Because business will often say “I need this program to do …” we start moving into custom developed software.
Before considering the cost of the custom software, we need to know the cost of going without it. For example, if we have a department employees doing the same manual task over and over, the cost would be calculated by the time to complete the task multiplied by the number of times the task is done per month multiplied by the average hourly rate. For example: if the company must supply a certificate of conformity to customers which take 5 minutes to produce; there are 10 employees doing about 20 of them a day; the average pay per employee of $12.00 per hour; then the cost to produce a certificate of conformity is about $1.00 each. At 200 certificates a day, we arrive at $200 per day. Considering a 2 weeks of holidays, and 2 weeks’ time off, we have a 240 day work year. The total cost over a year is about $48,000 per year. If the 5 minutes can be reduced to 20 second, the business can achieve a $43,200 savings.
If the same data used on the certificate of compliance has been entered elsewhere, in an inventory item record for say, then the company can easily create a program that does this. What’s the cost of the program? If the cost is less than $43,200, the business still comes out ahead within the first year. Considering the lifespan of custom developed software is often 10 to 20 years, the business can easily expect a total saving of $400,000. Software development is expensive, but the cost of not automating a process is even more so.
The cost to develop custom software is dictated by the functions the custom software is to complete, and how complex each of those functions are. Before the cost of development can even be guessed, we must first define and design the custom software – much like other engineering industries.
The advantages of custom software extends far beyond that of simply cost savings – reduced staff training, human savings, customer satisfaction, greater adherence to policies, automation of procedures, greater business intelligence and insight, reduced error rates and increased accuracy, and accommodating business evolution are all some benefits of custom systems.
Humnan saving is not solely measured by the cost of wages, but also by satisfaction on behalf of an employee. The business processes that are highly scripted by procedures, and require very little objective decision making, are exactly the type of functionality that lends it’s self to custom software. These procedures are often not enjoyable as it give the employee no leeway. Automating processes should consider the satisfaction of employees.