Aprendiendo del Open Source

La primera vez que escuché la frase "Google summer of code", y siquiera antes de entrar a la página del proyecto, imaginé que se trataría de una reunión de nerds en la playa, al más puro estilo de La Venganza de los Nerds II.
Apenas ingresado al sitio, descubrí que lo único que había de "Verano" en el título se refería a la época del año en el hemisferio norte.
Inspirado en ese gran proyecto de Google cuyos números a la fecha son:

13,000+ students, 104 countries 12 years, 607 open source organizations 30,000,000+ lines of code

surgió, a raíz de una charla de egresados que hicimos a fines del 2016 en la Facultad de CyT de la UCA con @martinezjavier, la recomendación sobre la que ambos coincidimos; que involucrarse en un proyecto Open Source contribuiría ampliamente a su formación como desarrolladores e integrantes de un equipo de trabajo.

El Decano Dr. Luca Cernuzzi tuvo la idea y nos brindó el apoyo para llevar la experiencia a la materia de Ingeniería del Software 2, de la carrera de Ing. Informática.

Javier y yo le dimos un poco más de forma a la idea, y luego recibimos un gran apoyo de empresas del medio local, y del DEI.

Debido a la fuerte influencia del modelo de Google (y a la escasa chispa de imaginación que tuvimos en el momento de crear el documento de invitación :), decidimos llamar también a esta primera iteración Uca Summer of Code (USoC). El proyecto empezó a gestarse en las últimas semanas de nuestro verano @Paraguay, así que algo de summer tuvo.

Comentaré sobre nuestra experiencia como Sodep y mentores en otro post más adelante. Mientras tanto, aquí les dejo lo que escribieron los dos alumnos a quienes tuve la oportunidad de acompañar en la aventura.

Transcribo prácticamente as-is lo que escribieron; les pedí explícitamente que lo hicieran en lenguaje lo perro en las partes que así lo consideren, y como si estuvieran hablándole a alumnos de futuras ediciones del USoC.

Experiencia de Joaquín Olivera Blog de experiencia mentoría Materia SE2 con Ale Feltes :
"Me costó mucho saber por dónde empezar a escribir sobre el blog de experiencia de la materia, un poco porque es una experiencia nueva y también lo es para la materia. Se cambió una estructura de algún tiempo atras, para tener como desarrollo el USoC. El USoC, es una forma de contribuir a la sociedad con nuestro trabajo, y la forma en que se llevó a cabo, fue eligiendo un proyecto Open Source, donde podamos agregar algún valor, feature y solucionar problemas que los autores de los mismos, hayan visto en el camino del desarrollo.
Dentro de las propuestas que el profesor de la materia y decano de la facultad, Luca Cernuzzi, había presentado uno de desarrollo Android, con la empresa en el ámbito local, Sodep.
Rocket Chat, proyecto original, era un proyecto muy interesante, aunque complicado, de una aplicación de mensajería, que prometía llegar a lo más alto. Este no prosperó por los cambios que estaba sufriendo el proyecto al cambiarse al Lenguaje de programación Kotlin.
Nuestro mentor, el Ingeniero Ale Feltes, propuso un cambio de proyecto, para poder ir avanzando con el trabajo sin tener mayores complicaciones, como las íbamos a tener con Rocket. Esto es algo que puede o suele pasar en cualquier proyecto o emprendeduría, cambios estructurales que el project leader debe analizar y tomar medidas respecto a estos, asi que esto también nos ayudó a ver un poco la forma de trabajo que se debe tener.
De ahí salió el trabajo en el que somos colaboradores, Bip4Cast. Consiste en una aplicación para poder diagnosticar a posibles o potenciales pacientes con bipolaridad y otros trastornos psicológicos mediantes test, que se le envía a médicos de un hospital para su estudio.
Al principio del trabajo te da un poco de miedo, por la novedad y el cambio, y también por lo que se exige como culminación del trabajo, para poder darse como aceptado el proyecto. Con el correr del tiempo, la verdad, me pareció una experiencia más que necesaria para mi desarrollo como profesional.
Uno aprende metodologías nuevas, formas de trabajo, herramientas, términos, shortcuts, y procesos que son mucho más útiles, a mi parecer, a una vida laboral como la que tenemos por delante los que estamos por recibirnos en esta carrera.
Podemos detallar las herramientas, que fueron el sistema de versionamiento de Git, con el que pudimos trabajar sin problemas, hacer errores, sabiendo que podríamos volver a la última versión funcional sin problemas, además de permitir al mentor ir viendo nuestros commits sin problema cada vez que subíamos cambios a nuestros repositorios. Android Studio que es el IDE que usamos para trabajar con la aplicación directamente y usamos el Sonar Runner para realizar los análisis al código que íbamos generando. Esta herramienta del Sonar fue propuesta por la metodología que se llevó a cabo, y aparte estuvo rodeada de mucho aprendizaje en este sentido de la forma en que se trabaja con el código.
Se pudo probar lo que es tener un servidor en la nube, probé algunos servidores gratuitos también como forma de práctica, y todo esto fue proporcionado por el mentor, que estuvo muy involucrado con el trabajo. En este sentido, es muy importante esta participación, ya que uno le saca el mayor jugo a la experiencia. Probamos algunos servidores gratuitos como para completar la experiencia, pero es muy interesante tener una idea en esta área, ya que es muy común y muy utilizada en proyectos, trabajos, etc. Toda esta configuración, en el proceso, te va abriendo ideas y contestando preguntas a dudas que a lo mejor, la clase no te pudo sacar o dejar en claro el proceso. Toda persona es diferente, pero para mí, es mucho más interesante ir aprendiendo a la vez que hago, cosa que lasn clases no me puede proporcionar, en su mayoría.
Una de las cosas importantes de esta clase de experiencia, es la oportunidad de conocer personas en el medio. En este caso conocimos a personas que están trabajando en una empresa, como lo es Sodep, y en cierta forma, uno se puede mostrar como es.
Si tuviera que ir evaluando, el proceso que se tuvo de esta experiencia, tendría que aprobarlo. En nuestro caso, el mentor fue muy bueno y te deja las ganas de seguir trabajando con personas asi, con una atención prácticamente desinteresada de su parte.
Lo que más me gusta de este tipo de experiencias, es que sin duda alguna, cuando estoy trabajando sobre algo que se puede ir probando, “palpando” con el uso, mostrando y ver como va funcionando las cosas en un ámbito más práctico para mi es mucho más atrayente que ir trabajando sobre cuestiones académicas que se suelen resolver en la Universidad, me da muchas más ganas de trabajar en este tipo de proyectos, que en los que se ofrecen en clase, donde la mayoría de los mismos, o están desactualizados, o son de poco uso, y poca utilidad. No por esto, hay que pensar que la documentación fue una parte insignificante en el proceso, Ale nos metió un montón de presión y trabajo en esta área como para no olvidarnos nunca como se presenta un informe aceptable, pero bueno, no hay forma de zafarse de esta parte, ya que es parte primordial, aparte del programa y las configuraciones. Y menos cuando estás en la Universidad.
Como para ir concluyendo mi blog sobre esta experiencia, aparte de agradecer por todo al mentor, su paciencia y dedicación; también a la persona que fuese responsable del cambio de la estructura de la materia y a los mentores que se pusieron las pilas para este tipo de proceso. Espero que se mantenga en los años posteriores."

--- ooo ---

Experiencia de Néstor Valdez : "Cuando el profesor Luca nos dijo al comienzo del semestre que el trabajo práctico de la materia no sería el mismo que en semestres anteriores y que en cambio sería uno completamente nuevo, con un enfoque a lo que es OpenSource, la primera impresión fue positiva, pero al mismo tiempo sabía que íbamos a ser el “grupo piloto”, los conejillos de india, y que una u otra cosa podría salir mal. Si bien el concepto era muy bueno, en principio la ejecución no lo fue tanto. Empezamos mal de entrada, porque se acercaba la fecha de la primera entrega y aún no teníamos los temas definidos, ni siquiera había suficientes mentores como para cubrir la cantidad de alumnos en el curso. Creo que dos semanas antes de la primera entrega recién se acoplaron el resto de los mentores y ya podíamos elegir nuestros temas, sistema que también hay que mejorar porque había una leve disputa por algunos temas y con seguridad más de uno quedó con un tema que en realidad no era el que quería.
Algo que se notó enseguida es que nadie tenía ningún tipo de experiencia con las herramientas que alguno de los trabajos demandaba, y en 9no semestre aprender una nueva herramienta puede ser medio complicado (por falta de tiempo), y creo que en ese sentido no la pasé tan mal porque ya tenía algo de experiencia con Android Studio y Java, así que me salve un poco por ese lado. Pero puedo hablar por algunos de mis compañeros que me decían “No tengo ni idea de qué hacer”. Y ninguno tampoco tenía experiencia usando Git. El Ing. Parra nos dio una clase rápida de que es, como funciona, y cómo debemos usarla para nuestros respectivos proyectos y a partir de allí cada quien, por su cuenta, como debería ser, después de todo somos estudiantes universitarios. Aunque salí de esa clase entendiendo casi nada porque fue medio una “clase sorpresa” y nadie había traído sus respectivas computadoras (algo para mejorar para el siguiente año).
Otro de los problemas, que al menos por mi parte no experimenté, pero que aun así quiero resaltar, es que había mentores que (asumo que por falta de tiempo u otras responsabilidades) no les hacían mucho caso a sus respectivos alumnos, entonces muchas dudas no podían ser aclaradas. Incluso me contaron que a veces pasaban días sin responder, lo que obviamente enlentece el proceso.
En mi caso nuestro tutor nos molestaba cada semana luego, no nos dejaba en paz (en un buen sentido). Y supongo que gracias a eso fuimos uno de los grupos que la verdad no tuvo mayores inconvenientes. Nos reuníamos una vez a la semana vía Skype, programábamos las actividades para la semana ya sea tocar directamente el código, o quizá investigar sobre alguna herramienta que nos ayudaría más adelante. Esto nos permitía tanto a mi como a mi compañero, no dejar el proyecto de lado y llegar relativamente tranquilos a la fecha de entrega final.
Hablando concretamente de mi proyecto, no sufrí demasiado (como otros si lo hicieron). Se nos presentó herramientas muy interesantes que no solo sirvieron para este proyecto (SonarQube), sino que también para cualquier otro que desarrollemos de aquí en más. Nos dio la posibilidad de trabajar con aplicaciones móviles que de por sí tiene su encanto y hace el trabajo mucho más interesante en mi opinión.
Por lo menos un párrafo voy a dedicar a nuestro mentor el Ing. Ale Feltes, que si bien fue exigente con nosotros desde un comienzo (7/10), nos guió de excelente manera para asegurar que tanto Joaquín (mi compañero) como yo termináramos todos los ítems que se nos fueron propuestos al inicio de este proyecto, nos instruyó en nuevas herramientas y compartió aspectos de su vida laboral que obviamente nos enriquecen y de cierta manera inspiran para seguir adelante.
Para concluir diré que: La propuesta fue interesante, diferente, con muchos aspectos positivos que lo hacen un excelente proyecto que a mi parecer debería continuar de ahora en más como trabajo práctico del curso de SE2, porque aporta conocimientos imprescindibles para la vida laboral y proyectos colaborativos que hasta este momento la verdad no habíamos tenido. Es una idea nueva cortesía de Google. Pero hay muchos detalles por pulir, tanto de parte del Profesor Luca, como quizá también de algunos mentores. Con seguridad los siguientes grupos se encontrarán con un curso muchísimo mejor planteado, además también los tutores contarán con más experiencia y tiempo para preparar propuestas interesantes y atrayentes para el alumno que al final es quien realmente sale ganando porque tiene la oportunidad de aprender algo nuevo, dar su aporte y de paso, si todo sale bien, tener un 50% de la nota asegurada sin rendir un parcial. Así da gusto.
Esta fue mi experiencia (y la de algunos compañeros) en unas 800 palabras."

P.D. La idea para la imagen del header la quité de https://wiki.openmrs.org/display/docs/Home