Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Recently I have been working with a large set of talented programmers that lead to a discussion on when should we start building our own components (web js/css) vs downloading and modifying existing components that don't quite fit the needs of a project. Does anyone know or could suggest best practices for this type of conundrum?

share|improve this question
When the cost/benefit analysis indicates that one is better/cheaper than the other. – Caleb May 23 '13 at 20:50
Beware of Not Invented Here syndrome. – Dan Pichelman May 23 '13 at 20:59

There are a few different considerations that come into play when we consider it for our company, as listed below:

  1. Cost - Is the time cost for modifying it going to be greater than the time cost for developing outright? Not all components will be easily modifiable, and if it would take 8 hours of development time to custom build versus 10 hours to modify, that is a factor.
  2. Control - The component must be available with source code and modifiable.
  3. Licensing - If there is any cost, is there a one time cost? Or is it ongoing? If it is free, is that only for private or single use? Or is there a fee if it is for a commercial application?
  4. Branding - Depending on the component/programmer, they may specify that their accreditation either stay commented in the code, or be displayed on the website/application. You have to determine if that is acceptable.
  5. Coding standard/documentation - The code may work, but if it is incomprehensible and/or poorly documented, it may cost more time to rework that portion than it is worth.

Those are the primary things that we consider when looking at developing, versus outsourcing or downloading available components.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.