0

My team develops .net components which are used by other development teams within the company.

More often than not, these teams need an urgent enhancement and they want it now. To preserve my team's sanity, I would like to make planning more predictable and propose releases with a frequency no less than a month. I am curious about how other solve this kind of issues.

To take a concrete example, let's say we are developing our own Grid class. When one of the teams needs sorting but our next release is in 3 weeks. Would it be a good strategy to let them wrap our Grid in their own code and provide the required functionality themselves?

If not, what would be a good strategy to allow our users to enhance the components themselves? Could you please recommend some literature that explains the different strategies for maintaining an internal framework?

rlesias
  • 4,786
  • 3
  • 15
  • 20

2 Answers2

1

First, you cannot say to the other teams "Hey, hold on for 3 weeks". Think about they own pressure to finish things in time, they got lives and deadlines too.

You can offer two solutions: a) "Ok, We can do it but due to internal agenda we cannot get it done before 3 weeks" b) "You can wrap it yourself and do all the hard work if you cannot afford to wait 3 weeks"

And maybe a third solution:

c) "If you can spare a developer we can guide him to implement it, off course he ill need some time to get in the code and start doing some thing real but we both ill gain at the end"

That was not a answer for your question but mode a advice for the scenario you painted.

Now the answer:

Can you really predict other teams demands? If you say yes stop hardworking now and go to Vegas, you can make lots of money by using super powers.

Think other teams as clients. You mostly cannot predict demands (to new features) unless they are too obvious it's a error to ship without it in first place.

You can try to make some brain storm with the other teams architects before even starting to waste time in any fancy component nobody ill use or care about.

From this you ill start to get a more concrete idea about what you need to build. Now you already got some "clients". Stop doing other components (they ill just create more "new features" pressure anyway) and focus on delivering something ill do the work, all the work it's supposed to do at least.

By just creating components without some agreement with your "clients" you risk to waste time creating things (even pretty good ones) no one needs and forcing your "clients" to seek the some nice other (free?) component they found searching on google.

In the pure technical question, maintainability of components is not very different from any other app. Just let it loose coupled (dependency injection can be a good idea) and you ill be fine.

jean
  • 4,159
  • 4
  • 31
  • 52
0

seems like you need branching (and merging)...here is a good starting point: http://msdn.microsoft.com/en-us/library/gg475908%28v=vs.100%29.aspx

dee zg
  • 13,793
  • 10
  • 42
  • 82