Enlaces de los martes (02 oct 2012)

Seguimos, un martes más, con una recopilación de los enlaces que me han parecido más interesantes, espero que a vosotros también os gusten:

  • Los desarrolladores odian las tareas sin valor (inglés), de Java Code Geeks: artículo donde el autor explora las razones de por qué los programadores odiamos las tareas sin valor (o que percibimos que no aportan valor) por ejemplo: una tarea repetitiva, una tarea que debemos hacer cada cierto tiempo, trabajo que antes de estar terminado alguien decide que ya no es necesario.
  • Comunicación productiva en equipo, de Think Wasabi, vía El Canasto: qué importante es una buena comunicación en un equipo. Descubre unos consejos para comunicarte mejor con tus contactos, ya sean del trabajo o no.
  • 6 ventajas de FDD frente a Scrum, de Javier Garzás: en el post anterior acerca de enlaces interesantes, dejé 2 de Javier acerca de la metodología FDD (Feature Driven Development), así que no podía dejar pasar este otro post acerca de esa metodología. Esta vez la compara con Scrum, una metodología ágil mucho más conocida y extendida, pero no por ello tiene que servir para todo tipo de proyectos. FDD se enfoca hacia un público muy distinto al de Scrum.
  • Cursos gratuitos de las universidades de Berkeley, Massachusetts y Harvard: no son simples cursos, creo recordar que son cursos académicos completos, es decir, un año de carrera en cualquiera de estas universidades. Los hay desde Introducción a Ciencia de Computadores (Computer Science) hasta temas tan punteros como Software as a Service (SaaS). Lo único no positivo que les veo es que son en inglés.
  • Groovy: The road map for the popular JVM language (inglés), de InfoWorld: Entrevista a los líderes de los proyectos Groovy y Graisç, Guillaume Laforge y Graeme Rocher respectivamente, donde comentan las futuras funcionalidades del lenguaje groovy y el framework web grails.
  • Prefiero github:pages a wordpress.com, de Roberto Vázquez: He descubierto el blog de Roberto a través de su post sobre la barcampes, y en particular, este post me ha gustado mucho. Me lo apunto como tarea, haré lo posible por tener tiempo para migrar mi blog de wordpress a github:pages, ¿por qué no?
  • Learnable programming (inglés), de Bret Victor, via Linking paths: según la fuente donde encontré el enlace, este es probablemente el ensayo técnico más importante del año, y la verdad es que promete. Fascinante lectura, en serio!

Proyecto maven para JavaScript

Estoy aprendiendo JavaScript. Creo que es uno de los lenguajes con más futuro, y no sólo por la web (que da de comer a mucha gente), sino por herramientas como PhoneGap (que te permite crear aplicaciones para iOS, Android, …), y también por la llegada del nuevo Windows 8, ya que se pueden desarrollar aplicaciones en JavaScript que acceden al hardware de la máquina donde esté instalado Windows 8.

Empecé aprendiéndolo gracias a Codecademy, que comenzó el año con unos cursos o clases online, y me llamó mucho la atención la posibilidad de poder ir practicando JavaScript sin tener que instalar nada. Y además, cada semana la herramienta me recordaría que tenía una nueva lección, así no dejaría de practicar.

Pero hace poco tropecé con un pequeño problema, y es que quería aportar una solución escrita en JavaScript al desafío de Compresión en RLE en Solveet (una plataforma donde la gente publica desafíos de programación y otra gente publica sus propias soluciones, muy recomendable y divertido). El problema era que no tenía instalado nada en mi ordenador que me permitiera hacer TDD (lo prefiero para resolver los desafíos, así practico doble: el desafío y la práctica TDD).

Una herramienta que me encanta para gestionar el ciclo de vida de mis proyectos es maven, así que me decidí a buscar algo que me permitiera escribir JavaScript y luego ejecutarlo con comandos de maven.

Y tuve la suerte de encontrar un post de akquinet donde explica cómo crear un proyecto maven para JavaScript. La verdad es que es realmente sencillo porque akquinet se ha currado un archetype para maven que te crea un esqueleto de proyecto para que escribas directamente JavaScript. Simplemente con este comando para ejecutar maven:

mvn archetype:generate \ 
  -DarchetypeArtifactId=javascript-quickstart \ 
  -DarchetypeGroupId=de.akquinet.javascript.archetypes \ 
  -DarchetypeVersion=1.0.0 \ 
  -DgroupId=<enter your groupId> \ 
  -DartifactId=<enter your artifactId>

Con el proyecto creado a partir del archetype de akquinet podrás:

  • Ejecutar tus tests JavaScript con Jasmine
  • Comprimir los ficheros .js y .css de tu proyecto
  • Generar la documentación con Jslint y Jsdoc

Además, al ser un proyecto maven, es muy fácil que lo integres en un servidor de Integración Contínua como Hudson.

Si quieres, puedes ver la solución que aporté en Solveet. El desafío es muy sencillo, y hay muy poco código JavaScript: Compresión RLE en JavaScript, el código completo con los tests.

Enlaces de los martes (18 sept 2012)

Vaya! Se acabó el verano, y parece ser que el mundo vuelve a coger velocidad, y qué velocidad. Espero que estéis preparados para una nueva entrega de enlaces muy interesantes, vamos allá:

  • Code School, vía un tweet de Israel Alcázar: Una magnífica web de cursos de programación online. Muchos de ellos son de pago y todos tienen pinta de tener una altísima calidad en sus contenidos.
  • Tweet de ryah con el que estoy completamente de acuerdo, traduzco libremente:

Si quieres sentirte bien programando, debes aceptar aprender algo nuevo cada día durante el resto de tu vida

  • Cómo expresar tu pasion en tu currículum y en las entrevistas (inglés), de Jobs tips for geeks: Un artículo relacionado más con la vida como desarrollador que un artículo técnico, pero hay que tener conocimiento en varios campos. En resumen, qué demuestra tu pasión como desarrollador (de más a menos): participación en proyectos open source, colaboración en grupos locales de tu tecnología favorita, etc …
  • Continuous Integration for Javascript, de eriwen: ¿Usas Javascript en tus desarrollos? ¿Conoces alguna herramienta de integración contínua? Aquí, Eric te explica cómo montar un entorno de integración contínua para proyectos Javascript. Lectura muy recomendable, muy instructiva y también muy técnica :D.
  • The 4 pillars of a good software developer, de Contended Coder: artículo donde el autor cuenta su visión de los que cree son los cuatro pilares en los que se basa un buen desarrollador software: calidad, corrección, rapidez de ejecución y productividad; cómo mejorarlos y cómo llegar a un equilibrio en ellos.
  • Metodología ágil FDD, de Javier Garzás: consta de dos artículos (I y II) donde Javier nos describe esta metodología, FDD (Feature Driven Development, desarrollo dirigido por funcionalidades). Me llamó la atención por ser una metodología orientada a grandes empresas y grandes proyectos y grandes equipos, en contraposición de metodologías ágiles como Scrum, XP y Kanban que suelen proponerse para equipos pequeños.
  • What have you tried? (inglés), de Matt Gemmell: un artículo donde Matt expone una problemática con la que todos nos hemos tropezado: pedir ayuda en internet. La opinión de Matt al respecto es que antes de pedir ayuda, deberías currartelo un poco, e intentar solucionar el problema por tu cuenta: conociendo más el entorno que te está causando el problema, buscando información, leyendo manuales, FAQs, etc. En definitiva, que cuando te pregunten “¿Qué has intentado?”, tengas algo real que responder para no obtener una respuesta del tipo “Si no has intentado nada, ¿por qué esperas que te vaya a ayudar?”.

Referencias:

Enlaces de los martes

En los enlaces de hoy he incluido un poco de autopromoción. No me gusta hacerlo, pero por otro lado creo que es muy bueno hacer públicos los pequeños logros que uno va consiguiendo, más que nada para recibir el máximo feedback posible y poder crecer en el ámbito personal.

Además, se nota que estamos en verano, y el ritmo de enlaces interesantes ha bajado bastante. O me estoy volviendo demasiado exigente, quien sabe.

Sin más, ahí van los enlaces:

Enlaces de los martes

Y este martes tenemos otra nueva entrega de enlaces. Espero que os guste, cualquier feedback es bienvenido.

 

Enlaces de los martes

Como el título indica, espero que esto se convierta en una costumbre (sana) para mí.

En mi día a día, leo muchos artículos o gracias a la gente que sigo (blogs, twitter, …) llego a páginas realmente interesantes. Y simplemente no quiero que esos enlaces se queden por ahí perdidos, y además, me gustaría compartirlos.

Así que ahí van mis primeros enlaces de los martes:

  1. De qué hablo cuando hablo de excelencia, de Javier Lafuente Garcia (@jlafuenteg): Un genial artículo sobre la definición de excelencia en el mundo del software.
  2. 25 Best Free Maven Plug-ins to Make Java Developer More Productive, visto en fromdev: Donde se listan plugins esenciales para el trabajo del día a día con maven.
  3. Code School – Try git, visto en github: Una estupenda herramienta para aprender a usar git.
  4. Clientes con los que yo no trabajo, de Asier Marqués: Espero acordarme de este artículo si algún día decido dedicarme a tener mi propio negocio.
  5. El mítico restaurante italiano, visto en Frogtek: Una inestimable alegoría para comprender mejor las metodologías ágiles. No puedes quedarte sin leerlo.

Espero que estos enlaces os sirvan para descubrir recursos muy interesantes y valiosos.

Scrum y XP desde las trincheras

Scrum y XP desde las trincheras

Henrik Kniberg

Por qué lo he leído

Estaba un poco cansado de leer libros técnicos, y me apetecía leer alguno más práctico, como si estuviera leyendo un caso de éxito o algo así. También me apetecía introducirme más de lleno en las metodologías ágiles, y un amigo me comentó que desde que leyó Scrum y XP desde las trincheras, su visión del desarrollo del software cambió totalmente.

Qué esperaba

Esperaba una descripción de los elementos que componen Scrum, o de las prácticas que define XP. Y también una visión práctica de las mismas.
Tenía muy buenas referencias del libro, y tenía ganas de conocer de primera mano todas las bonanzas que había escuchado sobre las metodologías ágiles.

Qué encontré

Encontré una serie de anécdotas, y una descripción de un caso real de aplicación de Scrum y XP en una empresa. Un testimonio sin igual.
El autor expone su propia experiencia trabajando con Scrum y XP, metodologías o mejores prácticas del mundo ágil que nos proporciona una idea de lo que nos podríamos encontrar si lo quisiéramos aplicar en nuestra empresa.

Conclusiones

Un fantástico testimonio que todo el que quiera conocer un caso real y exitoso de aplicación de metodologías ágiles debería leer.
Sin duda, éste es un libro que no te deberías perder.
Además, está disponible para su descarga gratuita en varios idiomas, entre ellos el español (enlace de descarga de Scrum y XP desde las trincheras). La verdad es que se agradece que existan versiones en español de libros tan interesantes como éste.

Pasajes que quiero recordar de este libro

el dueño del producto debe concentrarse en los objetivos del negocio, no en escribir historias con orientacion tecnica

otras personas aparte del dueño del producto pueden añadir historias a la pila del producto, pero no pueden asignarles orden de importancia (cometido exclusivo del dueño de producto) ni pueden establecer estimaciones (cometido exclusivo del equipo)

la planificación del sprint es una reunión crítica, la más importante de Scrum

cada historia de usuario depende de tres variables: estimación (proporcionada por el equipo), alcance e importancia (proporcionadas por el dueño del producto)

es responsabilidad del equipo mantener la calidad del sistema bajo toda circunstancia, y no es negociable nunca

la estimación es una labor de equipo, todo el equipo debe involucrarse en estimar cada historia

¡ sienta al equipo junto !

en la retrospectiva, cada persona tiene una oportunidad de decir, sin ser interrumpida, qué ha ido bien, qué podría haber ido mejor y qué piensan que debería hacerse diferente en el próximo sprint

fase de pruebas es dura, probablemente la más dura del ciclo del desarrollo de sw. la sensación es definitivamente ‘no agil’. no podemos liberarnos de ella, pero si minimizar la cantidad de tiempo necesario

casi siempre es más barato producir menos, pero hacerlo estable, que producir muchísimo y luego tener que hacer parches de emergencia

Otras lecturas y enlaces relacionadas

  1. Blog de Henrik Kniberg
  2. Manifiesto ágil (english: Agile Manifesto)
  3. Introducción a la Agilidad y Scrum