On the market you can find a lot of software that gives you the ability to
build websites even if your technical skills are not too high; you can also find
applications for the management of different kinds of business issues,
as well as for e-commerce websites creation.
In order to reach the greatest number of users all these applications obviously have to try and offer the most shared solutions: if you need something different, you have to adapt your needs to their features. Customized software, on the other side, is built starting from your needs, because it has nothing but you as recipient: it knows you, and the things you need are the reason of its very existence.
In short, with a customized software you get what you need, nothing less, nothing more.
Your needs can change over time: a new feature can become
essential, a procedure can require a correction in order to result even more efficient.
You can always modify customized software in any part. Obviously, an accurate prior analysis will be necessary in order to avoid changes on bearing walls of the code, because even if they are possible the changes are not all the same, and then they have not the same cost.
This is a classic objection that comes from programmers who prefer to use libraries
and code written by others inside their software. I don't want to criticize this choice: if you are facing
a problem you never encounterd it's certainly true that the fastest solution is to use a group of already
tested scripts that reach the aim. This implies 2 compromises:
- if the library can't do EXACTLY what you need you will have to modify it, in order to force it to your needs, and diving into code written by other is hardly ever a beautiful experience.
- If you need only one of the features of the library you will almost always be forced to load it entirely, that's a detriment to navigation speed, and however a useless burdening for the software.
But in my opinion the real matter is another one: yes, trying to reinvent warm water is always worth! As a matter of fact, if nobody had ever tried to reinvent it we would probably still get it by lighting a fire of twigs under a cauldron, outdoors. Fortunately, a lot of people tried (and still are trying) to get it by more and more efficient way, perhaps by climbing on the shoulders of those who preceded them in order to see farther. Trying to imagine a procedure that is built around the project you're creating is the only way to look for the excellent: and if you can have excellence, why should you be satisfied by the barely enough?
Moreover, and this is maybe my philosophical education, through the efforts you make to reach a goal you can open your mind to different results, that could be useful for other parts of the software, or you can imagine new features, or simply know better the software you are creating. There's a word to specify the achieving of a goal that someone is not looking for, different from the one you're trying to achieve: serendipity. Trying to reach the Indias (that had already been reached, the "warm water"), Columbus descovered America.
If you've ever used a generic software to manage your business, wether it's a job or
not, you certainly happened to be forced to use not-so-smart procedures, or
ripetitive, at least, to reach your aims.
Did you consider the value of the time you lostin these detours in your costs/benefits calculation about your software? And did you add to this the time you and your collaborators had to spend to learn and use that generic software according to the logic its developers, not you, decided?
And more: did you consider that you will pay your customized software only once, without licences or annual fees, and that its maintenance will be customized just as its development?
And finally: are you really sure that it is more expensive, even only as actual amount? Did you ever request a quotation, or did you only get influenced by the "hearsay"? ...try me! :)