¿Qué debería proponer para una organización de biblioteca de códigos reutilizable?

Mi organización ha comenzado a reasignarse lentamente a un model de negocios less orientado a los productos y a un model de negocios orientado a los contratos durante el último año o dos. Durante el año pasado, fui transferido al nuevo negocio de contratación para ayudar a apagar incendios y completar pedidos. Si bien el año en su set fue rentable (y, por lo tanto, al less en una medida exitosa, tuvimos un par de proyectos que realmente mejoraron nuestros numbers para todo el año alnetworkingedor de junio).

Estuve hablando con mi gerente antes de las vacaciones de Navidad, y mencionó que, si bien no le gusta el término "post-mortem" (no tengo idea de qué está mal con el término, ¿conocen o saben empresarios?). , él quería tener una reunión en algún momento a mediados de enero, donde todo el grupo de contrato revisaría el año e intentaría averiguar qué salió bien, qué salió mal y qué iniciativas podemos realizar para tratar de mejorar la rentabilidad.

Por varias razones (entraré en más detalles si se solicita), creo que una cosa de la que se beneficiaría nuestro equipo, y de hecho la organización en su set, sería algún tipo de intercambio de código organizado. Las mismas cosas se hacen una y otra vez por diferentes personas y terminan haciéndose (y rotas) de diferentes maneras. Me gustaría al less establecer un repository donde las personas puedan tomar el código que realiza una determinada tarea e include (o, de manera realist, copyr / pegar) ese código en sus propios proyectos.

¿Qué debería proponer como un repository fuente común viable para un equipo de al less 10-12 desarrolladores a time completo, además de entre 5 y 50 (muy) desarrolladores a time parcial que se prestan temporalmente al grupo de contrato para el trabajo especializado?

La respuesta requirió cierta información cultural para cualquier posibilidad de respuesta razonable, por lo que la proporcionaré aquí, junto con algunas de mis ideas sobre el tema:

  1. Los desarrolladores no estarán obligados a usar este repository. La barrera de input debe ser lo más baja posible para fomentar la participación, o será ignorada. Lamentablemente, esto significa que cualquier cosa que requiera la installation y ejecución de un cliente de software adicional probablemente fallará. La implementación de ClickOnce es lo más cerca posible, y eso es terriblemente dudoso.
  2. Somos aversos al riesgo, tienda de Microsoft. Es posible que pueda vender soluciones de código abierto, pero serán miradas con recelo. Todos los desarrolladores tienen VSS, el director corporativo ha declarado que VSTS no es viable en el futuro. Si no es demasiado difícil una configuration y la licencia es liberal, aún podría intentar ninja un server VSTS en el laboratorio.
  3. A algunos de mis colegas desarrolladores les importa escribir software confiable y de calidad, otros no. Me gustaría proteger cualquier código compartido escrito por aquellos que se preocupan por aquellos que no lo tienen. Las prácticas de gestión de configuration comunes (como extraer el código mientras se está trabajando) son ignoradas por completo por al less un quinto de mis colegas en el equipo contratado.
  4. Somos mejores en escribir processs que seguirlos. Tendré que tener algún tipo de process escrito para poder venderle esto a mi gerente. Creo que tendrá que ser liviano, flexible e implementado por las herramientas para ser remotamente relevante porque mi gerente es la única persona que alguna vez lo leerá.
  5. No asum las mejores prácticas. Me gustaría include cosas como revisiones obligatorias de código para hacer cumplir el uso de herramientas de análisis estático (FxCop, StyleCop) en código común. Esto eleva la barra, sin embargo, porque actualmente no se realizan tales prácticas de una manera consistente.

Estaré encantado de proporcionar cualquier información solicitada adicional. 🙂

EDITAR: (Respondiendo a preguntas)

Tal vez la contratación no es el término correcto. Poseemos absolutamente nuestros propios resources de código. Una parte importante del model comercial en papel (aunque no aún, en la práctica) es que poseemos el código / proyectos que escribimos y podemos revenderlos a otros clientes. Nuestros proyectos generalmente toman la forma de agregar alguna funcionalidad especial a uno de los muchos productos de software existentes en la compañía.

Por los sonidos que tiene, tiene la oportunidad durante el "post-mortem" de presentar algunas soluciones. Crearía una presentación que describa sus ideas y las presente en esta reunión. Antes de eso, recomendaría que establezca algunas soluciones y las demuestre durante su presentación. Algunas cosas para hacer –

  1. Evangelice la progtwigción basada en componentes (Una buena lectura es Progtwigción de Componentes .NET – Jubal Lowy ). Defiende el principio de encoding DRY (Do not Repeat Yourself).

  2. Configure una location común central en su repository para todas sus bibliotecas de códigos reutilizables. Esto debería tener la implementación de reference de su biblioteca de códigos reutilizables.

  3. Facilite a las personas el uso de las bibliotecas de códigos al proporcionar templates de proyectos para escenarios comunes con las bibliotecas de códigos ya integradas. De esta manera, sus colegas tendrán una plantilla coherente para trabajar. Puede aprovechar las capacidades de la plantilla de proyecto VS.NET para esto – consulte los siguientes enlaces VSX Project System (VS.Net 2008) , artículo de Code Project sobre creación de templates de proyecto

  4. Utilice una herramienta de automation de compilation como MSBuild (que se incluye en VS2005 y posteriores) para copyr solo los componentes necesarios para un proyecto en particular. Haga que esta parte de su configuration de compilation en el IDE (VS.NET 2005 y posteriores tengan forms ingeniosas de configurar las tareas de precompilation y postcompilation usando MSBuild)

  5. Sé que hay resistencia para las soluciones de código abierto, pero aún así recomiendo configurar y utilizar un sistema de automation continuo como CruiseControl.NET para que pueda aprovecharlo para comstackr y probar sus proyectos de forma regular desde un repository central donde el biblioteca de código utilizable se mantiene. De esta forma, cualquier cambio en la biblioteca de códigos se puede verificar rápidamente para asegurarse de que no se rompe nada. También ayuda a resaltar los problemas de versión con los diversos proyectos.

Si puede configurarlo en una máquina y mostrarlo durante su autopsia como parte de los pasos que se pueden tomar para mejorar, debe get una mejor compra ya que está mostrando algo que ya funciona y que puede ampliarse fácilmente.

Espero que esto ayude y la mejor de las suertes con tu evangelismo 🙂

Me encontré con este set de frameworks llamados recientemente Frameworks de Chuck Norris . Están disponibles en NuGet en http://nuget.org/packages/chucknorris . Definitivamente debería verificarlos, ya que tienen algunas templates agradables para sus proyectos ASP.NET. También definitivamente pago Nuget .

organizar por tema, requiere testings unitarias (nivel de function) para el logging / aceptación en la biblioteca; agrega una wiki para explicar qué / por qué y para search

Una pregunta: usted dice que este es un grupo de consulta. ¿Qué resources de código tienes? Creo que la mayoría de los esfuerzos de encoding de sus equipos serían propiedad de sus clientes como parte de su contrato de trabajo por encargo. Si va a hacer esto, debe estar absolutamente seguro de que sus contratos le otorgan derechos sobre el trabajo de sus empleados.

Maven ha resuelto la reutilización de código en la comunidad Java. Debería ir a verlo.

Tengo un desarrollador de .NET que ha diseñado algo similar para nuestro uso interno para ensamblados .NET. Debido a que no existe una comunidad de Internet .NET comparable, esta herramienta solo accederá a un repository interno en nuestra networking corporativa. De lo contrario, funcionará más o less como lo hace Maven.

Maven realmente podría usarse para administrar ensamblados .NET directamente (lo usamos con nuestros modules de código Flex .swf y .swc). Simplemente .NET folk tendría que superar el uso de una herramienta Java y probablemente tendría que escribir un plugin Maven para conducir msbuild.

Antes que nada para la organización de código, consulte las Pautas de layout de Microsoft Framework en http://msdn.microsoft.com/en-us/library/ms229042.aspx y luego cree un control de fuente de Ubicación central para el nuevo marco que va a crear. Configure algunos espacios de nombres pnetworkingeterminados, ensambles para una separación más limpia y asegúrese de que todos tengan una compilation diaria.

Solo un punto adicional, ya que también tenemos un "código compartido" en mi tienda.

Descubrimos que esto es un problema de empaquetado :
Cualquiera que sea el código que esté produciendo o la herramienta que esté utilizando, lo que debería tener es una herramienta de compilation común capaz de empaquetar sus fonts en un "componente de entrega", con todo lo utilizado para ejecutar realmente el código, pero también la documentation (comprimida) y la fuente (comprimida).

El principal interés en tener una "unidad de package de entrega" de este tipo es tener less files para implementar como sea posible , a fin de facilitar la descarga de esas unidades.

El process de compilation puede ser administrado por Maven o por cualquier otra herramienta (anti / nant) que desee.

Cuando algún equipo de auditoría quiere examinar todos nuestros proyectos, simplemente desplegamos en su publicación los mismos packages que implementamos en una máquina de producción, excepto que descomprimirán los files fuente y harán su trabajo.

Como nuestros files fuente también incluyen los files necesarios para comstackrlos (como, por ejemplo, los files Eclipse ), incluso pueden volver a comstackr esos proyectos en su entorno de desarrollo.


De esa manera:

  1. Los desarrolladores no estarán obligados a usar este repository. La barrera de input debe ser lo más baja posible para fomentar la participación, o será ignorada : es solo un script para ejecutar para get el "module de entrega" con todo lo que necesitan (también se puede usar un repository maven para eso) )

  2. Somos una tienda de Microsoft con aversión al riesgo : puede usar cualquier repository que desee

  3. A algunos de mis colegas desarrolladores les importa escribir software confiable y de calidad, otros no : esto no tiene nada que ver con la calidad del código escrito en estos modules de packages.

  4. Somos mejores para escribir processs que seguirlos : el único process involucrado en esto es el process de empaquetado, y puede ser bastante automatizado

  5. No asum las mejores prácticas : no está obligado a aplicar ningún tipo de análisis de código estático antes de empaquetar files ejecutables y fonts.