Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deal with internal company frameworks and SW factories?

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?

Why I think internal frameworks / factories are not good:

  • Budget & 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.
  • 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.
  • 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.
  • Technical debt - bad code in framwork is technical debt.
  • 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.
  • Insufficient documentation - documentation is first part affected by low budget. Framework without documentation is useless. Reflector (.NET) is my best friend.
  • 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.
  • 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.
  • Complains to framework are prohibited.
  • Usage of other frameworks is prohibited.

Why I think companies are doing this:

  • Arrogance & egoism - sombody in company believes that he can do it better.
  • 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.
  • Management failure and incompetence - not understanding the impact (especially long term) of this decission. Decission based on incorrect informations. Management without SW development background.

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?

Edit:

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.

like image 773
Ladislav Mrnka Avatar asked Sep 08 '10 09:09

Ladislav Mrnka


People also ask

Why framework is important in business?

IT frameworks lay out guidelines, best practices and operating principles to help IT organizations achieve objectives defined in business terms. IT frameworks ensure alignment between the way IT services are delivered and the value they enable. Frameworks are useful because IT processes can be large and complex.

What does framework mean in business?

Frameworks Defined A framework is a supporting structure of guidelines and. boundaries to achieve a specific goal. Business frameworks range from strategic to team level application.

What should be in a framework?

A strategic framework serves to provide structure to this type of long-term planning by focusing on four key elements: vision, mission, time frame and objectives.


1 Answers

In my experience the most common cause of excess frameworks is... bored developers! Uninspired developers find that developing frameworks to solve their problems is much more fun than actually solving those problems - the end result is frameworks that suffer from all of the above (because of course the developer only did the fun bits), and possibly don't even solve the actual problem (because the goal was to have fun, not to solve the problem).

The solution is tricky - its difficult to know what it is that motivates developers as everyone is motivated by different things, however motivated developers who are busy doing things that they enjoy don't see to suffer from this ailment!

That said, well thought out frameworks when properly used are definitely a good thing - However if its only going to be used internally then it might be better to instead think of it as an extension to re factoring and code re-use rather than as a framework.

A classic sign that someone is suffering from bored developer framework syndrome is when a framework is being developed to solve the general case when there isn't yet a solution for the specific case:

  • How can you know how to solve the general case until you have solved at least one specific case?
  • Until you've had to solve the general case a few times you are only guessing that a framework is even needed.

The second case of course leads to the worst sort of framework - the mammoth generic framework that is only ever used once, to solve a problem which is far simpler than the framework itself.

Instead consider these sorts of frameworks more as an exercise in "extensive refactoring" - if the framework is produced as a way of grouping and tidying common code on an as-needed basis then the framework will grow in size and complexity dynamically - having already solved the problem before you start producing frameworks is nice too as it means you are already experts in whatever it is the framework needs to do.

Finally, try to keep developers from being bored (they get up to all sorts of mischief otherwise!)

like image 182
Justin Avatar answered Oct 05 '22 10:10

Justin