COTS vs. Custom / Build vs. Buy: Decision Tree and Best Practices
I work at a company with a large SAP investment, and we also have dozens of large .Net systems (mostly internally for engineering systems), and Java platforms (mostly for external web applications). As such, we have large development shops on ABAP, C#, and JEE.

	We have decent standards for which platform to use in which domain, but the build vs. buy question is something we need to clarify. We need a better way to determine when commercial, off the shelf (COTS) software should be used, and when we should leverage our own developers. 

 	I'd like to build a decision tree based on best practices to help with this question. 

	At the highest level, Jeff Atwood's related post sums it up well: [The Best Code is No Code At All][1]

	A little deeper, I'd like to see criteria like:

		- Does a custom system allow of competitive advantage?

		- Is a COTS system available that meets most of the requirements?

			- If so, is there a fully exposed API available?

			- If so, is the source code available?

		- Is the system designed to meet a core business function? (See Joel Sposky's: [In Defense of Not-Invented-Here Syndrome][2])

			- If so, will custom development allow for code reuse in future / other systems?

	Thanks for your help!

         KA


  [1]: http://www.codinghorror.com/blog/archives/000878.html
  [2]: http://www.joelonsoftware.com/articles/fog0000000007.html
COTS vs. Custom / Build vs. Buy: Decision Tree and Best Practices
===

I work at a company with a large SAP investment, and we also have dozens of large .Net systems (mostly internally for engineering systems), and Java platforms (mostly for external web applications). As such, we have large development shops on ABAP, C#, and JEE.

	We have decent standards for which platform to use in which domain, but the build vs. buy question is something we need to clarify. We need a better way to determine when commercial, off the shelf (COTS) software should be used, and when we should leverage our own developers. 

 	I'd like to build a decision tree based on best practices to help with this question. 

	At the highest level, Jeff Atwood's related post sums it up well: [The Best Code is No Code At All][1]

	A little deeper, I'd like to see criteria like:

		- Does a custom system allow of competitive advantage?

		- Is a COTS system available that meets most of the requirements?

			- If so, is there a fully exposed API available?

			- If so, is the source code available?

		- Is the system designed to meet a core business function? (See Joel Sposky's: [In Defense of Not-Invented-Here Syndrome][2])

			- If so, will custom development allow for code reuse in future / other systems?

	Thanks for your help!

         KA


  [1]: http://www.codinghorror.com/blog/archives/000878.html
  [2]: http://www.joelonsoftware.com/articles/fog0000000007.html