Scikit-learn Sprint
Tipo: Sprints
Nivel de Audiencia: beginner
Idioma: Español
Diapositivas: spanish
Lugar/Horario
Lab Cs. Económicas 1
27/09/2022, 10:00
Lab Cs. Económicas 1
28/09/2022, 10:00
Lab Cs. Económicas 1
28/09/2022, 14:00
Speakers/Ponentes
Un sprint es un evento que permite reunir personas con distintos conocimientos para contribuir en un proyecto de código abierto. En esta oportunidad estaremos trabajando sobre el proyecto scikit-learn, pero la misma metodología se puede adaptar a otros proyectos. Scikit-learn es una librería de aprendizaje automático de código abierto que permite aplicar métodos del aprendizaje supervisado y no supervisado. También proporciona varias herramientas para el ajuste de modelos, preprocesamiento de datos, selección de modelos, evaluación de modelos y muchas otras utilidades. La idea del sprint es ayudar a los participantes a dar sus primeros pasos en el mundo del código abierto, contribuyendo en la documentación, en ejemplos o en el código fuente.

Un sprint es un evento donde un conjunto de personas se juntan para contribuir a un proyecto de software. En general, se lleva a cabo a lo largo de un día, en un período de 6 a 8 horas. El objetivo de la actividad depende del perfil de personas al que está dirigido. Si el sprint está dirigido a personas que están comenzando a contribuir a proyectos de código libre, el objetivo es introducirlos en los distintos pasos que deben seguir para comenzar a colaborar en un proyecto. Si el sprint está dirigido a desarrolladores experimentados en el proyecto particular, el objetivo es concentrar sus energías en la solución de una serie de errores o la implementación de nuevas funcionalidades. En este caso, llevaremos a cabo un sprint para personas que están dando sus primeros pasos en el mundo del código abierto.

En el sprint cada persona puede trabajar de forma individual en las partes del proyecto que considere interesante. Pero, cabe destacar que, uno de los aspectos principales de los sprints es su carácter colaborativo. Así, se alienta a los participantes a reunirse de a pares para trabajar. Ésto hace más amena la experiencia del sprint, fomenta la colaboración y permite ampliar la red de contactos de los participantes. Esta forma de trabajar se conoce con el nombre de programación de a pares ("pair programming"). Un enfoque comúnmente utilizado de programación de a pares es la técnica de conductor-navegador (https://medium.com/@weblab_tech/pair-programming-guide-a76ca43ff389), donde el conductor escribe el código, mientras el navegador observa, verifica o sugiere cambios. A lo largo de la jornada, las personas pueden intercambiar roles a medida que lo sientan necesario. En general, es conveniente que la persona más experimentada sea la que toma el rol de navegadora, mientras la persona que está dando sus primero pasos sea la que maneja el teclado y mouse (conductora). Esto garantiza que ninguno de los miembros del equipo se pierda durante el desarrollo.

El sprint se basará en el proyecto de código abierto scikit-learn (https://github.com/scikit-learn/scikit-learn/). Scikit-learn es una librería de aprendizaje automático de código abierto que permite aplicar métodos del aprendizaje supervisado y no supervisado. También proporciona varias herramientas para el ajuste de modelos, pre-procesamiento de datos, selección de modelos, evaluación de modelos y muchas otras utilidades.

El sprint contará con la presencia (física y virtual) de desarrolladores del proyecto que brindarán soporte durante el evento, contestando preguntas, ayudando con problemas y revisando los "Pull Requests". Los desarrolladores, previo al sprint, filtrarán "Issues" aptos para personas que están empezando a contribuir. Además, se contará con mentores que no necesariamente son experimentados en el código fuente de scikit-learn, pero que con sus conocimientos pueden ayudar a resolver problemas con Git u otras herramientas generales como pre-commit, black o pytest. De esta forma, los sprint suelen ser sumamente beneficiosos para los participantes, ya que se reduce sustancialmente el tiempo que uno se encuentra "trabado" con algo (comparado con intentar empezar a colaborar individualmente, sin ayuda).

El día anterior al sprint se va a llevar a cabo un "pre-sprint" donde los participantes configurarán su entorno de desarrollo para poder aprovechar al máximo el sprint. Esto permite aliviar un poco la carga en la conexión a Internet del lugar el día del sprint ya que la cantidad de personas que van a descargar el repositorio será menor. El pre-sprint es un evento más corto, a lo más tres horas, donde los participantes descargan el repositorio, configuran Git e instalan los paquetes necesarios para contribuir en un ambiente conda. Al mismo tiempo, se responden preguntas que puedan tener con respecto a cómo contribuir, cómo configurar su ambiente de desarrollo o sobre los posibles "Issues" a trabajar.

Los requisitos para aprovechar el sprint son: tener cuenta de GitHub, conocimientos de Python, tener algo de experiencia utilizando scikit-learn, y algo de familiaridad con Git.

Para realizar preguntas en español durante el evento se puede utilizar el Discord de Data Umbrella (https://www.dataumbrella.org/). Para unirse al canal en español de Discord acceder al siguiente enlace: https://discord.gg/UR2Rz4tJ. Una vez hayan ingresado, pueden escribir un mensaje privado a Juan Martín Loyola en Discord (jmloyola#8427) para ser agregados al rol con privilegios para hablar en las mesas de audio.

Topics
scikit-learn, Código abierto