Saturday, December 09, 2017

"It depends" / Jocelyn Goldfin model for software classification

Continuing with the idea of knowing the context of our software as the first step to making better decisions (see it depends blogpost). I will explain in this post a software classification that I found very useful.


This software classification was created/defined by Jocelyn Goldfin in the article http://firstround.com/review/the-right-way-to-ship-software/ and explained at The "right" way to ship software Jocelyn Goldfein - hack.summit 2016  for example.

The model classifies an application in two axes:

  • Horizontal axis: Stack and deployment model. From very costly to deploy (on-premise, operating systems, embedded software, etc.) to easy to deploy (web application in a cloud PaaS). 

  • Vertical axis:  Business model. From very costly software for a critical mission for an enterprise, up to free software for consumers.


Attending to this classification, we can define the cost of making a mistake for the application, the optimal release process, how to obtain feedback, etc.



For example, for costly enterprise software deployment on-premise, the best approach for obtaining feedback, perhaps is having beta tester programs with discounts for the customer. But to get feedback from a customer-oriented software that is sustained by ads, the fastest way is A/B testing and continuous deployments of new experiments.



Another example, if we consider 1x the cost of making a mistake for a free consumer web application deployed in the cloud, perhaps the cost of making a mistake for expensive enterprise software deployed on-premise may be two orders of magnitude higher.





I found this classification very useful for my day to day work. But remember, the context can be different for each part of a large system and also evolve with time.

According to this classification, these are the systems in which I have been involved:




Thank you, Jocelyn Goldfin, for this useful classification model.

References:



Thursday, December 07, 2017

"It depends" / context on creating software products (I)


"It depends" is the standard consultant answer to any question. It sounds like a joke, but in fact, it is an excellent answer.



If we are involved in creating software products, our day consists of making a lot of decisions. We have to take decisions at very different levels, for various purposes, and with different importance level:

  • Constant micro decisions when developing and designing software (what is the next test? should we remove this duplication? should we divide this class? what is a good name for this method? and for this module? etc.)
  • Constant Architectural decisions about macro design, practices, strategies, etc.
  • Sometimes estimations (or even better, how to split the features into small steps, so we don't need estimations).
  • What are the optimal priorities for the next tasks to accomplish?
  • Wich experiments can we define to validate a hypothesis?
  • Wich technical debt should we pay right now? 
  • etc.

Making decisions is hard, very hard...



In my experience good tactics to make decisions in our profession are:

  • Know as much as possible about the context (business, purpose, why you need to decide about this, etc.).
  • Minimize the risk associated (for example pushing for reversibility when possible).
  • Postpone as much as possible (to gain more awareness about the problem, the context or the risk).
  • Simplify to minimize the number of decisions needed.

And here is the problem. I usually see very little awareness about the context in which we develop the software.

This lack of awareness is why we can waste a considerable amount of energy discussing dynamic typing vs. static typing, optimize runtime performance vs. developer productivity, should we use cloud/containers/microservices.

Everyone is right, or everyone is wrong, depending on our point of view.

If we don't know about the context, the decision is always wrong :)
So "it depends"!!! (on the context)

Sunday, November 26, 2017

Books I have read since August (and some Reads In Progress)

These are the books that I read lately:

  • "The Lean Product Playbook How to Innovate with Minimum Viable Products and Rapid Customer Feedback" Dan Olsen
  • "Most Likely to Succeed Preparing Our Kids for the New Innovation Era" Tony Wagner, Ted Dintersmith
  • "El Blockchain en la Práctica"  Lucas Sergio Cervigni
  • "Turn the Ship Around! A True Story of Turning Followers into Leaders" L. David Marquet
  • "To Sell Is Human The Surprising Truth about Persuading, Convincing and Influencing Others" Daniel H. Pink
  • "The DevOps Handbook How to Create World-Class Agility, Reliability, and Security in Technology Organizations" John Willis, Patrick Debois, Jez Humble, Gene Kim
  • "Remote Office Not Required" Jason Fried, David Heinemeier Hansson

Read in progress (RIP) :)

  • "Creativity, Inc. Overcoming the Unseen Forces That Stand in the Way of True Inspiration" Ed Catmull, Amy Wallace
  • "This is Lean: Resolving the Efficiency Paradox" Niklas Modig, Par Ahlstrom
  • "Implementation Patterns" Kent Beck (2º reading)
  • "The real startup Book" v0.3 

I will try to create reviews for the most interesting ones.

Related posts:

Thursday, November 16, 2017

Good talks/podcasts (October 2017 Part II)


These are some interesting talks/podcast that I've seen during October:

Monday, November 13, 2017

Crónica de mi CAS 2017 Sevilla

Últimamente escribo mis blogposts en Inglés, pero en este caso, como se trata de una crónica para una conferencia mayoritariamente en Castellano, voy a hacerlo en este idioma (y así me cuesta algo menos :) )



Primero, quiero agradecer a la organización todo el esfuerzo puesto que la verdad es que hacer un evento de estas caracteristicas entre voluntarios es realmente INCREIBLE! Asi que muchas gracias por el esfuerzo...

Y ahora mi crónica:


Charlas a las que asistí:

  • Keynote: Transformación digital y humana Ramón Cabezas Sin duda esta fue la sesión que menos me gusto de todo el evento, me parecio un publireportaje además sin demasiada relación con Agile. Lo siento, pero creo que no fue una keynote a la altura de una CAS.
  • Escalando la Cordillera de la Autogestión Toni Rodríguez Lezcano Charla muy interesante sobre un tema que me apasiona, la autogestión de los equipos. Creo que el orden definido por Toni partiendo de la experiencia real de Magento es de gran valor. 
  • Discusiones y decisiones: herramientas para la efectividad Toño de la Torre Charla muy interesante y que me aporto conceptos interesantes sobre las dinamicas, los juegos ágiles y la facilitación.
  • Valores y principios en el diseño del software Fran Reyes Me encanto, una gran charla. Cada una de las slides, es para leerla con calma y rumiarla. Mucho contenido para cualquier desarrollador avido de mejorar. Me ha convencido para que adelante en mi orden de lectura el Implementation Patterns de Kent Beck.
  • Keynote: La voz, la clave del éxito en tu comunicación Marta Pinillos Creo que no fue adecuada para una CAS. La relación con agile es muy lejana, pero por lo menos en este caso fue divertida. Creo que es interesante buscar keynotes que no sean directamente de la comunidad, pero creo que el mensaje debe resonar con Agile (Ejemplo Koldo Saratxaga en una edición anterior).
  • Keynote: The 8 Stances of a Scrum Master  Barry Overeem No pude verla entera puesto que tenia que preparar mi charla, pero la parte que vi, me resulto interesante. Creo que caracterizo bien los diversos comportamientos típicos de un SM y sus efectos en un equipo. Interesante y divertida.
  • Agilidad (Hacia la entrega continua ¿Qué te lo impide?) Eduardo Ferro Para mi charla he creado un blog post especifico donde incluiré toda la info relacionada http://www.eferro.net/2017/11/agilidad-hacia-la-entrega-continua-que.html
  • Gestionando el roadmap de producto de forma efectiva Vanesa Tejada La vi empezada, pero lo que vi me gusto mucho. La idea de afrontar el roadmap y los retos que se le plantearon volviendo a los principios y valores de agile me parecio genial. Además la aproximación tan Lean que tiene Vanesa para la gestión del producto me parece un ejemplo a seguir.
  • Yo soy Dev, yo soy Ops y somos dos en un equipo Luis Fraile Leo Díaz Una buena presentación de un tema tan desconocido como el DevOps. Creo que hicieron un gran trabajo en introducir el concepto y trasmitir la importancia que tiene. Además fue bastante divertida :)
  • Keynote: Agile works when it's not about Agile - A Paradox Neil Killick Una buena keynote, interesante y me hizo plantearme algunas cosas. Si tengo que decir algo para mejorarla es que el ritmo fue algo lento (creo que ayudado por algún problema técnico que tuvo con el portatil).

Talleres a los que asistí:

Hay cierto tipo de aprendizajes que son más sencillos y profundos si los interiorizas mediante experiencias, bien sea mediante un juego o mediante algún tipo de taller. Por eso creo que para algunos conceptos del mundo agile, un taller es el mejor formato de aprendizaje, así que en esta ocasión intente aprovecharme de la gran cantidad de talleres que se dieron.
Asistí a los siguientes:
  • Liderazgo para la transformación Jose Ramón Díaz Interesante taller en la que se generaron buenas conversaciones sobre el tema en cada uno de los grupos. No fue muy novedoso para mi puesto que ya hice con Josera un taller similar de dos jornadas. En cualquier caso siempre salen conversaciones interesantes. En este tipo de talleres en los que me doy cuenta de soy un poco Anarco :)
  • It’s more than drawing… become a visual facilitator today! Jaume Durany Vendrell y Juan Antonio Sosa A dibujar se ha dicho... la verdad es que ya estoy en el proceso de aprender a hacer facilitación gráfica y a usar los dibujos para expresarme, así que este taller fue una buena sesión de práctica.
  • Kanban system design - Toma el control para que puedas empezar a mejorar Gerard Chiva Pablo Domingo Este taller me aporto mucho, puesto que me ha afianzado algunos de los conceptos de lean que no tenia claros. Muy buen formato y muy útil.
  • Auto organización a escala. Adrian Perreau Gran experiencia de auto organización para resolver un problema. Muy interesante ver como nos comportabamos y las dinamicas que se generaban. Posteriormente, Adrian repaso los comportamientos que suelen aparecer y algunos de los antipatrones que se pueden dar. Muy interesante. Una gran experiencia.


Feedback para la organización


Positivo:
  • El sitio espectacular, tanto Sevilla como el Fibes. Muy cómodo bien comunicado y el palacio de congresos, muy amplio y cómodo para ir de sala a sala.  Además las salas estaban muy bien.
  • El soporte de la organización a los ponentes en cuanto a preparación de sala, medios, acceso a internet, etc, perfecto.
  • Buena organización general de tiempos, comunicación y servicios.
  • Me gusto la idea de reservar para los talleres... Creo que hay que darle una vuelta a ver como gestionarlo, pero en general me parece buena idea.
A mejorar:
  • Los keynotes en general no me han gustado mucho, ya he comentado en el punto anterior cada una, pero las del primer dia me decepcionaron bastante. Aunque no sean directamente sobre Agile, deben estar relacionadas de una forma clara.
  • La comida no me convencio (y eso que soy adicto al queso). Para un intolerante a la lactosa debe haber sido complicado.
  • El sistema de reserva de talleres se deberaia haber comunicado con más antelación.
  • Las salas de talleres se han quedado algo pequeñas.
  • El track técnico estaba etiquetado como iniciación cuando muchas de las charlas eran avanzadas.

En cualquier caso, todos estos comentarios son para mejorar, partiendo de que considero impresionante el trabajo que se hace para organizar un evento de este calado. Así que mis más profundas GRACIAS para toda la organización y para Agile Spain por apoyar y organizar este tipo de eventos.

Aprovecha para hacerte socio de Agile Spain https://agile-spain.org/asociate/ y colabora con la organización de la CAS, el AOS y multitud de conferencias como la Pamplona Software Craftsmanship o la Barcelona Software Craftsmanship. Cuesta poco y aporta mucho



Desvirtualizaciones

Otra cosa que me estoy acostumbrando a hacer en las conferencias es a desvirtualizar a gente interesante... Aunque parezca que no, soy muy tímido (aunque me lo estoy curando a golpes).
En esta CAS he tenido la suerte de desvirtualizar a:


  • Seguia a Aritz Suescun desde que en un AOS presento dos maginificas sesiones  sobre Design Sprints y Product Discovery.
  • Con Rafael Luque comparto la pasión por la OO (de verdad :) ) y me ha encantado poder conversar con él sobre el tema. Espero tener suficientes puntos familias para poder acercarme al meetup sobre Pharos Smalltalk que va ha dar dentro de poco :).
  • Samuel Casanova es un gran Coach Agile y me encanta su blog. Además, como también le da al visual thinking he usado alguno de sus dibujos para alguna de mis presentaciones (http://www.eferro.net/2017/10/charla-acelerando-la-cultura-devops.html).
  • Parece que Dani de la Cruz y yo coincidimos bastante en como vemos el desarrollo de software y ha sido un placer poder desvirtualizarle por fin.
  • He coincido con Adrian Perreau en varios Socracan y aunque habiamos hablado en el pasado, nunca nos habiamos presentado formalmente, así que he aprovechado en esta ocasión.
  • Seguia Vanesa Tejada por su interesante enfoque sobre desarrollo de producto basado en Lean y por los post sobre productividad personal.

Desvirtualizaciones Pendientes

Al final por falta de tiempo y organización no pude desvirtualizar a Carlos Iglesias al que admiro por el trabajo que hace en la comunidad Agile Barcelona y a Jerónimo Palacios que me parece que es una de las grandes figuras que tenemos por aquí... Me quedan pendientes para la próxima ;)

La gran pregunta

¿QUÉ ES LA CAS?
La CAS 2017 es un evento generado por personas que viven el desarrollo de software de una manera diferente.
Es un punto de encuentro entre profesionales del sector donde se comparten conocimientos y experiencias en torno a las metodologías ágiles.
Esta cita está extraida de la web de la conferencia, y como se puede ver, habla de desarrollo de software y metodologias ágiles, pero mi sensación en la conferencia es que cada vez es menos relacionado con eso. Así que como comunidad tenemos una pregunta que hacernos, ¿Cómo queremos que sean las próximas CAS? ¿Queremos que sean orientadas al Coaching? ¿Queremos que integren a los desarrolladores? ¿Queremos que exploren diversos ambitos partiendo del desarrollo de software como indica el manifiesto?...

Creo que debemos hacernos este tipo de preguntas, puesto que ahora mismo el resultado es bastante confuso y me apena escuchar desarrolladores diciendo que no van a la CAS por que Agile no tiene relación con el desarrollo de software :(

Lo que si que me alegra ver es que como consecuencia de esta CAS se está abriendo algo de debate sobre como deberia evolucionar la comunidad y la propia asociación...  Veamos que sale :) Inspeccionemos y adaptemonos.

Enlaces Relacionados: