5

Es posible que la respuesta a esta pregunta sea simplemente un software estándar de seguimiento de errores como jira o fogbugz, pero estoy esperando que alguien conozca un sistema mejor para lo que estoy describiendo .Cómo rastrear las peculiaridades extrañas de un proyecto

Mi proyecto más reciente requiere un lote de peculiaridad de configuración para ponerme en una posición donde realmente pueda iniciar una sección de codificación. Por ejemplo:

  • Una serie de intrincados comandos internos de la compañía antes de que pueda instalar un SSH.
  • Asegurarse de que las clases de terceros que realizan llamadas externas tienen configuración de opciones de la empresa proxy interno - y al mismo tiempo asegurándose de que éstos suele ajuste pueden configurar cuando se instala en un entorno de producción
  • Asegurarse de que el proxy está configurado antes de instalarlo pera paquetes.
  • Otras cosas similares, en su mayoría relacionadas con la seguridad interna de TI y hacer que funcione con módulos y paquetes.

individualmente ninguna de estas cosas es un gran problema, y ​​he escrito muchas notas a mí mismo con respecto comandos exactos y Adiciones que he hecho, pero están actualmente en un documento de texto general y que va a ser Es difícil recordar exactamente dónde lo que necesito está muy por debajo de la línea. También tenemos varios nuevos empleados comenzando pronto y les daré un tiempo más fácil para configurar sus entornos de programación.

Como dije, no son exactamente 'caprichos de programación', sino simplemente el violín constante que se produce antes de que la programación comience en serio. ¿Alguna idea sobre la mejor manera de documentar estas cosas para mi propia cordura y la de las generaciones futuras?

Respuesta

7

Utilizamos una wiki para alojar instrucciones como esta. Facilita que todos conozcan un lugar común para acceder a la información y mantenerla actualizada si las cosas cambian en los pasos.

Si hay partes que se pueden automatizar, es una buena idea, pero siempre creamos una página para la configuración del entorno de desarrollo si requiere una configuración no estándar que alguien tendrá que repetir.

+4

El punto clave aquí es "lugar común". Sea cual sea el método que elija (wiki, seguimiento de fallos, Word doc, lo que sea), asegúrese de que es el ÚNICO lugar donde las personas deben buscar esta información. – Ipsquiggle

6

Encapsula cada una de estas tareas en un script de algún tipo (bash, python, applescript, autohotkey, lo que sea apropiado para la tarea).

A continuación, cree varios meta-scripts para llamarlos. P.ej. "set_up_everything.bash".

En esencia: en lugar de perder tiempo escribiendo todo lo que necesita hacer, dedique un tiempo a escribir un script/programa que haga todo lo que necesita hacer.

Si los scripts se escriben de manera clara, también se convierten en una forma definitiva de documentación (como cualquier programa).

Editar:

Al releer su pregunta, esto también se ocupa firmemente su punto acerca de ayudar a los nuevos miembros del equipo con conseguir hasta a la velocidad: hacer que se ejecuten las secuencias de comandos y bam! Y si los scripts no funcionan (debido a las diferencias en el entorno, etc.), brindan un buen paso por paso de exactamente las acciones y los comandos que se deben realizar.

1

Plan A: elimine la dependencia de los sistemas externos estableciendo un entorno de prueba adecuado que pueda controlar.Esto puede implicar la creación de bases de datos ficticias, simulacros de servidores SOAP (SoapUI Mockservices), etc. Debería tratar de llegar a un punto en el que pueda tratar todos los elementos externos como cuadros negros, que puede controlar con estos servicios simulados/falsos/auxiliares , con una mínima reconfiguración (como el intercambio de archivos .ini, por ejemplo).
Idealmente, sería un "dispositivo" de entorno de instalación directa, como un archivo zip de directorio que contenga las bases de datos, ejecutables, etc. necesarios. Quizás en una unidad flash.

No, yo tampoco vivo y trabajo en un entorno tan utópico. Pero esto es, como lo visualizo, cómo debería hacerse.

Plan B: suponiendo que no se puede hacer lo anterior, está atascado con pruebas contra externos tales como servidores y redes "en vivo". es decir, su consulta de base de datos se ejecuta contra el servidor de base de datos de prueba de otra persona, y espera que tenga la misma información que la última vez que lo hizo. Por lo tanto, debe tener un conjunto mínimo de pruebas que se puedan ejecutar para garantizar que el entorno externo sea el mismo que el de la última vez. Podría ser ayer, el mes pasado, el año pasado. Supongamos que necesita recuperar registros de empleados de la base de datos de pruebas de recursos humanos. De acuerdo, tenga una aplicación de prueba que asegure que pueda conectarse, iniciar sesión, consultar los registros y comparar el conjunto de resultados con el conjunto de resultados "último producto conocido". Ahora estás listo para irte. Si no llega tan lejos, trabaje en ello (corrija su nombre de usuario, puntos finales, nombres de host, proxy, configure una cuenta, actualice los controladores, etc.) ANTES de preocuparse por la codificación/prueba/demostración del resto del sistema. Esto ahorrará mucho tiempo y debería evitar el desgaste de nuevos desarrolladores que abandonan y abandonan después de 3 días porque no funciona.

Actualización: Y todo lo que hace, comprobar en el control de versiones para que pueda volver, comparar, etc ..

2

secuencias de comandos de escritura para automatizar esto. El tiempo invertido en hacer esto se pagará una y otra vez: ahorrará tiempo día a día y ahorrará tiempo al traer nuevos desarrolladores al redil.

Es posible que necesite un proyecto separado "bin" separado de la base de código para estas herramientas. Comience con las tareas más fáciles y avance para completar todas las piezas. SSH se puede escribir de forma segura con los pares de token correctos. Herramientas como capistrano o chef son bastante populares. El enfoque es una pequeña pieza a la vez, y el objetivo, tal vez no lo logre, es la automatización completa.

Hace un par de años esto habría sonado como una locura. Pero en estos días, todos y cada uno de nuestros proyectos se pueden revisar y ejecutar sin complicaciones. (Un efecto secundario es que la integración continua es trivial de configurar). Incluso es posible tener un solo botón que aprovisiona un servidor de AWS, instala y SO, todas las herramientas necesarias, revisa nuestra aplicación desde Github y la implementa. ¡Lo hice el otro día! ¡Tener fe!

Cuestiones relacionadas