title: How to deal with internal company frameworks and SW factories?
body: <p>Based on my own experience and on experience of my friends I see that many companies have some strange ideas to develop their own frameworks and SW factories (builds skeleton of application for you). These ideas are usually based on belief that own framework will be much better than anything else available. How to deal with such ideas and how to explain that it is not always good way to go?</p>
  
  <p>Why I think internal frameworks / factories are not good:</p>
  
  <ul>
  <li>Budget &amp; Resources - There is usually only some initial budget to create framework. Nobody thinks about budget needed to maintain and support framework. Nobody can even estimate budget and resources needed for maintaing. At the beginning nobody thinks about maintaining multiple versions of framework to support already existing applications.</li>
  <li>Lack of experience - Framework is usually created by people without any such experience or with support of "consultants" - generally much more expensive people with similar skill set.</li>
  <li>Architecture / design - any architectural problem in framework affects all applications build using this framework. Bad design decissions in framework force developers to code applications in the bad way.</li>
  <li>Technical debt - bad code in framwork is technical debt.</li>
  <li>False belief of silver bullet - managers believe that own framework / factory is silver bullet. All application will be written in the same way and it will be easily maintainable. My experience is that it is simple not truth. Even with SW factory each application is specific.</li>
  <li>Insufficient documentation - documentation is first part affected by low budget. Framework without documentation is useless. Reflector (.NET) is my best friend.</li>
  <li>Insufficient user group - internal framework has only small user group. Small user group means small experience. If I'm using public tool / framework and I have a problem, I can ask question on SO (or similar web) or just try to find answer on google. With internal framework it is not possible.</li>
  <li>Policy - company policy force you to use the framework to vindicate framework costs. This goes so far that the framework is chosen before the first requirement is gathered.</li>
  <li>Complains to framework are prohibited.</li>
  <li>Usage of other frameworks is prohibited.</li>
  </ul>
  
  <p>Why I think companies are doing this:</p>
  
  <ul>
  <li>Arrogance &amp; egoism - sombody in company believes that he can do it better. </li>
  <li>Ignorance - ignoring existing frameworks / solutions and the fact that only good frameworks survived long enough to be popular. Ignoring user group and already available informations on the Internet.</li>
  <li>Management failure and incompetence - not understanding the impact (especially long term) of this decission. Decission based on incorrect informations. Management without SW development background.</li>
  </ul>
  
  <p>I understand that sometimes own solution or framework for specialized scenario is needed but I'm tired with all these "great internal frameworks" for creating web or desktop applications. Am I wrong? Are these frameworks really needed (.NET and Java world)? Can you provide me some example or reason why it is good to have internal framework / factory?</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>Thanks for answers but I expected some advice how to deal with a problem as a developer (except changing a job) not as a manager.</p>