Curso de Startup Engineering: Semana 1

Hola, hoy completé todas las tareas correspondientes a la primer semana de este curso que estoy haciendo en Coursera. Me está resultando muy interesante, no por las cuestiones técnicas (que por el momento son muy básicas) sino por las cuestiones más «de negocio y estrategia».

Si a alguien le interesa sumarse a este curso, aún está a tiempo, dado que la debido a la gran cantidad de gente registrada en los últimos dias, se ha extendido el plazo de entrega de la primera tarea hasta el 3 de Julio.

Chau herramientas de oficina en el desktop

Ayer caí en la cuenta que hace un tiempo interesante que no utilizo el kit de herramientas de oficina que tengo instalado en mi máquina. La razón es que me estoy manejando muy bien con las herramientas de Google. Sin duda esto es posible pues mi uso de bastante básico.

Y para sumar la estrella que faltaba, la semana pasada un colega me presentó un editor online de Latex, que no sólo permite editar sino también compilar. Increible.

En mi opinión uno de los mayores beneficiados indirectamente con esta «migración» a la nube es Linux. Históricamente una de las trabas que tenia el usuario promedio para usar Linux era la falta de cierto software, pero con la evolución de Linux y el «advenimiento» de la herramientas en la nube, esos impedimentos van quedando atrás.

¿Quieres feedback? Camilo te puede ayudar

¿Diste un curso, una charla, una presentación? ¿te gustaría tener feedback de la audiencia y no tenés ganas de hacer una encuesta? ¿o te cansaste de hacer encuestas y procesarlas? ¿o te cansaste de hacer encuestas y que la audiencia no las llene?

Tal vez Camilo te pueda ayudar. Camilo es una aplicación web que desarrollamos en el contexto de la materia  Elementos de Ingeniería de Software como caso de estudio. Esta aplicación permite recolectar feedback de una actuación/presentación/charla, de manera simple para el expositor y de manera cómoda para la audiencia. Si eres orador en un evento, simplemente entra a Camilo y sigue estos 3 simples pasos:

  1. Crea tu evento con sólo indicar nombre y fecha, Camilo generará un link.
  2. Toma el link de tu evento y difúndelo entre los asistentes para que den feedback.
  3. Analiza en Camilo que tal te fué.

Funcionalmente la aplicación está lista, pero aún nos faltan ajustar algunas cuestiones a nivel operacional. Si todo va bien, tendremos una primer versión funcional publicada en los próximo dias.

Sí gustan ir dándole una mirada, pueden acceder a www.voybiencamilo.com.ar.

Trabajo freelance

La semana pasada un amigo cansado de trabajar en un importante CORPOración de Argentina, me consultó cómo conseguir trabajo de freelance. Existen varios sitios web que funcionan cómo marketplace para esta cuestiones. Uno de los más famosos es Rent a coder.

Otro portal que conocí recientemente es Toptal. El cual tiene la particularidad (según me han comentado) de tener un proceso de registración que implica la resolución de ejercicios de programación al estilo competencia de la ACM.

Por último, el sitio de preguntas y respuestas StackOverflow, también tiene una sección de anuncios laborales.

Más allá de estos sitios, mi recomendación es que independientemente de donde busques oportunidades, es clave que armes un portfolio de los trabajos que hayas realizado. Si son open source no dejes de proveer link a los mismos. En los ambientes freelance, esto puede ser incluso más importante que los títulos académicos que puedas acreditar.

 

 

Prometedor curso online de Ingeniería de Software

Esta semana estoy comenzando un nuevo curso online en Coursera. En este caso se trata de un curso ofrecido por Standford y si bien el título es «Startup Engineering» el contenido está enfocado en cuestiones de ingeniería de software para contextos de startups web. La dinámica parece ser muy similar a la del curso Berkeley que tomé el año pasado. Tengo muchas expectativas, ya veremos.

La clave es educarlos de chiquitos

Hoy compartí el almuerzo con mi colega JuanG y algunos otros profesionales de la informática. En un momento comenzamos a hablar sobre TDD y algunas otras prácticas ágiles. Durante la charla uno de los comensales comentó que le parecía muy difícil pretender que los programadores «junior» utilicen dichas técnicas cuando las mismas ni se mencionan en las universidades. Estuve de acuerdo con el comentario respecto de la complejidad, pero al mismo tiempo agregué que en algunas universidades, estos temas son materia corriente. Para mi : «La clave es educarlos de chiquitos».

Como ocurre en todos los ámbitos de la vida, una vez que algo se hace hábito, cuesta mucho cambiarlo. Es por esto que en las materias que dicto hago mucho énfasis en cuestiones tales TDD y prueba unitaria. Un caso testigo es lo que hacemos en Algo3. En las clases prácticas resolvemos ejercicios y en todos los casos lo hacemos usando TDD. Luego, en los dos trabajos prácticos individuales que los almnos deben resolver, les recomendamos una y otra vez que los resuelvan utilizando TDD. Finalmente cuando llegan al último trabajo práctico que implica trabajar el grupo, los alumnos tienen la técnica incorporada. Un detalle importante es que si bien la técnica de TDD la aprenden en nuestra material, ya en la materia anterior los alumnos comienzan a hacer pruebas unitarias automatizadas.

Cierro este post con algunos gráficos de métricas de tests de los grupos que estoy dirigiendo en Algo3 este cuatrimestre. ¡Hermoso!

covertura

Ubuntu + Jenkins + RVM

Not sure if this is the best procedure but is what worked for me.

  1. Install Jenkins with the native package manager: sudo apt-get install jenkins
  2. Switch to jenkins user: sudo su – jenkins
  3. Install RVM following the single user installation procedure

Hope this helps you.

Qué hacer cuando mi compañero no trabaja

Ayer recibí esta consulta de un alumno:

Te escribo para hacerte una consulta, de algo que me viene pasando en todas las materias en las que tuve que hacer trabajos grupales.
El problema es que no sé como manejar el tema cuando mi compañero de grupo no hace las cosas, o las deja para último momento. Siempre trato de alentarlo y ayudarlo en sus dificultades, pero cuando la otra persona no se dispone se complica. A veces pienso en que debería «retarlo», porque es algo que nos afecta a ambos, pero ese es un rol que no me corresponde, yo no manejo sus tiempos ni demás.
Me imagino que con tu experiencia académica y en la industria te habrá pasado muchas veces. Te pido algún consejo, que seguramente me será de ayuda a lo largo de toda mi carrera.
….
¡Ja! Efectivamente he enfrentado este tipo de situaciones en reiteradas ocasiones.
Antes de entrar a ver posibles soluciones dejemos en claro el problema. A mi entender podemos tener dos situaciones:
  1. Mi compañero no trabaja
  2. Mi compañero trabaja, pero se traba y no logra completar su trabajo
Es importante hacer la distinción, pues la forma de abordar la situación puede ser distinta para cada caso.
Más allá de estas dos situaciones, la consecuencia suele ser que se genera cierta tensión en el grupo y a la larga el resultado es:
  1. Termino haciendo el trabajo yo solo (posiblemente trabajando mucho más de lo que debiera)
  2. No llegamos a cumplir con la consigna, lo cual suele acarrear un calificación negativa.
Luego de este análisis preliminar, veamos entonces algunas recomendaciones que a mi entender aplican a todos los casos.

1. Mejor prevenir que curar
Mi primer recomendación es mirar con quien armamos el grupo de trabajo. En este sentido soy de una postura conservadora: más vale malo conocido que bueno por conocer. Yo en estos contexto académicos prefiero trabajar con alguien que ya conozco, aún cuando sepa que tiene «ciertos defectos», pues ya sé a que atenerme y puedo planificar en consecuencia.

2. Organización del trabajo
Una vez que el grupo está constituido y la consigna del trabajo a desarrollar está clara, el grupo debería hacer una lista de tareas, estimarlas y planificarlas. Cuando digo planificar me refiero a determinar: quién hará la tarea, y cuando la hará. Esto implica que cada integrante asuma un compromiso. Si luego ese compromiso no es cumplido habrá que analizar que ocurrió ¿surgió un imprevisto?¿llevó más tiempo de lo esperado?¿o ni siquiera se comenzó a trabajar en la tarea?
3. Visibilidad
Por un lado es importante que cada miembro del grupo de visibilidad sobre el estado de sus tareas al resto de los integrantes. Pidiendo ayuda en caso de problemas y avisando en caso de retrasos.
Por otro lado, dependiendo de la materia, puede resultar útil e importante, dar visibilidad a los docentes de cómo avanza el grupo, pues para algunas materias (generalmente las de gestión) la interacción de los miembros del grupo de trabajo es parte de los temas de estudio.
4. Comunicación constante
No basta con dar visibilidad, esa visibilidad debe ser frecuente, sin temer a generar «spam», más vale que sobre a que falte.
5. Adaptación
Si damos visibilidad de forma frecuente, podremos ser capaces de detectar problemas y adaptar nuestros planes en consecuencia. Si un integrante del grupo no pudo completar sus tareas, entonces podremos repriorizar, hacer una sesión de trabajo conjunto o asignarla a otro miembro del grupo.
6. Trabajo de pares
Si bien puede parecer una pérdida de tiempo que dos personas trabajen al mismo tiempo en la misma tarea, la realidad es que en muchísimas ocasiones, esto permite avanzar mucho más rápido, pues al trabajar en parejas la gente se enfoca mucho más en la tarea en cuestión y si uno se traba tiene un compañero a su lado para ayudarlo. Herramientas como Google Hangout, Team Viewer y Skype permiten trabajar en forma conjunta estando físicamente separados.
Bueno, espero que estas recomendaciones les resulten útiles al lector y que no dude en contactarme si se encuentra en una situación que no sabe como manejar.

La respuesta está en los billetes

Cada vez que la selección Argentina de futbol juega un partido por la eliminatorias, no deja de llamarme la atención la ausencia de jugadores de tez morena en el equipo Argentino, un hecho muy común en otros paises de la región.

Ayer mientras miraba el partido de Argentina vs. Colombia, caí en la cuenta que la respuesta está en los billetes. Bueno, no en todos los billetes, sino particularmente en los de 2, 50 y 100 pesos Argentinos. Por si no los tienen presentes, estos billetes tienen las figuras de Mitre, Sarmiento y Roca respectivamente, tres individuos considerados «próceres» según la historia oficial.

Puede que el lector, a pesar de ser argentino, aún no encuentre la relación entre la ausencia de morenos en Argentina y estos 3 personajes. Ocurre que como es natural, en las escuelas se estudia la «historia oficial», curiosamente escrita en parte por los mismos Mitre y Sarmiento, ¡ja!.

Resulta que las ideas difundidas por estos tres individuos han atentado del mismo modo contra los morenos, los habitantes nativos de estas tierras y los gauchos. No voy a entrar en mucho detalle sobre estas ideas, sino que simplemente voy a apuntar al lector en la dirección indicada para que pueda ahondar en la respuesta.

Comencemos por Sarmiento. En la escuela nos enseñan que es «el padre del aula» y de hecho, el dia de maestro conmemora la muerte de Sarmiento. Es cierto, hizo mucho por la educación, no se lo puede negar. Pero lo que no nos cuentan en la escuela son las ideas de Sarmiento más allá de la educación, y menos aún aquellas que él mismo escribió en su libro Facundo. No voy a entrar en detalle sobre lo que dice el libro, pues me causa una gran malestar, pero invito a que el lector lo lea y si luego de eso le quedan dudas, lo invito a que lea el Manual de Zonceras de Arturo Jaureche.

Mitre, «un salvaje unitario» diria Rosas. No estoy muy seguro de esta afirmación, no sé cuán unitario era, ¡ja!, pero sin duda era salvaje. Obviamente, no salvaje a nivel modales sino a nivel ideas, basta mencionar su aporte en la aberrante Guerra de la Triple Alianza contra Paraguay, posiblemente la principal causal de la ausencia de morenos en nuestro país.

Finalmente Roca, el responsable de la Campaña del desierto, o tal vez debiéramos decir: el genocida de los habitantes originarios.  Listo, con esto ya no hace falta decir más nada al respecto de Roca.

Lo curioso es que estos 3 individuos fueron presidentes Argentinos, ¿cómo fue esto posible? Muy simple, fue en un período en que sólo una parte de la población votaba y al mismo tiempo el voto no era secreto, lo cual se prestaba a toda clase de irregularidades.

Y como si fuera poco, en los 90, con el cambio de moneda, al gobierno de aquella época se le ocurre «honrar» a estas personas poniéndolos en los billetes de curso legal, ¡bingo!

Ser programador != escribír código en lenguaje X

Todo comenzó con un aviso de búsqueda de programadores de los amigos de 10 Pines en foro-agiles.

En 10 Pines (Bs As) estamos buscando programadores para proyectos desafiantes, nacionales y para empresas en el extranjero. Los requisitos son los siguientes:…

A dicho mensaje le siguió uno de @ajlopez:

«…hace tiempo que no veia un anuncio pidiendo programadores. Siempre piden «programadores ruby», «programadores java», etc… Al fin alguien vio la luz, y pide programadores…»

Esto me hizo acordar a una charla que suelo tener con mis alumnos al comienzo de cada cuatrimestre. Ser programador es mucho más que ser capaz de escribir código en un determinado lenguaje. Hay ciertas cuestiones como capacidad de resolución de problemas, poder de abstracción, actitud de aprendizaje contínuo y profesionalismo, que diferencian a un programador de una persona que simplemente escribe código. Son justamente esas cuestiones las que intentamos transmitir en la universidad.