Follow us on Twitter for updates.
Custom programming is how you create software designed specifically for your business. Most of the time we run applications that are general-purpose, perhaps a word processor, a spreadsheet, a web browser, a design tool like AutoCAD, a diagramming tool like Visio, or an image processing tool like Photoshop. These applications are amazing and the outcome of many years of work by large teams. It would be a crazy waste of money to do custom programming for features that already exist in these great applications.
That said, every business is different. There are some things about your business that are unique and which you understand better than anybody else. What if you had software that is tailor-made for your business and processes?
This is where custom programming comes in. The goal might be to automate processes that would otherwise be done manually, speeding productivity and reducing the number of errors. Or to do tasks with software that would otherwise be impossible or unrealistic. Or it could help you to visualize your data with charts and graphs.
Custom programming can be a huge win. It can also be a disaster, in the worst case costing lots of money while delivering little of value. Here are a few factors to consider.
The more code you write, the more it costs, and the greater the risk of errors. If you can achieve what you want with just a small amount of code, then, it seems like a win. And yes, there are many ways to minimise the code you have to write. One of the most obvious is to automate an existing application.
I have to transcribe interviews sometimes and I wrote some code to speed the task. It is a word processor where you can load a recording and play it back with pause, skip forward and skip back via keyboard shortcuts, so I can keep typing. Although it is highly functional, the amount of code is small. The reason is that it is all done as a Microsoft Word add-in. Word provides the word processor. I use a Windows library to play back the audio. So all my code has to do is to map keyboard shortcuts to wrapper functions for playing an audio file.
This kind of coding, automating existing applications, can be a big productivity win for relatively small effort.
There are a few snags though. One is that you need to license and install Word - no big deal, you probably do anyway, but can be an issue with this kind of solution in general. Another is that it is a sledgehammer to crack a nut: Word has all sorts of features of which my application only uses a small fraction. The general term for this is "bloat". Third, the capabilities of the solution are constrained by the fact that it runs in Word. Actually it is remarkable what you can do with the likes of Word or Excel; but if you find yourself writing large amounts of code in order to do things that Word cannot do then the solution is no longer a good fit for the problem.
When you write small amounts of code to automate one or more other applications, you can think of the code as like glue which assembles existing pieces rather than programming all the functionality from scratch.
In reality almost all coding is to some extent glue. What we think of as a complete application still uses many existing services provided by the operating system or other libraries. It is a continuum with a standalone application at one end (lots of code) and a macro running in Microsoft Office at the other.
In many business sectors, there are pre-built applications which are designed for that particular niche. I can think of software designed for the construction industry, for example, and another application for estate agents, and software designed for dentists. If one of these applications fits your needs, should you buy it, or build your own? There is no simple answer, though in general, it usually pays to use the existing solution if it genuinely does what you need. Such applications can be expensive though, and the quality is often not what you are used to from desktop applications used by millions. If you only need a subset of the features it can make sense to build your own and add features as you need them.
The world is changing and while there are still plenty of people who go into an office and sit down behind a PC all day, there are also many others who work from home, use laptops, or visit clients using their mobile phone or perhaps a tablet to help with their work.
If your business already uses cloud computing for some or all of its IT provision, your custom application will be getting and storing its data in the cloud rather than on the PC or device, except perhaps temporarily when it is not connected to the internet.
These factors mean that web and mobile applications are increasingly important. You can also have applications that work with multiple clients: desktop, web and mobile. In these cases, you have some code that runs in the cloud, and some that runs in the web browser or client application. Plenty of tools exist to make this kind of design relatively easy to implement. A modular approach is essential, and will make your code more portable to different environments as needs change.Coding is relatively expensive. It is a skilled task, and one that requires a person or team with more than just the ability to code. Key factors include:
How much then? In the end this translates to another question: how long will it take? It starts with a discussion about what is needed. A little bit of glue code, as mentioned above, is much cheaper than a full standalone application.
The good news is that the right custom applications have a transformative effect and pay for themselves many times over in helping a business to work both better and faster.