Working in web-development, I face a common situation when clients want to use 3rd party software as a starting point of the project. That could be a CMS, an e-commerce site, or something else. Motivation is usually budget-driven; it seems to the client that having a web site built atop of some off-the-shelf product will cut costs. It is not always true. For example:
- The client (often a non-technical person) was told that it's super-easy to build a 3-page website using a famous CMS. However, nobody knows what it takes to build a 100-page website, with a blog feature and 3 levels of paid membership.
- The team doesn't know the CMS before the project starts, so adding requested features become a hard task, and the existing CMS code often stands in the way of effective development.
- It also may turn out that there's no decent documentation. The team would create similar features faster without that CMS, but the client still insists on using it.
- Adding custom design to the CMS-based site may cause trouble for HTML developers, requiring development of non-trivial code (for example, an obscure menu system).
- It may turn out that the CMS is not compatible with the hosting that was usually used for deployment, the CMS has internal flaws preventing scalability in production, or that the solution requires enormous hardware setup to operate properly under load.
That leads to questions I'd like to ask:
- How can we convince a client that his solution should not require a custom CMS, or that it may take longer to develop a custom solution using pre-existing code? Clients usually has arguments like 'the biggest sites on the Internet are using this CMS,' but we don't really know how much effort was put but those biggest sites to run the CMS properly.
- How to include 3rd party (or pre-existing) code into our initial estimation and risk-management calculations? Any numbers and techniques are welcome.