What should I offer for organizing a multiple code library?

My organization began to slowly shift to a less product-oriented business model and a more contractual business model over the past year or two. Over the past year, I was transferred to a new contract business to help extinguish fires and fill orders. Although the year as a whole was profitable (and, therefore, at least one measure was successful, we had several projects that really distinguished our figures from a year ago in June.

I talked with my manager before the Christmas holiday, and he mentioned this, although he does not like the term "posthumous" (I have no idea what happened to this term, do you know any business people or managers there?), He really wanted to hold a meeting in mid-January, where the entire group of contracts will review the year and try to find out what went right, what went wrong, and what initiatives we can take to try to increase profitability.

For various reasons (I will tell you more if necessary), I believe that one thing that our team and the organization as a whole will benefit is some form of organized exchange of codes. The same thing happens with different people, and in the end they end (and break) in different ways. I would like to at least create a repository where people can capture the code that performs a specific task and include (or, realistically, copy / paste) this code in their own projects.

What should I offer as a working general source repository for a team of at least 10-12 full-time developers, as well as from 5-50 (very) part-time developers who are temporarily transferred to the contract group for specialized work?

The answer required some cultural information for any occasion with a reasonable answer, so I will provide it here, as well as some of my thoughts on the topic:

  • Developers will not be forced to use this repository. The barrier to entry should be as small as possible to encourage participation, or to be ignored. Unfortunately, this means that everything that requires an additional software client to install and run will most likely fail. When deploying ClickOnce, how close we can get is terrible.
  • We are not risk averse, Microsoft Store. I can sell open source solutions, but they will be looked at with suspicion. All developers have VSS, the corporate director said that VSTS is not viable in the future. If this is not too complicated, the installation and license are liberal, I can still try to connect the VSTS server to the lab.
  • Some of my fellow developers care about writing quality, reliable software, and some do not. . I would like to protect any generic code written by those who care about those who do not. General rules for configuration management (for example, checking code while it is running) are completely ignored by at least one fifth of my colleagues in the contract team.
  • We better write processes than follow them. . I really need to have some form of writing process in order to be able to sell this to my manager. I believe that it should be lightweight, flexible and compulsory so that the tools are remotely relevant, because my manager is the only person who has ever read it.
  • Do not take best practices. . I would really like to include things like mandatory code checks to force the use of static analysis tools (FxCop, StyleCop) for general code. However, this raises the bar, as such practices are not currently being implemented in a consistent manner.

I will be happy to provide any additional information requested. :)

EDIT: (Answers to questions)

Perhaps contracting is not the right term. We absolutely own our own code assets. A significant part of the business model on paper (although not yet in practice) is that we have the code / projects that we write, and we can resell them to other clients. Our projects, as a rule, take the form of adding some special functions for one of the companies of many existing software products.

+4
source share
6 answers

From the sounds of this, you have the opportunity during the "post-mortem" to present some solutions. I would create a presentation outlining your ideas and presenting them at this meeting. Before that, I would recommend that you install some solutions and demonstrate them during the presentation. Some things to do -

  • Evangelize component-based programming (good reading . .NET Component Programming - Jubal Lowy ). Preach the principle of coding DRY (Do not Repeat Yourself).

  • Configure a central shared folder in your repository for all of your reusable code libraries. This should have a reference implementation of your reusable code library.

  • Make it easy for people to use your code libraries by providing project templates for common scenarios with already processed code libraries. Thus, your colleagues will have a consistent template for work. You can use the capabilities of the VS.NET project template to do this - check out the following links for the VSX Project System (VS.Net 2008) , Project Code for Creating Project Templates

  • Use a build automation tool such as MSBuild (which is included with VS2005 and later) to copy only the components needed for a particular project. Bring this part of your assembly into the IDE (VS.NET 2005 and there are still great ways to configure compiled and post-compiled tasks using MSBuild)

  • I know there is resistance for open source solutions, but I would still recommend setting up and using a continuous automation system like CruiseControl.NET so that you can use it to regularly compile and test your projects from a central repository where a reusable code library is supported. Thus, any changes in the code library can be quickly checked to make sure that they will not break anything, and also helps to identify problems with versions with different projects.

If you can install it on a machine and show it during your autopsy as part of the steps you can take to improve, you should buy better, as you are showing something already working that can be easily scaled.

Hope this helps and good luck with your evangelism :-)

I came across this set of frameworks, which was recently called Chuck Norris Frameworks - they are available on NuGet at http://nuget.org/packages/chucknorris . You should definitely check them out, as they have some good templates for your ASP.NET projects. Also definitely check out Nuget .

+4
source

organize by topics, require unit tests (functional level) for registration / acceptance into the library; add a wiki to explain what / why and to search

+1
source

One question: you say that this is a consulting group. What are your code assets? I think most of your coding team’s efforts will be your client’s contract. If you intend to do this, you need to make sure that your contracts grant you the rights to work for your employees.

0
source

Maven has decided to reuse code in the Java community - you should check it out.

I have a .NET developer who developed something similar for our internal use for .NET collections. Since there is no comparable .NET .NET community, this tool will only have access to the internal repository on our corporate network. Otherwise, it will work as Maven does.

Maven can really be used to directly manage .NET assemblies (we use it with our .swf and .swc code modules) - it's just .NET that would need to get over with the Java tool and probably have to write a Maven Plugin for management msbuild.

0
source

Another point, since we have a "common code" in my store.

We found out that this is a packaging problem:
Whatever code you produce or what tool you use, what you need is a general build tool that can pack your sources into a “delivery component”, all that is used to actually execute the code, but also documentation (compressed) and source (compressed).

The main interest in having such a “delivery unit” should be to have as few files for deployment as possible in order to facilitate the loading of these units.

The build process can be very well controlled using Maven or any other (ant / nant) tool you want.

When an audit team wants to study all of our projects, we simply deploy in place the same packages that we deploy on the production machine, except that they will compress the source files and do their work.

Since our source files also include any files needed to compile them (for example, eclipse files ), they can even recompile these projects in their development environment).


In this way:

  • Developers will not be forced to use this repository. The barrier to entry should be as low as possible to encourage participation, or it will be ignored : run the script to get the “delivery module” with everything they need (the maven repository can also be used for this)

  • We're not risk averse, Microsoft Store : you can use any repository you want

  • Some of my fellow developers take care of writing quality, reliable software, and some do not : it has nothing to do with the quality of the code written in these module packages

  • We are better off writing processes than following them : the only process associated with this is the packaging process, and it can be quite automated

  • Don’t accept the best recommendations : you should not use any static code analysis before packing executable and source files.

0
source

First of all, to organize your code, check out the Microsoft Framework Design Guide at http://msdn.microsoft.com/en-us/library/ms229042.aspx , and then create a central location source control for the new frame you are about to create. Set up some default namespaces, builds for cleaner separation, and make sure everyone gets a daily build.

0
source

All Articles