Most of the work that Blue Bridge does is for Joomla and this requires that we continually think about how our work will be integrated with the work of other developers. When talking to clients about their needs, occasionally they'll ask me how we’ll execute a project and I sometimes hear them sigh, "You'll probably need to code this from scratch, huh?" This response derives from their experience with past Joomla development companies telling them, "Whoever worked on this last did a horrible job. We’ll have to re-write everything." Now, don't get me wrong, we rarely work with other developers’ code that is to our standards of quality. However, we also rarely tell our clients that we have to start everything over or that what they want can only be coded custom if it's going to work well. Development companies may benefit by custom developing everything, but it's rarely in your best interest to take this approach. In this post, we'll explore when and why you would want opt for custom development and what the options for integrating with other developer’s work are.
So when do you really need to start from scratch? The answer is that it's a matter of judgment. We have recommended to clients that code needs to be rewritten or done custom. Typically, the rationale is:
For example, we worked on a project this fall where budget developers had hacked a Joomla 1.5 site to meet client requirements. This froze our clients into that out-of-date version of Joomla and prevented them from getting security upgrades or extending the site’s functionality in the future. They needed a code re-write for portions of their site.
Most of the time, there is an existing extension that meets our clients needs or Joomla!'s flexibility allows us to enhance an existing solution without causing trouble down the road.
For changes in how something looks, whether it's a module or component, you can use a layout overrides. This is a great option because a layout override allows you to make changes to the template in use and will allow you to still update your extensions without having to worry about your designs being overwritten by the latest update.
For additions or changes in functionality, it's a little trickier and very situation dependent. We've been able to expand on other extensions functionality through well planned execution of new modules, components, or plug-ins. For example, we helped a client connect their contact forms to their MS Dynamics CRM. Instead of selling them that we had to rewrite the contact forms we told them it was okay for them to continue using RS Forms and instead created another component to extend its functionality and link it to their CRM via hooks in RS Forms and cron jobs. This was executed in such a way that they could continue to update RS Forms without ever having to worry about updates overwriting the solution we executed. This solution gave them all the flexibility and power of an extension with years of development and also connected their data to their Dynamics CRM.
As I mentioned above, whether to start from scratch or work with existing solutions is a matter of judgment. It takes not only the capability to know how things work in order to create new workflows, but also a good understanding of an organization’s needs and priorities. The takeaway for you is to ensure that your development company understands your goals in executing a project. If they tell you that you need to start from scratch, ask them why and if they can’t speak directly to your needs look for a new development company.