Build or Buy?
How does one decide whether to buy a packaged solution or build using custom development? Which one will deliver the best results most economically? Each project is different and sometimes either methodology will suffice. This article hopes to shed some light on the underlying reasons for choosing one direction or the other in web development projects.
Portals, shopping carts, content management systems and intranets to name a few, can be purchased, installed and configured in a fraction of the time and cost it would take to build them from scratch. In the past few years there has been a huge shift in how Web application development is marketed and sold to customers. It has gone from primarily custom development services to packaged products. Every technology company has a brand and a product to sell. Often these products begin as a custom developed solution for a specific client then the firm decides they can resell their experience and resulting code. This has three primary benefits to the firm: bigger profit on reselling the same work, generated revenue of customization of the product, it’s easier to for sales people to understand and customers are often more comfortable with purchasing something off-the-shelf. The perception is there is no need for expensive programmers; less risk, better support and upgrades are available. All these reasons are assumptions and may not be true.
Evaluation
Purchasing software is just like purchasing anything else. The quality of a product is only as good as how it has been designed and constructed. There are hundreds of inferior software products on the market that have been purchased by millions of customers. Even leading software manufacturers like Microsoft and Adobe release products that have major inherent flaws.
On the other hand, customers are often aren’t qualified to audit the practices in a custom development project. A demo is done and if the application passes quality testing, it is accepted. Only when another developer looks “under the hood” is when the realization of the quality of the design and construction is revealed.
Let’s define some of the criteria for quality and acceptance of an application:
Performance - Performance is a measurement of speed, reliability, usability, maintainability and how well an application meets business requirements.
Often the packaged solution has extra features that are not part of the requirements of a project. The product is of better grade, but not necessarily better quality. These unnecessary features add to the complexity to the application increasing development expenses, and may consume resources, reducing the overall performance of the application.
Functionality that is essential to the project’s requirements may not be met exactly by the application and this may be costly to alter. Work-arounds and hacks are sometimes used to “just get it to work,” jeopardizing the integrity of the software’s design and performance making it extremely difficult to troubleshoot and modify later.
Business rules may need to be adapted to match the application’s functionality when the opposite is the goal and adding to the scope of the project. Software is supposed to enhance business practices not require them to be changed.
Implementation - Speed of implementation and integration is one of the biggest selling points of packaged solutions. Customers think since it’s already built it must be faster to get in service. This is mostly true and one of the best reasons to use a packaged solution, but in situations were there is integration with existing systems, interoperability problems could stop implementation in its tracks.
Just because the manufacturer said it would work doesn’t mean it will easily or completely. Many times custom developed utility applications are required to connect disparate applications adding to the complexity of the overall system. Specialists intimate with the product are required to provide analysis and uncover the unique way it may work.
A big issue when a project calls for several products to function together is the number of vendors that may be involved. Vendors look out for themselves and when things don’t work as planned the finger pointing starts. Passing blame and not working together will kill any schedule. It is best to limit the number of vendors and have a non-biased project manager not focused on selling you something keeping the project on track.
Expense - Customers are initially seduced by the price of the product itself, but may find themselves paying more. Costs may be upgrades in infrastructure, helper assemblies, and utility software requiring customization by specialists. These costs can quickly become the majority of the total cost. Non-required functionality that comes with the packaged solution may also increase the cost of the product.
Support - Customers feel packaged solutions provide better options for support. This may be true or not. Products get discontinued everyday. Technologies are no longer supported. Resellers go out of business. You cannot count on having the company that you purchase from around to provide service.
The key thing to emphasize is -- it’s not whether the solution is a packaged or custom application, it’s how well it is designed and developed. If the application is built using standard technologies and best practices it can be worked on by any competent professional programmer skilled in those technologies. The caveat is the availability of that resource.
Growth - Both packaged and custom applications can be built with an open architecture that provides access to functionality. Object oriented design, APIs, and Web services all add to the ability to grow and adapt over time. If this is a priority, make sure your application can be scalable and extensible. It may cost a bit more up front but the savings will be huge when time comes for change.
Keep It Simple
Perhaps the best of both worlds is using pre-developed components, assemblies or libraries that provide small units of functionality for custom development. The application can be designed to meet specific requirements. Unnecessary functionality and bloat is kept to a minimum. Best practices can be adhered to. Timelines may be decreased and the support network is increased while not adding to the number vendors or developers directly working on the project. These “mini products” enable developers with lesser experience to create complex applications by following guidelines. They leverage the skills of senior developers and give a great boost to development practices. There are whole modular systems and frameworks in a variety of platforms like ASP.NET, PHP, and RUBY and JAVA. This is a huge area of growth and an exciting direction for custom development. Get Help
Custom development is not nearly as expensive as it was a few years ago. Rates have dropped as competition has increased and Rapid Application Development techniques are improving productivity. Having a properly designed and developed custom application means less code, easier debugging, better performance and an overall simpler piece of software. As with using a packaged solution, make sure your custom application is designed using standard practices, is easily extended, has the source code and development resources are available when it’s time to make changes.
Custom development may not be the answer. Sometimes your site needs is a component and there is a product that will suit your needs perfectly. Packaged solutions excel in smaller, independent applications. They can often be purchased, installed, configured and in service much cheaper and faster than custom development.
Before making the purchase of a package solution make sure the product meets your requirements or can be altered easily to do so. Find out costs hidden in the extras that are needed. Get estimates on custom development for comparison. Think towards the future. Research resources available to provide support and maintenance. Complete due diligence and then you’ll be able to make a sound decision.
There are more alternatives to developing a Web site today than ever before. It is difficult to wade through all the latest information. Products take time to research and a good vendor is hard to select. Working with a good Project Manager to guide the decision making in the best interest of the project is invaluable. Just remember there is no best solution. Each project has its own requirements. Explore all options. Project Management
|