12 votos

¿Cuáles son las ventajas de emplear ágil de desarrollo de software metodologías para quants?

Hojeando el otro SE los sitios de la red, especialmente a los Programadores, a menudo me encuentro un gran apoyo para diversas ágiles metodologías de desarrollo de software, en particular en los distintos valores que se conoce como Programación Extrema (estoy pensando en la unidad de pruebas, estándares de codificación, etc. y también los principios SOLID, nomenclatura de consistencia). Sin embargo, ninguno de los investigadores cuantitativos sé que emplean estos métodos y principios de diseño en cualquier parte cerca tan rigurosamente como parece que algunos desarrolladores de software hacer. De hecho, muchos de estos conceptos son prácticamente desconocidas fuera de los departamentos de TI de muchas de las principales instituciones financieras.

Sería digno de mi tiempo para aprender y adaptar algunos de estos principios a mi trabajo, o es una pérdida de tiempo? Me gustaría sobre todo estar haciendo esto por mi cuenta, puesto que hay poco deseo por parte de mi jefe y colegas para cambiar la forma de hacer las cosas ahora. La mayor parte de mi código se tiran de todos modos, y a menudo el cualitativo conclusiones a las que llegan son más importantes que la re-usabilidad. Es decir, yo soy normalmente algunas pruebas de hipótesis, y una vez que he llegado a una conclusión, que el código no es realmente necesario. Tengo de vez en cuando para volver a escribir grandes fragmentos de código para automatizar el cálculo de propiedad de los indicadores que se han desarrollado, pero por lo general no tienen idea de lo que va a terminar en la producción hasta que estoy a punto de terminar con la investigación. Además, incluso puede ser de valor en la revisión de todo el código como es re-escrito ahora que tengo un objetivo final en mente.

8voto

urini Puntos 8233

Sólo he visto un framework que funciona en investigación en un entorno de desarrollo orientado a que es el modelo en espiral. El uso de intentar metodologías ágiles es imposible, ya que la frontera de tareas no se conoce. Ágil es muy útil para la construcción/mantenimiento de aplicaciones conocidas conocidos con la funcionalidad y el problema de los espacios. No es útil para la investigación orientada al desarrollo desde ágil requiere buenas estimaciones para el plan de lanzamientos (se podría decir esto acerca de casi cualquier metodología, pero es muy importante ágil).

En un equipo que utiliza para el trabajo en el modelo en espiral, fue algo como esto:

  1. Tres semanas de investigación
  2. Tres semanas de la construcción
  3. Tres semanas de integración, pruebas y despliegue de

Pensé que funcionó muy bien. En un equipo más grande que el que tengo ahora me gustaría utilizar una variante de esto otra vez.

Todo lo que se dijo metodologías de desarrollo de software son una guerra religiosa y creo que cualquier cosa puede funcionar. Honestamente creo que hasta que no haya varias personas que trabajan en el mismo componente y un equipo más grande ágil o cualquier otra metodología que se va a muy bajos rendimientos como todos los enfoques están tratando de resolver el problema de la sobrecarga de la comunicación en un grupo grande de personas.

En nuestras 3 el hombre de negociación de la tienda utilizamos el siguiente:

  • No formal de la metodología de desarrollo de software
  • Pivotal Tracker para el seguimiento de tareas
  • Github para control de código fuente
  • Central de servidor de compilación con el análisis de código estático para hacer cumplir los estándares de codificación, especialmente cosas como las funciones que no nos permiten
  • Las revisiones de código. Leemos cada uno de los otros código. En mi experiencia, las revisiones de código más que a nada conducen a un mejor código.

Lo que funciona para mí puede no funcionar para usted. Recuerde que si usted es serio medir el antes/después de la productividad con la introducción de cualquier metodología. Si usted no puede ver una mejora en la calidad del código/características enviado están escupiendo en el viento.

7voto

lomaxx Puntos 32540

"Programación extrema" es una palabra de moda que ha recibido un montón de bombo en los últimos años. Sin embargo, es importante tener en cuenta que es sólo un elemento más en la larga lista de desarrollo de SW filosofías y que no es, contrariamente a sus defensores' de las reclamaciones de una panacea.

En el otro lado es muy beneficioso para seguir un par de reglas simples, mientras que la escritura, incluso pequeños trozos de código. Fundamentales para la que ya se ha mencionado (cumplimiento de un estándar de codificación y una constante de convención de nomenclatura) me gustaría añadir extenso comentario.

Para su modelo de uso ("la mayor parte de mi código se tira a distancia" y "conclusiones a las que llegan son más importantes que la re-usabilidad") sugeriría que la configuración de un simple repositorio de control de versiones. Esto puede sonar como una exageración, pero la OMI se beneficiará en el largo plazo:

  1. Todas las piezas de su código en un solo lugar y son fácilmente accesibles. Mi experiencia me dice que tarde o temprano tendrá que quiere, al menos, echar un vistazo a algunos de código escrito en el pasado - incluso si usted pensaba que no iba a ser ya necesarias.
  2. El seguimiento de cambios es trivial. La necesidad de mirar / volver a una versión anterior se realiza con gran frecuencia. Tener un repositorio de código fuente a la mano, entonces es un regalo del cielo. Para los fines mencionados anteriormente, usted no necesita todas las características de lujo de los modernos sistemas de control de revisiones - sólo un repositorio central y lineal de la historia. Te sugiero ir con Mercurial - no es necesario para la configuración de un servidor, es multiplataforma y simple de usar. También tiene una bonita GUI llamado TortoiseHg. Para evitar tener repositorios separados para diferentes piezas de código que se puede utilizar directorios dentro de un repositorio grande. El repositorio entero y Mercurial binarios se puede poner en un pen drive - no hay necesidad de instalar nada si no quieres.

La unidad de pruebas es muy útil y beneficioso para regular el desarrollo de software. No estoy seguro de si va a ayudarle en su trabajo (de investigación), aparte de la adición de carga adicional. Pero sin duda empezar a pensar en ti tan pronto como usted nota que usted está transformando algunos de su código en por ejemplo, una biblioteca de funciones (o nada) que está destinado a ser re-usable). Y, por supuesto, mantener su unidad de prueba en su repositorio.

Para el tipo de trabajo que yo había también adhieren a YAGNI y BESO principios. (Los artículos de Wikipedia sobre ellos son suficientes para obtener un buen conocimiento de ellos).

PS Por bs libre de ver en el desarrollo de SW recomiendo obras de Frederick Brooks.

4voto

Jon Tackabury Puntos 10999

Hay algunos Ágil beneficios que se obtendrán, incluso si usted es el único programador.

  • Usted puede sentir tonto haciendo un scrum por sí mismo en la mañana. Pero usted puede encontrar que es un beneficio para el plan de lo que te gustaría trabajar en ese día, y pensar acerca de lo que usted puede ser que necesite ese día (especialmente si usted necesita para leer acerca de la solución de un quant problema).
  • La planificación de lo que será publicado en la próxima (corto) ciclo de liberación es una valiosa habilidad que puede ayudar a definir el proyecto como un todo. Estimar el tiempo necesario para la liberación de las características y la medición de tiempo real que le ayudará a evitar la fantasía estimaciones y ayudarte a evaluar tus habilidades como desarrolladores. Le ayuda a pensar de forma global, acerca de la estrategia de software (creo Campo de Marshall); su tendencia podría ser la de pensar localmente, en las trincheras.
  • Unidad de construcción de pruebas será el servidor de usted maravillosamente en dos maneras. En primer lugar, los documentos de lo que han hecho y cómo utilizar sus clases bajo prueba. (Esto funciona bien cuando vas a volver varias semanas o meses y no puede recordar cómo utilizar la clase.) Segundo, y más importante, te ayuda a pensar sobre el contrato de software, que es, qué objetos son los responsables de hacer.

Una palabra acerca de los principios generales de diseño: si usted se encuentra tirar de grandes piezas de código, usted puede necesitar para abstraer sus clases. Por ejemplo, si existen métodos que todos los de renta fija de capital a responder, como de interés nominal o valor nominal, entonces tal vez usted necesita un resumen de renta fija objeto. Si hay campos que todas las acciones objeto, tal como un CUSIP o el nombre de una empresa, considere la posibilidad de un resumen de la equidad objeto con los campos.

3voto

Bob Somers Puntos 4186

Como un desarrollador ágil y quant finanzas programador, creo que la unidad de pruebas es de un valor incalculable. Porque realmente nunca se sabe si el código está haciendo lo que se supone que debe hacer sin pruebas. ¿Cómo sabe usted que su código es el cálculo de su propiedad indicadores correctamente?

Usted probablemente pasó, el nuevo código y comprueba el resultado en contra de algún otro código o sistema de que se sabe que es correcto. Eso es precisamente lo que la prueba es. La única diferencia es que en lugar de hacerlo una vez manualmente, puede guardar el resultado esperado, como parte de una prueba.

Esto tiene varias ventajas

  1. Usted puede revisar su código en cualquier momento, en un par de minutos con casi ningún esfuerzo.
  2. Puede refactorizar el código y estar seguro de que es correcta.
  3. Usted puede mejorar la calidad de la prueba. En lugar de hacer una prueba rápida una vez, usted puede ahorrar una gran cantidad de los resultados esperados. De esta manera se minimiza la posibilidad de errores pequeños que sólo aparecen de vez en cuando. Por ejemplo, en lugar de comprobar que un par de filas de los datos de los indicadores es correcta, se puede verificar que es correcta para miles de filas y docenas de activos.
  4. Usted puede crear un nuevo código desde cero para la producción y el uso de las pruebas para verificar que es correcta.

Creo que la unidad de pruebas es particularmente importante para las finanzas cuantitativas debido a que los resultados intermedios son en realidad nunca se comprobó. Por ejemplo, puede crear indicadores personalizados, pero los resultados son utilizados por un algoritmo.

He encontrado El Arte de Pruebas de Unidad fácil de usar y de entender. Es para .NET programadores.

1voto

Can Berk Güder Puntos 661

Una parte importante de la investigación es la reproducibilidad de los resultados. No hay punto de sacar conclusiones, si usted no puede reproducir los datos de copia de seguridad. Para esto usted necesita, al menos, una forma organizada de almacenar el código, de modo que usted puede encontrar lo que fue el algoritmo que se utiliza para producir la gráfica. El código fuente repositore es una forma ideal para hacerlo.

Por la misma razón, las pruebas de unidad son útiles en la investigación porque te dan un mejor garantía de que el código que realmente hace lo que hace.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X