¿Cuáles son algunas de las mejores prácticas para escribir paquetes de software específicamente para aplicaciones científicas y aprendizaje automático? ¿Serían relevantes las mismas prácticas utilizadas en el desarrollo de software ágil?

  • Adherirse a la reproducibilidad es una práctica recomendada, que primero viene a la mente. Los beneficios de este enfoque son bien conocidos y se pueden encontrar fácilmente en Internet, por lo que no voy a entrar en detalles sobre esto.
  • Adherirse a la flexibilidad sería la segunda mejor práctica. Mi justificación para esto es que las aplicaciones científicas con frecuencia tienen muchos factores externos e internos, que afectan los resultados y su calidad. Por lo tanto, la capacidad del software para configurarse y modificarse según los requisitos cambiantes y los diferentes escenarios parece una característica importante.
  • Adherirse al modelo de desarrollo de software de código abierto , que es popular incluso para el software general, es bastante importante para las aplicaciones científicas debido a la naturaleza altamente colaborativa en la academia y la investigación / ciencia (como sabemos, la academia y los círculos de investigación / ciencia es el entorno, lo que dio nacimiento al fenómeno del desarrollo de software de código abierto).
  • Las consideraciones de escalabilidad y rendimiento son más importantes para muchas aplicaciones científicas que para la mayoría de las aplicaciones de propósito general, teniendo en cuenta el aspecto del volumen de datos del modelo 3V / 4V de Big Data.
  • Con respecto a las prácticas de desarrollo de software ágiles , creo que, si bien son valiosas y podrían ser importantes para desarrollar algunas aplicaciones científicas (especialmente aquellas con un presupuesto más limitado), estas prácticas son menos importantes en este dominio debido a requisitos algo más relajados en términos de los cronogramas de entregables y la falta de estrés, generalmente asociados con la producción comercial de software comercial.