Guias de estilo en los equipos de desarrollo

Cuando desarrollamos un producto o proyecto en equipo es interesante que existan unos criterios mínimos comunes entre todos para que nuestro código y proyectos sean lo más homogéneos posibles. Con ello conseguimos importantes beneficios

  • Mantenibilidad del proyecto
  • Evitar código spaguetti
  • Optimización de recursos evitando repetir el mismo trabajo
  • Mejor lectura del trabajo por parte de todos
  • Evitar conflictos entre los desarrolladores

El hito más importante es conseguir que ningún desarrollador reconozca su trabajo entre el de sus compañeros en base al estilo personal de cada uno.

Cada persona tiene su “guía de estilo” personal que va cambiando a lo largo del tiempo y la experiencia. Debemos conseguir tener una “guía de estilo” común para el equipo y que vaya mejorando a lo largo del tiempo.

Guía de Python
Google C++ Style Guide
Guía de Velneo vDiseño

Checklist para un cambio tecnológico en la empresa

En las empresas suele ser habitual tener que hacer todo tipo de cambios para adaptarse a las diferentes situaciones. En especial los cambios de herramientas tecnológicas.
Lo más importante es saber en todo momento que es un cambio que afecta a personas y que en muchas ocasiones poco importa lo bueno o lo mala que sea la herramienta. La palabra clave para el cambio se llama comunicación. Es necesaria mucha comunicación, es mejor en exceso que en defecto.

Por la experiencia de los últimos cambios tecnológicos en los que he estado involucrado he creado este checklist

1. Conocer la nueva herramienta y probarla

Es importante tener claro que la nueva herramienta es la más adecuada para la empresa y deberemos hacer las pruebas necesarias para no tener sorpresas de última hora.

2. Conocer las fortalezas y debilidades de la herramienta que vamos a sustituir

Debemos conocer la herramienta que vamos a sustituir o el proceso que vamos a quitar. Todo lo que desconozcas de ella podrá ser utilizado en tu contra 😉

3. Comunicar las intenciones y las motivaciones del cambio

A las personas les gusta conocer los porqués, si se hace el cambio es por algún motivo. Esta fase es muy importante ya que es donde ganamos aliados

4. Aclarar dudas con los detractores y personas clave

Siempre tendrás personas con dudas, que no les gusta el cambio. Algunas estarán molestas porque no les consultaste o porque se enteran a última hora. Es importante hablar con todos ellos y que se sientan escuchados. En muchos casos te aportarán información importante que no has tenido en cuenta.

5. Formación a todos

La formación es la excusa perfecta para que todos se imaginen el cambio. El primer paso para aceptar un cambio es imaginarte a ti mismo con el cambio realizado. La formación nos ayuda a sacar a las personas del día a día para que se puedan imaginar una vez realizado el cambio.

6. Comunicar que ya queda poco y que estarás personalmente para ayudar

A todo el mundo le gusta saber que estarás allí y que si hay problemas podrás ser totalmente accesible. Es importante transmitir seguridad. Serás el socorrista de la piscina, no importa si sabes nadar o no, lo importante es que estés atento.

7. Cambio gradual

Siempre que puedas busca la posibilidad de implantar la nueva herramienta de forma gradual, primero 2 usuarios, luego 10,  luego 100. Siempre salen detalles o elementos no previstos que puedes ir solucionando tranquilamente cuando el cambio afecta a pocos usuarios

8. Pedir confirmación de que el cambio ha ido bien y si hay algún detalle pendiente

Algún usuario puede estar mal a gusto con el cambio y no transmitirlo directamente, suele ser muy efectivo pedir confirmación del cambio y enterarte de los pequeños flecos que puedan quedar.

¿Qué NO es una iteración?

Ya que sabemos lo que es una iteración deberíamos tener claro lo que no lo es.

Iteraciones de tiempo variable. Un concepto clave en la iteración es el tiempo, todos sabemos que tenemos 24 horas en un día, no sirve decir a última hora, alarga hoy el día en una hora que necesito acabar un trabajo. Si en esta iteración has fallado, reconócelo y cambia algo para que no vuelva a suceder, cambiar la fecha de la iteración en el último momento no es viable.

La iteración no es un hito/meta Cuando pensamos que una iteración es el día de salida de la versión es que estamos confundiendo términos. La iteración es todo lo que se repite, tiene un principio y un fin.

Una iteración no es privada o pública, los entregables serán públicos o privados pero la iteración es lo que nosotros hacemos y repetimos cada vez para hacerlo cada vez mejor y más completo.

No validar el resultado de la iteración.  Cuando hacemos algo repetidas veces y no evaluamos sin el resultado ha sido bueno o malo, difícilmente sabremos si lo hemos hecho bien o ha salido mal y hay que cambiar cosas.

Hacer algo perfecto para no tocarlo jamás. El que itera intenta hacer las cosas lo mejor posible con los recursos que tiene (tiempo y conocimientos) pero también es consciente que en la siguiente iteración puede mejorarlo aún más.

Una iteración que siempre hace lo mismo y no mejora Quiere decir que no se adapta a los cambios y no mejora nada, se llama “rutina”. No existe ningún tipo de evolución, acabará siendo un fracaso.

Querer llegar al objetivo de un único salto. Si quiero en una iteración conseguir mi objetivo lo normal es fracasar, porque nunca lo has hecho antes y no conoces lo que necesitas ni tus capacidades para ello. Da pasos y no des saltos.

¿Podría Jcobos haber hecho Velneo V7 si no hubiera hecho 5 veces la plataforma?
¿Podría Nadal ganar al tenis sin haber jugado cientos de miles de partidos?
¿Podría Mou ser tan simpático con los periodistas si no hubiera estado en cientos de ruedas de prensa?
¿Podrían los seres humanos ser una especie tan avanzada si no hubiera evolucionado generación tras generación?

¿Qué es una iteración?

Últimamente estamos hablando en muchos frentes de esta palabra. Pero realmente no sabemos exactamente que significa y que nos puede aportar. Unas pistas :

En el colegio:
Una iteración es un curso de un año en el que tenemos que recibir clases, tener exámenes, hacer trabajos y cada año va incrementando la dificultad para hacernos personas con más conocimientos.

En los días:
Cada día es una iteración, hacemos básicamente lo mismo ( desayunar, comer, viajar, etc ), pero cada día intentamos hacerlo mejor. Cuando añadimos una cosa nueva que creemos que nos aporta (ir a la piscina) al principio nos cuesta, pero al cabo de un tiempo lo hacemos sin problema y nadamos muy rápido. Si vemos que algo no es bueno, ver mucho la tele, en la siguiente iteración (al siguiente día) lo intentamos reducir o quitar.

En una empresa de software
Cada versión o periodo de tiempo, se hace siempre las mismas cosas ( probar, programar, informar, enviar mails, hacer campañas de marketing, instalar, evaluar, etc ) Con las iteraciones lo que intentamos es hacer siempre lo mismo, un poquito mejor. Quitando lo que ya no vale y añadiendo cosas nuevas que nos ayuden a cumplir nuestro objetivo.
Cada iteración nos cuesta menos hacer las cosas, porque ya las hemos hecho antes y hay poco nuevo que descubrir.

La gestión de iteraciones nos sirve para muchas cosas:

Problema : Quiero adelgazar

  • Opción sin iteraciones : Me hago una dieta puntual.
  • Opción con iteraciones : Intento cambiar algo en mi iteración diaria para que dentro de un año tener mejor figura.

Problema : Quiero que mis compañeros me valoren mejor

  • Opción sin iteraciones : Les invito a cenar.
  • Opción con iteraciones : Hago un feedback cada 6 meses, les escucho e intento ir cambiando esos detalles

Problema : Quiero subir el Everest

  • Opción sin iteraciones : Muero en el campo base 1 por cansancio
  • Opción con iteraciones : Subo montañas de 2.000 metros, luego de 3.000 metros, luego 5.000 metros, luego de 7.000 y luego subo al Everest

La gestión por iteraciones no sólo nos ayuda a conseguir nuestro objetivo, sino a ir adaptándonos a los cambios ( los nuestros, los del entorno y a los del objetivo ) a lo largo del tiempo.

¿Por qué los viernes y los lunes no son buenos días para hacer cosas importantes?

Generalmente para hacer algo importante y delicado, se necesita mucha concentración y mucho tiempo a posteriori por si aparece algún problema.

Si queremos tener garantía de que algo salga mal lo que debemos hacer es

  • Hacer las cosas con prisas
  • Ponerlo a funcionar y marcharme corriendo
  • Hacer las cosas sin estar plenamente concentrado
  • Estar cada uno del equipo a distintas guerras

Los viernes suele ser ese día en que muchas personas ya piensan en el fin de semana y acabar las cosas para que no le quede nada pendiente, la prioridad es acabar la semana y descansar mentalmente el fin de semana. Día de acabar

El lunes es el día en que tenemos que resituarnos, preparar la semana, contar a los compañeros las aventuras del fin de semana y empezar con energía la semana. Día de organizarse

El resto de días de la semana, prácticamente sabemos lo que tenemos que hacer, estamos situados, orientados y con ganas de hacer las cosas bien. No hay problema echarle más horas a un tema para que quede perfecto, siempre tenemos más días para ajustar tiempos.

Buscando como hace las compañías para sacar productos :

Microsoft
Parches de seguridad – Martes – http://en.wikipedia.org/wiki/Patch_Tuesday

Ubuntu 11.10 – Versión – Jueves 13 Octubre 2011
Ubuntu 11.10 will be published on Jueves, October 13, 2011 for free public download.

Firefox 7.0 – Versión – Martes, 27 septiembre, 2011
Mozilla Firefox Significantly Reduces Memory Use to Make Web Browsing Faster

Google Chrome 15 – Versión – Martes, 25 octubre 2011
Making Chrome even more app-ealing

Mac OS X Lion – Versión – Miércoles 20 de Julio de 2011
OS X Lion ya está a la venta en el Mac App Store

Adobe – Versión – Martes 20 de septiembre de 2011
Adobe Unveils Photoshop Elements 10

QT – Versión – Jueves 29, de septiembre de 2011
Qt Creator 2.3.1 released

Pero si te preguntas, ¿No hay excepciones?
Efectivamente, el lunes y viernes son perfectos para las excepciones, es genial, cuando algo va mal y no puede ser el martes, el miércoles o el jueves, tienes dos días más de comodín!