Tuesday, September 20, 2011

10 libros esenciales sobre planificación y gestión de proyectos

Si tuviérais que recomendar 10 libros para aprender gestión y planificación de proyectos (o para enseñar! :P), ¿cuáles serían vuestros "top 10"?

Voy a detallar cuáles elegiría yo, e incluyo una encuesta para hacerlo todavía más difícil y quedarse con los 3 más importantes.

Generales

Cubren todo sobre planificación y gestión, no sólo un área en particular.

Rapid application development - 1996

Steve McConnell es uno de mis autores favoritos, pero tengo que elegir así que me quedo con Rapid Application Development

Se lanzó en 1996 así que puede sonar un poco desfasado para quienes les gusta seguir las últimas tendencias, pero realmente en "rapid" están todos los principios "agile".

Cubre todo, y además con casos de estudio en forma de historias reales, que lo convierten en un texto muy fácil de leer. Si tuviera que quedarme con un único libro... sería "rapid"! Destacaría el capítulo sobre "classic mistakes" en el que se hace un estudio exhaustivo de los errores clásicos de gestión de proyectos, incluyendo un "check list" para que nadie los vuelva a cometer ;)

Code Complete 2 - 2004

Code Complete trata sobre código... ¡¡un libro sobre código en una lista sobre gestión de proyectos??

En mi opinión Code Complete, también de Steve McConnell, es IMPRESCINDIBLE. Es cierto que esta lista está orientada a gestión de proyectos software y... ¿se puede gestionar un proyecto sin conocer a fondo cómo escribir código? Creo que no. Discutible, seguro.

Incluye secciones sobre "code reviews", "walkthrough", herramientas, etc.

Estimación

No es lo mismo estimar que planificar, pero se necesita una buena estimación para poder colocarla sobre un calendario, dividir en tareas y convertirla en una planificación.

Software Estimation Black Art - 2006

Y otro de McConnell... El título es más largo, podéis encontrar el link a Amazon aquí.

Sencillo de leer y muy completo.

Hace una diferenciación entre la ciencia de estimar (COCOMO, puntos función...) y el "arte" de estimar y se centra en éste último, introduciendo una serie de técnicas sencillas que logran resultados muy buenos a muy bajo coste.

Mi parte favorita: la técnica PERT y T-SHIRT Sizing... (será por eso que es lo que usamos en Códice :P)

Agile Estimating and Planning - 2005

Cambio de autor y comienzo con Mike Cohn. Se centra en técnicas ágiles de estimación, habla del "cono de incertidumbre" igual que lo hace McConnell, explica el "planning poker", las diferencias entre "ideal hours" y "story points" y cuándo aplicar cada tipo. Después pasa a cómo gestionar iteraciones, releases, etc.

Se solapa un poco (en resultado y no tanto en técnicas) con "Black Art" pero leer ambos da una visión más completa.

Agile Estimating and Planning

Recursos humanos

Sólo he elegido un libro para esta parte, Peopleware, todo un clásico (1987) que en su día fue el único texto sobre la gestión de personal en desarrollos de software y estudia lo que nos motiva y desmotiva, siempre desde la visión de un programador.

Me impactó cuando lo leí por primera vez y por eso creo que sigue siendo interesante. Cubre temas tan importantes como las distracciones causadas por el teléfono (hoy en día hay que añadir el email), la distribución ideal de la oficina, el dilema de sobrestimar o subestimar (esto también lo cubre McConell en "Black Art") y muchos otros puntos.

Métodos ágiles

Hoy en día es importante aprender métodos ágiles. Hace 10 años eran "lo próximo", hace 5 eran "lo nuevo" y hoy en día son "la tendencia".

No quiere decir que no haya otras formas de gestionar proyectos, pero todo lo "agile" merece la pena para completar conocimientos y aprender técnicas que especialmente en equipos pequeños y áltamente motivados son muy útiles.

Agile project management with Scrum - 2004

El libro de SCRUM por Schwaber. Los dos primeros capítulos te dan una idea muy clara de lo que es scrum, por qué es importante y en qué consiste. El resto del libro profundiza en detalle en cada concepto. Empieza con la idea del "control descentralizado" (navegación aérea frente a tráfico de automóviles) y cómo sacar provecho de que cada uno "sepa lo que tiene que hacer" en base a unas reglas determinadas.

Es un libro interesante, clave para aprender SCRUM.

Hay muchos links, webs, posts (de todo) hoy en día que explican de qué va SCRUM y seguro que muchos se entienden mejor que este texto, pero volver a "la fuente" es siempre una buena idea ;)

Manage it - 2007

Manage it! es un manual, con problemas concretos y respuestas concretas, de cómo gestionar proyectos mediante métodos ágiles.

El capítulo "schedule games" es una joya. Te dice cosas tan útiles como por ejemplo cómo gestionar a un jefe que siempre te dice que todo es urgente ("pants on fire", o "el culo en llamas" como lo tradujo un alumno mío hace un par de años :P), "la esperanza es la única estrategia" y otros muchos.

Leí aquí por primera vez lo que era un "Hudson bay start", una técnica muy interesante para probar si tu proceso funciona o no, inspirado en lo que hacían los antiguos exploradores que se iban al norte de los grandes lagos.

Agile Software Development - 2002

El primer libro que incluyo de Robert C. Martin. Es un autor que me gusta, aunque sus detractores dicen que "Uncle Bob" lo mejor que hace es autopromocionarse.

Agile software development habla de muchos aspectos ágiles, desde pair programming, test driven development (TDD), patrones, el agile manifesto, dependency inversion principle y muchos otros puntos.

Todos los ejemplos van sobre Java pero hay otra versión para C# también interesante.

Implementing Lean Software Development - 2006

He escogido uno de los libros de Poppendieck sobre "lean" porque los considero todos muy interesantes y muy instructivos.

Desde el concepto de "eliminate waste" que asocia en software a no tener tareas sin terminar (toda una cruzada), hasta "develop the two alternatives", todo interesante y con aplicación práctica. Implementing lean software development

Una historia para encontrar errores clásicos - ShowStopper! - 1994

Show Stopper habla de la historia del desarollo de Windows NT. Me resulta muy curioso que, en clase, tengo que contar que NT es la base de Windows XP, Vista, etc... (pasa el tiempo :P).

No es un libro de texto, es más bien una novela, pero cuenta los problemas, las aventuras, las heroicidades, los éxitos y los fracasos del equipo de Dave Cutler (ex Digital, líder del sistema operativo de Microsoft hasta hace muy poco tiempo) mientras construían NT.

Lo recomiendo porque además de cultura general (nombres e historias de ingenieros brillantes) proporciona una oportunidad de detectar muchos de los "classic mistakes" introducidos por McConnell en "Rapid App Development"... y de discutir sobre lo que hicieron bien y mal.

El imprescindible - 1995 (segunda edición!)

Si hay un libro clásico y mítico es The Mythical Man Month". Muchas veces digo (medio en broma) que hay que leerse un trozo por lo menos, porque cualquier artículo o post que se precie sobre gestión de proyectos debe referenciar "man month"... :P

La idea de "silver bullet" en software, los "surgical teams", la idea de la división en analistas, programadores y testers... todo biene de Brooks en este libro!! Un mito.

Extras

Los he metido en esta categoría porque quería elegir sólo 10 libros, y porque aunque son muy interesantes, no todos encajan directamente con planificación de proyectos.

  • The pragmatic programmer. Otra obra maestra según muchos, a la altura de "Code Complete". Cuenta "de todo". Desde por qué arreglar defectos cuanto antes para que el software no empeore (broken window) hasta qué herramientas usar en un desarrollo.

  • Coders at Work. Lo metería en la misma categoría que "Show Stopper". Es un conjunto de entrevistas a grandes programadores. Muy interesante.

  • Succeeding with Agile. Un complemento interesante para aprender de SCRUM. Lo compré en cuanto salió pero Mike Cohn me defraudó un poco aquí, sin embargo a mucha gente le gusta.

  • Driving the technical change. Otro libro de la editorial de "Pragmatic Programmers". Me gusta porque te enseña a tratar con los diferentes perfiles de la gente frente a un cambio. Importante para aprender cómo "vender" una nueva técnica o herramienta (o idea) dentro del equipo, cómo reaccionar ante objeciones (el pesimista, el entusiasta, el aguafiestas...). Muy bueno.

  • Pomodoro. Todo sobre la técnica de gestión de tiempo "Pomodoro". Muy interesante.

  • Pragmatic thinking and learning. Te explica, en plan programador, cómo funciona el cerebro. Por ejemplo, ¿por qué después de estar bloqueado con un problema te vas en el coche a casa y mientras conduces surge la solución? Pues hay una explicación ;)

    Y, bueno, podría seguir con muchos más como Release it!, Pragmatic project automation, pero se hace ya muy largo ;)

    Tendría que haber añadido alguno sobre gestión de configuración de software (SCM - software configuration management) pero lo dejo para otra "entrega" :)

  • Sunday, October 26, 2008

    Jugando al poker

    Hay algunas técnicas de estimación en métodos ágiles que buscan ser lo más originales posibles, y la de "playing poker" creo que lo consigue.

    Echad un vistazo a:

    http://www.planningpoker.com/

    Para información más detallada sobre el tema hay un par de vídeos en YouTube que merecen la pena:

    http://www.youtube.com/watch?v=fb9Rzyi8b90

    http://www.youtube.com/watch?v=jeT0pOVg0EI

    Monday, May 05, 2008

    Desarrollo iterativo frente a incremental

    Una imagen vale más que mil palabras, echad un vistazo a la diferencia entre desarrollo iterativo e incremental aquí:

    http://jan-so.blogspot.com/2008/01/difference-between-iterative-and.html

    Tuesday, January 15, 2008

    Puntos de función y casos de uso

    Un artículo interesante sobre casos de uso y puntos de función en el portal de Calidad del Software

    Tuesday, November 27, 2007

    El papel del liderazgo en el desarrollo de software

    Un nuevo vídeo de Mary Poppendieck (que a estas alturas ya debería sonaros a todos). En esta ocasión habla sobre la importancia del liderazgo en desarrollo de software, y sobre los cambios de perspectiva que se han experimentado desde la dirección clásica hasta la actualidad.
    http://www.infoq.com/presentations/poppendieck-agile-leadership

    Wednesday, October 24, 2007

    The podcast for professional developers

    Hay una web con un montón de información interesante, en formato podcast, sobre ingeniería de software.

    Echad un vistazo a www.se-radio.net, especialmente al que habla sobre SCRUM.

    Sunday, October 21, 2007

    Refactoring

    El pasado viernes en clase surgió el tema del refactoring. Si alguien tiene curiosidad en ampliar conocimientos sobre el tema puede consultar la web www.refactoring.com y el libro Refactoring: Improving the Design of Existing Code