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! :)