As a web developer this is one question I constantly face when having spec meetings with potential clients.to be honest this can be a very difficult decision, at the best of times. Both options have their merits, and I’m of opinion that there is not really a wrong answer to that question.
Here are a few guidelines that I like to keep in mind when figuring out my best course of action.
Development time
This has sometimes been the biggest factor in deciding what course to take, as ask the client really cares about is getting his product out as soon as possible.they also want the best quality product with no security issues, and in my opinion the only way of ensuring this is by starting on a platform that has been tried and tested.
A with any other decision this has come back and bitten me in the backside, especially when attempting to tackle something in the framework of a CMS that you have not done previously, and now need to figure out how to accomplish within the framework of your chosen CMS.
Purpose of the system to be developed
This is always at least the second most important factor when making the above mentioned decision. If the “system” is a simple website, then there its obviously no reason to build a custom system to display plain content.
When the system is a doing cart system, why would i want to reinvent the wheel? There are many solutions out there, including Virtuemart for Joomla! as well as Ubercart for Drupal.
However, when the system is a stock management system, to be accessed and used VIA tablet browsers, from sometimes remote locations over the internet, then I trends to go for a custom solution that is lightweight, fast and doesn’t have functionality that will never be used.
Security issues
No developer writes perfect code.a bold statement,i know but one that I captive to be absolutely true. I believe that perfect code is out there, but along with that I believe that perfect code is only attainable when opening it up to the eyes of many and getting input from as many people as possible.
Because of this, I will always consider myself to write flawed code and will look for ways to improve the way i do things, or use a platform that i know already has tons of patches against the various security holes that were in its defenses.
However, when said system well be running on an internal network, like a stock management system, then security is less of an issue. Thisnot mean that I won’t put ask my efforts into writing a flawless secure system, but should I mid something small, the chances are slim that it will ever be exploited, or cause any serious harm.
Flexibility
This is also important to consider. What are the future plans for the system? More often than not, clients do have extra plans for their systems, whether they verbalise them or not and sometimes even without them knowing it. Always keep in mind what possibilities there might be for the system, and enquire about these when speaking to a client.they don’t know how important this information is when deciding how to tackle a project.
Well documented code is ready to work with. It is important to know this. Many a time have I looked at someone else’s code and found myself totally lost. just as many times it happened that i couldn’t find my way through my own code. I believe the reason for this is because i constantly better my technique of doing things.
It is because of these things that I say it is very important to keep the future of a product in mind when deciding how to do it. Documentation is of utmost importance and while you do have to make time to document both custom solutions a well as CMS based solutions, the fact is that many of the functions, methods and variables used in your CMS bases system will already be documented by the CMS’s documentation. This saves on time, and makes it easier for yourself, our the next developer to get back into old code and make changes or even expand the system.
Integration with other systems.
Something i realised again this week, is that clients think that you automatically know what they want, and damn you if you don’t.although we do magic on an almost daily basis, devining almost impossible things, the fact of the master is that we are are not mind readers and try as we might, we can’t know what they area thinking.
Find out from you client what else the system needs to integrate into. Where well the data that you are supposed to show come from? To them its obvious, but there is no way for you to know all that. This is very important to know, this will greatly influence your planning and the timelines as sometimes its just less hassle to build a custom system around an existing database than to write a whole API to facilitate proper communication between the systems.
I hope that this will at least help a bit when deciding what to use for which projects. I love developing things from scratch, but the truth is, sometimes its just not wort the time and effort that it will take. Take a day, do a feasibility study, for yourself, by yourself to decide what to use – it might save you days of work in the long run.