Antecedentes
El año pasado hice una pasantía en un grupo de investigación en física en una universidad. En este grupo, usamos principalmente LabVIEW para escribir programas para controlar nuestras configuraciones, hacer adquisición de datos y analizar nuestros datos. Para los dos primeros propósitos, eso funciona bastante bien, pero para el análisis de datos, es una verdadera molestia. Además de eso, todos eran en su mayoría autodidactas, por lo que el código que se escribía era en general un desastre (no es de extrañar que todos los doctores decidieran rápidamente reescribir todo desde cero). El control de versiones era desconocido y era imposible de configurar debido a las estrictas regulaciones de software y red del departamento de TI.
Ahora bien, las cosas salieron sorprendentemente bien, pero ¿cómo hacen las personas en ciencias naturales el desarrollo de software?
Preguntas
Algunas preguntas concretas:
- ¿Qué lenguajes / entornos ha utilizado para desarrollar software científico, especialmente análisis de datos? ¿Qué bibliotecas? (por ejemplo, ¿qué usas para trazar?)
- ¿Hubo formación para personas sin experiencia significativa en programación?
- ¿Tenías algo como control de versiones y seguimiento de errores?
- ¿Cómo haría para intentar crear un entorno decente para la programación, sin interferir demasiado con los científicos individuales (¡especialmente los físicos son personas tercas!)
Resumen de respuestas hasta ahora
Las respuestas (o mi interpretación de ellas) hasta ahora: (2008-10-11)
- Idiomas / paquetes que parecen ser los más utilizados:
- Casi todos los encuestados utilizan el control de versiones; el seguimiento de errores y otros procesos son mucho menos comunes.
- El curso de carpintería de software es una buena manera de enseñar técnicas de programación y desarrollo a los científicos.
- ¿Cómo mejorar las cosas?
- No obligue a las personas a seguir protocolos estrictos.
- Cree un entorno usted mismo y muestre los beneficios a los demás. Ayúdelos a comenzar a trabajar con el control de versiones, el seguimiento de errores, etc.
- Revisar el código de otras personas puede ayudar, pero tenga en cuenta que no todos pueden apreciarlo.