Mostrando entradas con la etiqueta libros. Mostrar todas las entradas
Mostrando entradas con la etiqueta libros. Mostrar todas las entradas

jueves, 2 de marzo de 2023

Libro: El Mítico Hombre-Mes



El autor Frederick Brooks en su libro "The Mythical Man-Month" (1975), aborda muchos de los problemas comunes en el desarrollo de software y en los ámbitos de trabajo relacionados con él. Brooks identifica varias falacias que suelen existir en estos entornos, que son:


Falacia del optimismo de creer que todo irá bien: “todo irá bien, es decir, que cada tarea tomará solo el tiempo que ‘debería’ tomar” según lo planificado y se suele planificar considerando que todo irá bien, que lo que se pensó que se debería hacer es lo que realmente se hace, que se estimó lo correcto, que la gente estima bien, no se enferma ni se muere ni que existen las crisis económicas. Brooks argumenta que los desarrolladores y gerentes de proyectos tienden a ser optimistas por naturaleza y tienden a subestimar la cantidad de tiempo y recursos que se necesitan para completar una tarea de software. Esto a menudo lleva a que se establezcan plazos poco realistas y se ignoren los posibles retrasos y problemas técnicos que pueden surgir durante el desarrollo.


Promesas condescendientes: Creer que las estimaciones derivadas de deseos son cumplibles es una falacia. Los cronogramas falsos para coincidir con la fecha deseada del cliente es mucho más común en nuestra disciplina que en cualquier otra parte de la ingeniería.


Falacia de la programación: La idea de que la programación es la principal tarea en el desarrollo de software y que todo lo demás es secundario. Esto lleva a la falsa idea de que “La productividad se mide en horas de programación”. No se puede estimar el esfuerzo total de un proyecto estimando el tiempo de codificación y extrapolándolo a las demás tareas. Tampoco sirve extrapolar la construcción de pequeños sistemas a proyectos de sistemas más complejos. El incremento en el esfuerzo es una potencia del tamaño del proyecto. Tampoco se puede medir la productividad en horas de programación. Hay estudios que dicen que los programadores sólo dedican el 50% de su tiempo a la programación y el resto a otras tareas. Cuando se asigna ese otro 50% a programar más código se termina generando carry-over por sobrecarga y se hace más ineficiente el trabajo del equipo.


Falacia del hombre-mes: La creencia de que se puede acelerar el desarrollo de un proyecto de software simplemente agregando más programadores al equipo. Esta falacia está relacionada a “Medir recursos humanos en función de hora y personas”, el hombre mes. Como si el progreso variara, igual que el costo, como el producto del número de hombres y el número de meses, considerando que las personas y los meses son intercambiables. Como si se pudiera tener un parto en un mes asignando nueve mujeres como recursos humanos. 


Falacia de la panacea: La creencia de que existe una única solución perfecta para cualquier problema de software, y que es posible encontrarla con suficiente tiempo y esfuerzo.


Falacia del segundo sistema: La creencia de que, tras completar un primer sistema, el desarrollo del segundo sistema será más fácil y rápido, porque se tiene más experiencia.


Falacia de la depuración: La creencia de que la depuración de software es un proceso sistemático y predecible que se puede planificar y ejecutar con facilidad.


Promediar la productividad individual: Se suele creer que los desarrolladores pueden rendir individualmente con poca variabilidad. Sin embargo, los rendimientos son muy dispares,10:1 en mediciones de productividad y un increíble 5:1 en velocidad.


Los equipos grandes son productivos: La falacia de “con más personas se produce más”. Sin embargo en informática no es realmente así o por lo menos no para todo proyecto. Lo ideal del pequeño equipo fuerte, por común el consenso no debería exceder las 10 personas. Por eficiencia e “integridad conceptual”, uno prefiere unas pocas mentes buenas haciendo diseño y construcción.


El testing no es importante: Hay un pensamiento recurrente en el desarrollo de software: ”sabemos que la calidad es importante, pero cuesta tiempo y dinero —demasiado tiempo y dinero— lograr el nivel de calidad en el software que en realidad queremos”. Por lo general se subestima el testing estimando y dedicando poco esfuerzo y que a la larga trae costos por mala calidad, deuda técnica, poca mantenibilidad e impacto negativo en el negocio. De todos modos hacer testing es costoso y se piensa que no hacerlo reduce costos. Pues, merece la pena construir código de apoyo para la depuración, que puede llegar a ser el 50% del código a depurar, es costoso. Pero no hacer testing es más costoso.


Brooks argumenta que estas falacias son peligrosas y que los gerentes de proyectos y los desarrolladores de software deben ser conscientes de ellas para evitar cometer errores costosos y perjudicar el éxito del proyecto o la organización.


Este artículo es una interpretación realizada en mi lectura, por lo que recomiendo leer el libro y sacar sus propias conclusiones.


Referencias:

https://www.gestionenti.com/post/el-adi%C3%B3s-a-un-grande-se-nos-fue-frederick-p-brooks

http://tratandodeentenderlo.blogspot.com/2011/03/mythical-man-month.html


viernes, 24 de junio de 2022

Paper-Book: resumen de el nuevo nuevo juego de desarrollo de productos que dio origen a Scrum

Si quieres conocer realmente el corazón del marco de trabajo Scrum, debes leer el paper de Hirotaka Takeuchi and Ikujiro Nonaka que le dio origen a principios de los 80. Aunque, si no lo has leído, aquí te comparto mi resumen.

En su estudio y paper “The New New Product Development Game”, Nonaka y Takeuchi compararon una nueva forma de trabajo en equipo, con el avance en formación de scrum de los jugadores de Rugby, a raíz de lo cual quedó acuñado el término 'Scrum' para referirse a ella.


Estos autores ofrecieron el enfoque de Scrum como alternativa al enfoque tradicional secuencial (cascada) o al de "carrera de relevos", para el desarrollo de productos en el vertiginoso mundo actual, con contextos de requisitos inestables, donde se necesita velocidad y flexibilidad. Ellos propusieron un enfoque holístico, compuesto por un núcleo de seis características: 
  1. Control por misión (Built-in Instability): la alta dirección crea un elemento de tensión en el equipo al darle gran libertad para llevar a cabo un proyecto de importancia estratégica para la empresa y al mismo tiempo establecer requisitos muy desafiantes. Es decir: dar gran libertad y objetivos muy exigentes. Dar libertad con exigencia. Algo que los autores llamaron 'Built-in Instability' y que prefiero, por simplicidad, llamar "control por misión".

  2. Equipos autoorganizados: es un equipo que exhibe tres condiciones: autonomía, autotrascendencia y fertilización cruzada. En el día a día, la alta dirección rara vez interviene; el equipo es libre de establecer su propia dirección. En cierto modo, la alta dirección actúa como capitalista de riesgo. O como dijo un ejecutivo: “Abrimos nuestro bolso pero mantenemos la boca cerrada”.

  3. Fases de desarrollo superpuestas: es la integración de diferentes profesionales de una cadena de valor para lograr objetivos comunes, en vez del trabajo aislado y en secuencia. Aquí se introduce la idea del rugby, las fases se superponen considerablemente, lo que permite que el grupo absorba la vibración o “ruido” generado a lo largo del proceso de desarrollo trabajando como bloque unido.  Un equipo trata de recorrer la distancia como una unidad, pasándose el balón de un lado a otro, en equipo.

  4. Control sutil: se busca seleccionar a las personas adecuadas, crear un entorno de trabajo abierto, alentar a los ingenieros a salir al campo y escuchar lo que los clientes y stakeholders tienen que decir, establecer un sistema de evaluación y recompensa basado en el desempeño del equipo, manejar las diferencias de ritmo a lo largo del proceso de desarrollo y tolerar y anticipar los errores. La gerencia establece suficientes puntos de control para evitar que la inestabilidad, la ambigüedad y la tensión se conviertan en caos; y al mismo tiempo, la gerencia evita el tipo de control rígido que perjudica la creatividad y la espontaneidad fomentando el ‘autocontrol’. 

  5. Aprendizaje múltiple (Multilearning): hay que dedicar tiempo al aprendizaje individual constante, fomentando la iniciativa y el aprendizaje práctico por parte de los empleados y ayudando a mantenerlos al día con los últimos avances. Además incluye el aprendizaje en otras áreas de la experticia de cada profesional.

  6. Aprendizaje Organizacional: los autores proponen la 'transferencia organizacional del aprendizaje' que incluye el impulso para acumular conocimiento a través de niveles y funciones distintas en el ecosistema de la organización; y el impulso por parte de los miembros del equipo para transferir su aprendizaje a otros fuera del grupo. El conocimiento también se transmite en la organización al convertir las actividades del proyecto en una práctica estándar. Es decir que se busca en estos dos últimos puntos el aprendizaje multi-nivel, multi-funcional y transversal en la organización, algo que podemos llamar aprendizaje organizacional.


Si buscamos seguir estas claves en el desarrollo de software o en nuestra organización, nos estaremos acercando a este Scrum pragmático. El framework, en el fondo termina implementando estas ideas, aunque fue años más tarde cuando fue creado por Ken Schwaber y Jeff Sutherland, quienes le dan forma y lo popularizan, basados en la idea de estos autores, en sus propias experiencias y en los numerosos experimentos del incipiente framework hechos por Jeff. Pero esa es otra historia.




Nota: la traducción de las seis características no son textuales, sino que se ajustaron según el autor de este artículo tomando una licencia por didactismo, ya que algunas frases del Inglés generan algo de confusión en su interpretación.

miércoles, 22 de junio de 2022

Libro: reseña de El Arte de Hacer el Doble de Trabajo en la Mitad de Tiempo

 



Título: Scrum. El Arte de Hacer el Doble de Trabajo en la Mitad de Tiempo.
Autor: Jeff Sutherland.


Resumen del libro


Este libro de Sutherland está enfocado más en los aspectos de mentalidad y argumentaciones a favor del marco de trabajo Scrum, más que técnico, es decir que es más teórico que práctico. 


La propuesta del libro es extender el marco a la gestión de las organizaciones. Para el autor, Scrum puede contribuir a revolucionar la forma en que trabajan las empresas de prácticamente todas las industrias.


Al principio habla del origen de Scrum desde sus pioneros Hirotaka e Ikujiro, pasando por analogías de la aviación, el ciclo de PDCA y Shu-Ha-Ri. Luego habla sobre las características de los equipos de alto rendimiento, siguiendo con la gestión del tiempo con time-box, cómo disminuir desperdicios para ser más productivos, planificar y estimar trabajo, sobre la felicidad; y estimación y priorización de trabajo.


Sutherland plantea que que el deseo de la gerencia tradicional de “el control y predictibilidad” es inútil. Comenta que todo proyecto implica problemas y golpes de inspiración y, en consecuencia, busca responder las siguientes preguntas: ¿por qué no revisar con regularidad para ver si lo que se está haciendo sigue la dirección correcta y es lo que la gente quiere? ¿Por qué no revisar si se puede hacer mejor y más rápido y qué lo impide? Y a este proceso lo llama ciclo de «inspección y ajuste» de Scrum.


En general Sutherland nos explica Scrum.


Crítica


A favor

El libro nos da argumentos para persuadir sobre la utilidad de Scrum con una lectura menos estructurada que las guías de Scrum. Me gustó que en sus explicaciones toma ideas de Lean para argumentar la eficiencia de scrum. Además, finalmente, nos da varias frases, como memes, sobre la mentalidad de Scrum, como por ejemplo:

  • “Seguir ciegamente los planes es una estupidez”

  • “Fallar rápido para poder arreglar pronto”

  • “Cambiar o morir”

  • “Inspeccionar y adaptar”

  • “El éxito se basa en la eficiencia del equipo”

  • “No hay que señalar con el dedo ni culpar a nadie. Las personas no tienen la culpa de los malos resultados; son los malos sistemas los que tienen la culpa.”

  • “La multitarea te vuelve estúpido”

  • “Trabajar demasiado provoca errores”

  • “Si puedes cuantificar tu felicidad, podrás ver cómo mejora tu rendimiento.”


En contra

El título de este libro es bastante controversial. Pues, mi detector de humo se activa cuando oigo títulos con “afirmaciones extravagantes” y su título es de esos. Como lo diría Alistair, el título vende. Todos sabemos que el principio ágil es "minimizar el trabajo realizado", lo que apunta a lograr más con menos trabajo. En general, la gente ya está trabajando lo más rápido que pueden, no se trata de que hagan el doble de trabajo en la mitad del tiempo, eso es un imposible que no buscamos, y por mal atino suele ser lo que entienden muchos ejecutivos. Nadie va a hablar más rápido, programar más rápido ni pensar más rápido. Lo que quiso decir es más valor del mismo esfuerzo de trabajo o lograr más o mejores resultados con la misma cantidad de trabajo. 


Conclusión

Si bien no es un libro innovador ni de gran redacción literaria, es un libro muy recomendable si realmente se quiere entender Scrum desde un enfoque más teórico, de primera mano de uno de sus autores. Debería ser lectura obligatoria para cualquier Scrum Master que realmente quiere ejercer su rol con sabiduría.


Referencia: 




​​


Libro: Gestionar es gestionar el cambio

 


Les comparto el último libro que he escrito relacionado a organizaciones y gestión del cambio.


Este libro nos ayuda a pensar en el rol de los gerentes y estilos de gerencia adecuados para entornos hiper-complejos, algo caóticos y de extrema incertidumbre, como los días de crisis global, pandemia y guerras que han generado contextos cambiantes y desafiantes a nivel mundial. Nos ayuda a re-pensar la gestión del cambio para buscar lograr organizaciones hiper-resilientes.














Referencias:


martes, 4 de octubre de 2016

Libro: Scrum en las organizaciones

Comparto por este medio el libro que escribí sobre “Scrum en las Organizaciones”. Con este libro comparto una guía para trabajar bajo el marco de trabajo Scrum y para gestionar proyectos de Ingeniería de Software en forma ágil.

Este libro ofrece una guía para el conocimiento e implementación de una manera de trabajar y de gestionar proyectos de Ingeniería de Software, permitiendo encontrar prácticas emergentes en dominios complejos. En él se explica el sistema Scrum de un modo integrador desde diferentes perspectivas y fuentes de conocimiento, proporcionando un marco integral que incluye a los principios filosóficos, estructura, procesos y aspectos complementarios. 

Con este libro se busca ayudar a los equipos a avanzar de intentar emplear Scrum a ejecutarlo correctamente para lograr alcanzar los resultados que aún no se han logrado.

También busca ser una guía y ayuda para quienes se desenvuelven como Scrum Master de equipos de desarrollo de software.


Referencias: