Charla orientativa para estudiantes de secundaria

El pasado viernes estuve participando de un encuentro de orientación vocacional en la sede del CBC de Ciudad universitaria. Casualmente yo había participado de un encuentro similar en el mismo lugar en el año 1997, cuando estaba terminando la secundaria. A diferencia de aquella vez, en esta ocasión fui orador y no oyente.

El encuentro estuvo organizado por el área de orientación vocacional del CBC y pretendia reunir a representantes de las distintas carreras de informática dictadas en la UBA. En este sentido habia una persona de la Facultad de Ciencias Económicas, donde se dicta la carrera de Licenciatura en Sistemas de información de las Organizaciones y una alumna avanzada de la Facultad de Ciencias Exactas y Naturales, donde se dicta la carrera de Licenciatura en Ciencias de la Computación. Y finalmente estaba yo, en representación de la Facultad de Ingeniería, donde se dictan las carreras de Ingeniería en Informática y Licenciatura en Análisis de Sistemas.

El encuentro duró unas dos horas y comenzó con una breve charla de un representante de la CESSI, quien habló sobre las oportunidades laborales en Argentina en la industria del software.

Aquí estan las diapositivas que utilicé durante en encuentro.

Desarrollador y facilitador, no way

Como ya comenté en un artículo anterior, desde hace un tiempo estoy trabajando en un proyecto Java, una tecnología que no domino plenamente.

El miércoles pasado participé de una retrospectiva de este proyecto que fue facilitada por Alan y que me dejó pensando un buen rato. Ocurre que durante la retrospectiva Alan hizo dos sugerencias puntuales que yo mismo he hecho a otros equipos en reiteradas ocasiones pero que curiosamente esta vez no las sugerí a mi propio equipo.

Todo el viaje de vuelta a casa me lo pasé analizando esta cuestión y finalmente llegué a una conclusión que me convenció: mi falta de pleno dominio de Java me obliga a poner demasiada energía en cuestiones técnicas, lo que me hace perder de vista algunas otras cuestiones.

Luego de pensarlo por un par de días y de consultarlo con algunos amigos me animo a arriesgar:

Para que un desarrollador pueda ocupar el rol de facilitador en su equipo es necesario que tenga un buen dominio de las cuestiones técnicas con las que debe trabajar cotidianamente.

(posiblemente esta afirmación no tenga aplicación universal, pero definitivamente aplica a mi)

ASSE 2014, ya casi estamos

El programa del simposio ya está listo. Por un lado tendremos las actividades tradicionales del simposio: presentación de trabajos y conferencistas y por otro lado tendremos algunas actividades nuevas.

En lo que respecta a presentación de trabajos, tendremos 19 presentaciones de trabajos originales y 8 comunicaciones orales de trabajos que han sido presentados en otros simposios internacionales.

En lo que respecta a las conferencias tendremos 2 de sponsors (Red Hat y Pragma) y 3 más de invitados especiales. En este sentido contaremos con Esteban Feuerstein (Fund. Sadosky) quien hablará sobre Big Data, Alvaro Ruiz de Mendarozqueta y Juan Gabardini quienes hablarán sobre Métodos ágiles. La descripción de estas conferencias está publicada en la página del simposio.

Adicionalmente a la clásicas actividades mencionadas, tendremos dos novedades.

La primer novedad es un taller de Arquitectura emergente dictado por Diego Fontdevila (requiere inscripción aparte pues tiene cupos limitados). Pueden encontrar más detalles de este taller aquí.

La segunda novedad es un espacio de debate sobre Enseñanza de la ingeniería de software. Este espacio tendrá lugar el Jueves 4 de Septiembre a partir de las 16.30 hs. La dinámica de este espacio estará dividida en dos actividades y Luciana y yo seremos los facilitadores. En primer lugar tendremos sesiones en formato Lightning talks, la idea es que cada participante que lo desee pueda presentar en 5 minutos su enfoque para la enseñanza de ingeniería de software y las dificultades que suele afrontar (puede que el tiempo de presentación varie un poquito dependendiendo de la cantidad de interesados en presentar). Luego de estas presentaciones, pasaremos a un debate con formato Fishbowl.

El detalle completo del programa está disponible en la página del evento.

Se viene el libro….

Hace un par de días entró en imprenta el libro de ingeniería de software que empecé a escribir hace unos dos años junto a un grupo de colegas de la Fiuba.

La idea era escribir un libro sobre métodos ágiles, luego de un par de charlas refinamos el objetivo y decidimos escribir un libro sobre métodos ágiles que cubriera el proceso completo de desarrollo de software.

Una de las motivaciones para escribir el libro fue que no existen en la actualidad (o al menos no han tenido mayor difusión) libros escritos en castellano sobre métodos ágiles que cubran el proceso de completo de desarrollo de software. Los libros existentes sobre esta temática escritos en castellano están enfocados en algún aspecto particular. Por ejemplo los libros de Martín Alaimo tienen un foco humano/de gestión, mientras que el libro de Carlos Blé está enfocado en TDD. Existe un libro que cubre en gran medida el proceso completo de desarrollo software llamado Scrum y XP desde las trincheras, pero es una traducción de una obra originalmente en inglés.

Al mismo tiempo, la motivación va más allá del idioma. Los métodos ágiles ponen un foco importante en las personas y en ese sentido creemos que la idiosincrasia latinoamericana merece un libro a medida escrito por latinoamericanos.

El libro, más allá de lo que el título pueda sugerir, es un libro de ingeniería de software. De hecho la mayoría de los contenidos son parte de la materia que dictamos con @pablitosuarez en UNQ.

Todos los autores somos docentes y también trabajamos en la industria, por ello creemos que el libro puede resultar muy útil como libro de texto para el dictado de una materia y para profesionales de la industria con intenciones de conocer y experimentar con métodos ágiles.

En los próximos días compartiré algunos detalles y curiosidades del libro, por el momento les dejo una de las imágenes del libro que más me gusta.

15.1

ChiliProject, my favourite project management tool

About 2 years ago I started working with Tipit guys. My first task was to migrate their project management tool. At that time they were using a tool called Bugnet that was build with C# and they wanted to move to ChiliProject that was built with Ruby. I had experience with both technologies so I was a good candidate to do the job. The migration was successful and after that, we continued working together.

For almost two years I have worked in several Tipit projects and in all of them we have used ChiliProject. In all this time we have also added several new features to ChiliProject and the good news is that all these features are open source and anyone can get them from GitHub.

What I like about ChiliProject is that it provides several features beyond issue tracking, here is a brief list of the most interesting features in my opinion:

  • Ability to define different kind of issues with different fields and workflows
  • Ability to create/update issues by email
  • Ability to connect to source code repository and link commits with issues
  • Discussion Forums
  • Project roadmap definition support
  • Project calendar
  • Wikis
  • File sharing

Beyond these features, ChiliProject is a open source tool, built on Ruby on Rails and very extensible.

El cambio tecnológico más duro de mi carrera

No fue en 2002 cuando pase de hacer sitios web en Php a trabajar con la incipiente (en aquel momento) tecnología .Net.

No fue cuando en 2005 cuando tuve que programar un web server con C++.

No fue en 2009 cuando hice mis primeras experiencias en plataformas Cloud. Ni tampoco cuando pasé de Subversion a Git.

No fue cuando en 2010 cuando me metí con Ruby.

No fue cuando a fines del año pasado volví a trabajar con Php.

Fue en este último mes y medio cuando pasé de trabajar en Ruby a trabajar en Java.

Venía acostumbrado a trabajar desde la terminal con rake, usando Sublime como herramienta de edición de código e Irb como espacio de experimentación. Sinceramente me sentía muy cómo

El pasaje al mundo Java me resultó durísimo. Si bien desde 2004 siempre he estado haciendo algunas cosillas en Java, la realidad es que eran cosas más bien pequeñas o bastante específicas. Pero ahora estoy trabajando en un proyecto de una complejidad bastante mayor en el cual se utilizan diversos frameworks y componentes de infraestructura.

Por un lado el lenguaje me resulta muy incómodo, tipado estático, chequeo de excepciones, ausencia de lambdas (Java7) y una pobre implementación de generics son algunas de las cuestiones que primero vienen a mi mente.

Por otro lado Java es posiblemente de las tecnologías más pesadas que he utilizado (si, incluso más pesado que C# con Visual Studio incluido). Mi maquina (4 GB de memoria y disco de estado sólido) sufre cada vez que intento correr las pruebas de integración o iniciar una sesión de depuración.

El Eclipse si bien es muy potente, es también muy pesado y encima el esquema de shortcuts que utiliza es totalmente distinto al de la mayoría de los otros IDEs.

En fin, aquí estoy, “curtiendome” con el todo el stack enterprise de Java e intentando aportar una mirada más amplia (y “no-java”) al equipo de proyecto.

 

 

Próximos eventos en lo que resta del 2014

Como es costumbre, la primera mitad del año no pasa nada y la segunda está tan cargada de eventos que resulta difícil decidir a cuales asistir. Comparto aquí una lista de los evento que personalmente me resultan de interés:

Del 14 al 15 de agosto se llevará a cabo en Facultad de Ingeniería de la UBA, el Simposio Argentino de Sistemas Embebidos, SASE 2014. Un evento del que nunca participé pero del cual planeo participar este año.

Del 1 al 5 de Septiembre tendrá lugar en la Universidad de Palermo la edición número 43 de las Jornadas Argentinas de Informática. Estas jornadas incluyen una serie de Simposios entre los que se encuentra el Simposio Argentino de Ingeniería de Software del cual tengo el honor de ser co-chair.

También en Septiembre, más precisamente 26 y 27, tendremos las primeras Jornadas Nacionales de Métodos Ágiles que se realizarán en las instalaciones de la Universidad de Belgrano con formato completamente Open Space.

Octubre viene cargado con 3 eventos en la semana del 20 de Octubre.

Del 23 al 25 de Octubre tendremos la séptima edición de las Jornadas Latinoamericanas de Métodos ágiles, Agiles 2014 a desarrollarse este año en Medellín (Colombia).

Casi al mismo tiempo que Agiles 2014 tendremos la RubyConf Argentina, una vez más en las instalaciones del Konex.

El tercer evento en esos mismos días es el Congreso Argentino de Ciencias de la Computación, CACIC 2014, que se desarrollará en las Universidad Nacional de la Matanza.

Ya en noviembre (5,6 y 7), en la ciudad de Córdoba, tendremos la Smallktalks 2014. Esta vez en las instalaciones de la Universidad Tecnológica Nacional.

Más allá de los eventos aquí mencionados, me consta que hay programados algunos más, pero no menciono pues no estan entre los que suelo asistir.

Desarrollo de software sin “métodos ágiles”

Algo que me ha llamado poderosamente la atención en los últimos años es encontrarme con gente que trabaja utilizando métodos ágiles y que sólo conoce de métodos ágiles. Cuando uno les pregunta como trabajaban antes de comenzar a utilizar métodos ágiles, en la mayoría de los casos indican que trabajaban totalmente ad-hoc o que utilizaban un proceso tipo cascada. Esto podría explicar en gran medida porque muchas veces se hace la comparación Agile Vs. Cascada como si no existiera nada más: hay gente no conoce nada más.

Pero existe algo más, de hecho existen muchas cosas más que son utilizadas con éxito en diversos contextos. Entre esas cosas uno podria citar el Proceso Unificado y el PSP por nombrar algunas. Al mismo tiempo hay una serie de prácticas muy asociadas a agile, pero que datan de mucho antes como ser versionamiento de código y la automatización de pruebas.

En relación a esta cuestión, con @dfontde, hemos enviado una propuesta de sesión a Agiles 2014 titulada “Hay buen desarrollo sin agilidad“.

Fin del taller de prueba automatizada

El jueves pasado tuvimos el quinto y último encuentro del taller de prueba automatizada que dictamos junto con Pablo Tobia en FIUBA. El taller era abierto y gratuito pero con inscripción previa. Justamente al ser totalmente gratuito implicaba cierto riesgo en lo que hace a la planificación, pues es común que mucha gente se inscriba y luego no asista. Para mitigar esto, pedimos a todos los interesados que para confirmar su vacante resolvieran un pequeño ejercicio de programación.

Inicialmente tuvimos unas 40 personas que manifestaron interés en participar del taller cuando aún no estaba definido el horario. Una vez que definimos el horario le informamos a estas ~40 personas y les pedimos que resolvieran el ejercicio para completar su inscripción. Sólo 12 de los 40 lo hicieron. Y aún así, de esos 12 solo 10 participaron del taller.

El taller consistió en 5 encuentros de  ~3 horas. Como guía del taller utilizamos los cuadrantes de testing de Marrick con lo cual el contenido quedó organizado de la siguiente forma:

  • Encuentro #1: conceptos básicos de testing y presentación del enfoque de los cuadrantes
  • Encuentro #2:
    • foco en el cuadrante #1 (support programming & technology facing),
    • test automation manifest
    • xUnit test patterns
    • Test doubles
    • Coverage
  • Encuentro #3 y #4:
    • foco en el cuadrante #2 (support programming & business facing)
    • tipos de herramientas para automatización de pruebas
    • arquitectura de las herramientas de automatización de pruebas
    • testing de aplicaciones tipo enterprise
    • SeleniumIDE, Cucumber, Fitnesse
    • Phantom, Slimer and CasperJS
    • Watir & PageObjects
  • Encuentro #5:
    • foco en los cuadrantes #3 y #4 (test que critican el producto)
    • Stress testing, JMeter
    • AB testing
    • Calidad del software más allá del testing
    • Testing en distintos tipos de proceso de desarrollo
    • El rol de tester

Tanto docentes como alumnos quedamos muy contentos con el taller y concluimos que perfectamente podria ser una materia de las carreras de informática de FIUBA (en realidad es posible que también aplique a otras carreras pero sabemos que en FIUBA estos temas no estan cubiertos por ninguna materia en la actualidad). En caso querer convertir este taller en un materia (o en un curso más amplio) deberíamos agregar temas talles como: planificación de la prueba, definición y administración de casos de prueba, herramientas de soporte, Testlink, modelos de calidad, etc.

Finalmente quiero agradecer a todos los que participaron este experimento para mi ha sido un gran placer el tiempo compartido.

Sobre las carreras de informática en FIUBA

La Facultad de Ingeniería de la Universidad de Buenos ofrece dos carreras en el área de informática: Ingeniería en Informática y Licenciatura en sistemas. Como docente de dicha casa de estudio suelo recibir consultas del tipo:

“Me gustaría trabajar en XYZ, ¿me conviene hacer la licenciatura o la ingeniería?”

Luego de haber respondido esta pregunta N veces, decidí tomarme unos minutos para grabar los siguientes dos videos. Espero les resulten útiles.