Configuración de un entorno de desarrollo

7

Soy parte de una organización que está formalizando sus procesos / capacidades / etc de desarrollo de software. Si bien la organización no es tradicionalmente una organización de software, quieren hacer esto correctamente y proporcionar a los desarrolladores que trabajan en la organización (que me incluye) un conjunto sólido de herramientas en las que trabajar.

En particular, estamos de pie: control de código fuente, software de seguimiento de errores, herramientas de documentación (para los desarrolladores, no para usuarios finales) y, en general, software de gestión de proyectos (integración continua, seguimiento de proyectos, código revisión, software push). Algunos de los requisitos de alto nivel son:

  • Gratis es mejor. Si bien consideramos la compra de herramientas, hay mucho apoyo en la comunidad de FOSS para las herramientas de desarrollo, quiero mirar primero allí.
  • Integración entre sistemas. (Por ejemplo, el software de seguimiento de errores debería poder vincularse de nuevo al control de origen).
  • Fácil de importar y exportar desde. No quiero encerrarme.
  • (Relativamente) Fácil de aprender.

En este punto, esto es lo que estoy viendo en lo que respecta a mis recomendaciones:

  1. Source Control - Mercurial o Git - Personalmente, me inclino más por Mercurial en función de mi investigación y el hecho de que Mercurial parece ser más fácil de configurar en nuestro entorno.
  2. Seguimiento de errores - Estoy perdido aquí. He usado Bugzilla en el pasado, pero me hace temblar cuando lo uso.
  3. Documentación - MediaWiki , Screwturn Wiki , Atlassian (por supuesto, esto cuesta dinero, por lo que no es lo ideal)

Estoy buscando otras sugerencias de herramientas de productividad / herramientas de desarrollo que haya utilizado. Recuerde que somos una organización pequeña, por lo que no quiero exagerar, pero sí quiero darles a los desarrolladores buenas herramientas para usar.

    
pregunta JasCav 27.04.2011 - 17:09

9 respuestas

10

He pasado por esto antes. En realidad todavía vivo en ella. En general, tiene una buena idea de hacia dónde se dirige; la mayoría de las personas que hacen esto apenas usan el control de código fuente. Un montón de exactamente qué usar depende de qué pila (s) usa. ¿Puedes compartir eso?

De todos modos, corriendo tu lista:

  1. SCM: realmente depende del entorno. Si estás en windows, mercurial. Tiende a tener mucho más sentido ya que no eres un ciudadano de segunda clase. yo consideraría seriamente usar una solución alojada aquí si su El software no es demasiado secreto y tienes un ancho de banda sólido para llevar ventaja de ello. Otro lado de esto - SVN no es realmente tan malo en escenarios internos donde sabes que tienes conectividad y El control central tiene sentido. Y tiene la ventaja de ser mucho. más fácil de asimilar para los no iniciados. Puedo hacer que mi departamento de arte algo de uso SVN. Buena suerte con git.
  2. Seguimiento de errores / Documentación: los estoy agrupando porque yo En general contiende que los quieres en el mismo sistema. Para equipos pequeños, La mejor opción en mi humilde opinión es Redmine (o Chili dependiendo de que tenedor quieres retroceder). Ambos manejan errores y hacen cosas de tipo wiki / discusión. Además, es fácil enlazar desde errores. A la discusión o wiki y viceversa. También pueden tomar fácilmente Entradas por correo electrónico y conexión a LDAP, lo que lo hace bastante fácil para que sus usuarios finales envíen tickets rastreables en lugar de correos electrónicos aleatorios a la persona equivocada a las 2 am en un domingo. Oh y que También hablaré con tu SCM.
  3. No mencionaste la integración continua, pero yo diría que es Quizás más importante que cualquier otra cosa aquí que el control de la fuente: te mantiene honesto Hasta cierto punto, qué usar depende de lo que eres edificio, pero en general, la mejor opción que existe IMHO es TeamCity . El SKU gratuito probablemente funciona para la mayoría de los usos internos como 20 proyectos y usuarios suele ser más que suficiente. La belleza de Es tan inquietantemente fácil de configurar que da miedo, puedes ir De cero a bondad continuamente integrada en 5 minutos. 4 de que se gastan viendo pasar al instalador.

El otro ángulo aquí sería preguntar a los desarrolladores qué quieren usar. O configurar algún tipo de presupuesto de fondo de herramientas slushy para ellos. Todo el tiempo aparece cosas nuevas y es muy, muy específico de la aplicación / plataforma / idioma lo que la gente quiere.

    
respondido por el Wyatt Barnett 27.04.2011 - 17:36
3

Puedo sugerirte Redmine .

Redmine es una aplicación web de gestión de proyectos flexible, que admite estas características:

  • Soporte para múltiples proyectos
  • Control de acceso flexible basado en roles
  • Sistema flexible de seguimiento de problemas
  • Diagrama de Gantt y calendario
  • Noticias, documentos & gestión de archivos
  • Feeds & notificaciones por correo electrónico
  • Por proyecto wiki
  • Por foros de proyectos
  • Seguimiento del tiempo
  • Campos personalizados para problemas, entradas de tiempo, proyectos y usuarios
  • Integración SCM (SVN, CVS, Git, Mercurial, Bazaar y Darcs)
  • Creación de problemas por correo electrónico
  • Soporte de autenticación LDAP múltiple
  • Soporte de autorregistro del usuario
  • soporte multilenguaje
  • Compatibilidad con múltiples bases de datos

Como puede ver en la lista de características, es un entorno de desarrollo completo que puede integrarse con varios programas de SCM. Si se siente cómodo con Mercurial, puede utilizar Mercurial perfectamente integrado con Redmine.

Personalmente uso Redmine desde hace 2 años y nunca encontré algo similar en esta área, ¡es simplemente el mejor!

    
respondido por el aleroot 02.05.2012 - 08:27
1

Para el control de código fuente, recomendaría seguir con SVN hasta que necesite DVCS. Es fácil de aprender, tiene mucho apoyo comunitario tanto para * nix como para Windows. Y no te ata. Puedes transferir fácilmente desde allí a Mercurial o Git cuando surja la necesidad.

Si puede pagar la pila completa de Atlassian , o al menos Jira y Confluence, sugeriría que es la mejor inversión que puede hacer. Si no puede, entonces Trac es probablemente su mejor apuesta (y tiene un Wiki integrado).

También recomendaría Jenkins como una herramienta de CI amplia y prolija, aunque su compatibilidad con la pila .NET es un poco cuestionable, Si vas por ese camino.

Finalmente, sugeriría obtener una copia de Entrega continua para obtener una gran cantidad de consejos adicionales.

    
respondido por el pdr 27.04.2011 - 17:35
1

Esta es mi pila favorita para desarrollo privado en este momento:

Control de versiones: Git

Git Repository Management: Gitorious

Wiki de documentación: MoinMoin (excelentes complementos, fácil de piratear, desarrolladores receptivos)

Integración continua: Jenkins

Administración de compilación / implementación: Maven 3 (usado incluso para proyectos que no son de Java)

Gestión de artefactos: Archiva

Agile Management: Pivotal Tracker (seguimiento de errores por ahora, pero necesita algo más específico para el equipo de control de calidad)

Seguimiento de errores: Aún decidiendo esto, debe tener una estrecha integración con Pivotal Tracker)

    
respondido por el Jarrod Roberson 27.04.2011 - 18:06
1

Estas no son las cosas más fundamentales, pero si estuviera empezando desde cero, definitivamente estaría mirando:

Nube: algo así como los servicios web de Amazon para aprovisionar y ejecutar sus entornos.

Devops: automatización y creación de scripts de entornos de forma repetible.

Vagrant & Virtualización: aceleración del aprovisionamiento de entornos de desarrollo.

Entrega continua: configura sus sistemas, procesos, arquitectura, etc. de manera que pueda automatizar y acelerar las versiones y la entrega con un tiempo de inactividad mínimo.

Este tipo de cosas parecen ortogonales a un desarrollo, pero en mi experiencia, puede tomar mucho tiempo y ofrecer mucho valor si lo haces bien. También es mucho más fácil hacerlo si está comenzando con una pizarra en blanco.

    
respondido por el Benjamin Wootton 02.05.2012 - 12:03
0

En cuanto al control de código fuente, creo que estás en el camino correcto.

El problema con el software de seguimiento de defectos es que prácticamente no hay FOSS disponible. Jira es bastante buena, pero no estoy al tanto del esquema de precios. Le sugiero que eche un vistazo a FogBugz que parecen bastante asequibles. Además, no lo he probado personalmente, pero conociendo otros productos de esta empresa, es posible que desee probar YouTrack .

Otros ya sugirieron Integración Continua. Este es un camino a seguir, pero iría aún más lejos: podría pensar en Entrega continua .

    
respondido por el Paweł Dyda 27.04.2011 - 17:57
0
  

Control de fuente - Mercurial o Git - I   Personalmente me estoy inclinando más hacia   Mercurial basado en mi investigación y en la   hecho de que Mercurial parece ser   Más fácil de configurar en nuestro entorno.

Para el control de origen, debe pensar cómo está utilizando el control de origen. Mercurial HG es realmente bueno, si tus desarrolladores están fuera del sitio. El control de fuente también facilita la fusión.

Tortuga SVN es bueno de lo contrario. Además, si está desarrollando en .net y tiene algo de dinero, busque la versión de VS Team. Si está haciendo un montón de trabajo de base de datos con procedimientos almacenados, la versión del equipo tiene depuración de SQL. Es muy agradable. También puedes obtener svn integrado con VS, pero no es gratis.

  

Seguimiento de errores - Estoy perdido aquí. yo   He usado Bugzilla en el pasado, pero,   me hace temblar cuando lo uso.

Bugzilla, es muy útil y funciona bien en mi opinión.

  

Documentación - MediaWiki, Screwturn   Wiki, Atlassian (por supuesto, esto cuesta   dinero para que no sea ideal)

wiki es un wiki, la documentación está desactualizada. Si tiene un equipo de cuatro desarrolladores, probablemente los está haciendo trabajar tanto que no tendrán tiempo para documentar mucho. Pero si quieres mantener una wiki por todos los medios, úsala. Yo sugeriría charla de la fuerza de ventas para gestionar la comunicación / documentación. Es más de sitio colaborativo. No sé cómo configurarlo, pero para las personas no técnicas que se comunican con el técnico es un trabajo y es una interfaz de usuario fácil. Te da una sensación de facebook.

También no mencionaste pruebas de unidad. Recomiendo el caso Nunit que puede configurar para ejecutar pruebas unitarias a través de la consola, si desea configurar un cuadro de compilación para compilaciones nocturnas. Nuevamente este es el entorno .net.

También pruebas de regresión. Créame, se ahorrará muchos dolores de cabeza y un mejor control sobre la moral del equipo, si tiene una herramienta de prueba de regresión o le da a sus desarrolladores la opción y el tiempo para crear una para su software. No te arrepentirás y tus desarrolladores se quedarán contigo más tiempo. Una vez más, esto es en mi opinión arrogante.

    
respondido por el Erion 27.04.2011 - 18:20
0

En mi lugar de trabajo anterior, estábamos usando Trac (seguimiento de errores, planificación de proyectos, documentación) con Subversion: se integran bastante bien. No estoy seguro de cómo se integra con Hg o Git.

    
respondido por el Nemanja Trifunovic 27.04.2011 - 23:05
-2

Puedo contarte sobre tres configuraciones de desarrollo que conozco (la mía y dos de mis amigos).

Mi propia configuración (muchos programas están bien configurados):

  • Sublime Text 2 para toda la programación / edición de texto. Es multiplataforma y tiene 'herramientas de compilación' para varios tipos de programas (mi único problema es con Java, no tiene una ejecución de Java, solo un compilador de Java) y es completamente personalizable cuando se trata de fragmentos de código (texto autoexpansión), esquemas de color y herramientas de compilación (mi queja sobre java se anula aquí, porque yo solo podría hacer una).

  • Si me siento en la línea de comandos y, uso nano para mi editor de texto.

  • Git para todos los controles de versión. Tengo una sección de repo 'privada' en mi propio sitio web para proyectos personales que no quiero que la gente encuentre fácilmente o se metan con ellos. Uso GitHub para repositorios públicos y proyectos con los que no me importaría recibir ayuda de otras personas.

  • Terminal (para instalaciones de Linux) y Símbolo del sistema (para instalaciones de Windows). Controlo Git a través del terminal y no a una interfaz gráfica de usuario, y también lo uso para ejecutar mis programas Java. Mi única queja real es que tengo que usar rutas completas en Windows porque no tiene enlaces simbólicos, pero eso es solo Windows. Personalmente prefiero bash sobre dos.

  • Para la documentación, generalmente la escribo en los programas o escribo mis propios documentos para ella.

Configuración de Friend One (muchos programas están bien configurados):

  • Notepad ++ (Windows) o Gedit (Linux) como editor de texto. Ambos son gratuitos y extensibles, ambos tienen un api de plugin y algunos buenos complementos (me gusta el conjunto que viene con Gedit-Gmate). También tienen "herramientas de usuario" o atajos de comandos que puede ejecutar para ejecutar comandos personalizados en sus documentos abiertos (o incluso simplemente comandos personalizados para el sistema).

  • Git para el control de versiones. Más o menos la misma configuración que yo, también usa el Terminal / Símbolo del sistema / GitBash.

Configuración de Friend Two (programa A One para controlarlos todos):

  • Eclipse para todo. Eclipse es el único programa que abre.

  • Toda la documentación se realiza en línea con el código, generalmente utilizando docblock.

respondido por el dkuntz2 27.04.2011 - 22:22