Esta vez dí con una serie de cocina que me pareció muy interesante. La serie se llama Kitchen Nightmares. Trata sobre restaurantes en problemas que acuden a un chef experto para ser rescatados del desastre.
Por alguna muy extraña razón me sentí identificado con las personas que se dedican a la restauración y sin querer me chuté varios capítulos.
Sin duda me identifiqué con algunos casos comunes: clientes insatisfechos, pobre o nulo trabajo en equipo, tensión en los momentos de entrega, las malas prácticas, etc. Pensaba, WOW, yo tuve un cliente así o un compañero así o alguna vez estuvimos en una situación parecida.
Pero ¿en qué se parecen un restaurante
y el desarrollo de software (DSW)?
Una de las similitudes que encuentro entre la restauración y el DSW es que ambos comparten el objetivo de la satisfacción total del cliente de acuerdo a sus requerimientos y en eso se sustenta su fuente de ingresos.
Otra es que aunque el DSW es clasificado dentro del sector industrial, en la rama industrial del sector TIC (#58 para México), el software después de la instalación se comporta como miembro del sector servicios (mantenimiento, capacitación, soporte
técnico). La restauración pertenece al sector servicios.
Tratando de obtener alguna otra experiencia de estos episodios de cocina me encontré con conceptos de la restauración que sin duda podrían aplicarse al DSW.
Conceptos de la restauración
en comparación con el DSW.
El Menú (currículum de la empresa, portafolio de aplicaciones)
Es
una lista de los platillos que ofrece el establecimiento. Es ofrecida
al cliente para delimitar el tipo de comida que puede solicitar a la
cocina.
Soy de la idea de que todos los equipos de desarrollo deben delimitar su oferta: lenguajes de programación, plataformas, frameworks, aplicaciones. Es bueno ser flexibles, pero antes es mejor tener un punto fuerte diferenciador.
La demanda del comensal (los requerimientos).
Lo
primero que me llamó la atención fue que los comensales tenían ciertos
requerimientos con respecto a la comida: muy hecho, medio hecho, poco
hecho (refiriéndose a la cocción de la carne). Pero no todos saben mucho
sobre la comida y algunos piden sugerencias.
El camarero/Maitre (ingeniero de requerimientos)
El
mesero tiene el contacto con el cliente y le hace recomendaciones sobre
la comida, el mesero es un intermediario entre el cliente y la cocina.
Sabe de las limitaciones y posibilidades de la cocina para cumplir con
el cliente y en base a eso da sus sugerencias. Tiene amplios
conocimientos sobre la comida y el menú, pero no necesita saber cocinar.
Yo lo relaciono con el Product Owner de Scrum, pues es la voz del cliente en el proyecto o el ingeniero de requerimientos en las metodologías tradicionales. También puede fungir como usuario experto, tester, dado sus conocimientos de alto nivel en el proyecto.
La comanda (documento de requerimientos)
Una
vez levantado el pedido con los requerimientos del cliente, el mesero
lo lleva a la cocina, donde el chef con todo previamente organizado
comenzará a elaborar el pedido basado en la comanda. Esta incluye cierta
información como el número de mesa, el nombre del mesero y los términos de la orden.
El Chef (Jefe de Proyecto, Programador en jefe)
Es
el jefe de la cocina. Encargado de realizar las compras de la comida,
mantener la cocina limpia y ordenada. Contratar a sus asistentes,
dirigirlos y organizarlos. También de diseñar el menú, del control de
calidad de la comida y por supuesto cocinar. Debe ser el más
experimentado y con más conocimiento en la cocina.
Administrador del restaurante.
Se encarga de administrar los recursos del restaurante. Llevar las cuentas, pagar los salarios y propiciar todas las condiciones para que el lugar vaya viento en popa.
Aunque son vistos como innecesarios por los programadores, los administrativos son fundamentales para facilitar los procesos de desarrollo, para que los programadores no desvíen su atención del desarrollo.
Personal de Cocina (Equipo de desarrollo)
Aunque en los equipos de desarrollo modernos generalmente no existen jerarquías como en la cocina, sí existen roles.
Así como en la cocina hay segundo chef, mozo y jefe pastelero, por poner
ejemplos, en los equipos de desarrollo existen roles como diseñadores,
programadores y testers por mencionar algunos.
Componentes del Menú
- Comida del día (Software desarrollado, librerías, subrutinas, etc)Son
platillos preparados previamente por el chef y sus asistentes para
amortiguar la cantidad de comida a cocinar durante los turnos de
servicio.
- Comida a la carta (Software a la medida).Es
comida que se prepara bajo demanda del cliente. Para ello se requiere
que sea de calidad, en un tiempo razonable y que cumpla los
requerimientos del cliente. Es el producto más complejo que sale de la
cocina.
¿En qué se diferencia un restaurante
del DSW?
Es un mundo de diferencias sin duda, pero una de las principales diferencias es que en el software existen requerimientos inestables y en la restauración una vez levantada una comanda, generalmente esta no cambia.
La restauración se basa en una estructura jerárquica vertical (chef, segundo chef, cocineros, mozo) y el DSW, por lo menos en las metodologías ágiles, está basado en una estructura horizontal de roles.
Frases del Chef Ramsey.
En la serie, el Chef experto que llega a ayudar a los restaurantes en desgracia, resultó todo un personaje. Y en los capítulos que ví, mencionó algunas frases que, desde mi punto de vista, pueden aplicarse al DSW. He aquí las que alcancé a anotar:
"Los errores se quedan en la cocina"
"Comienza por hacer bien lo básico"
"Te esfuerzas en los puntos equivocados"
"Si a un chef no le gusta su propia comida
¿Cómo esperar que le guste a los clientes?"
"Si llevaras el peso que
este tío y su mujer
llevan sobre sus hombros,
no tendrías esa maldita sonrisa"
"Reduce un 10% diario las excusas"
"Sin importar lo buena que sea la comida, tienes que comprender exactamente cada aspecto de tu negocio, y en las cosas que no comprendes, buscar consejo antes de acabar jodido"
Desafortunadamente, no anoté los capítulos en que fueron hechas las frases, sé que es un descuido de mi parte, pero no pensé hacer un post de eso. Simplemente espero sean de utilidad.
Fuentes:
http://es.wikipedia.org/wiki/Ma%C3%AEtre
http://iesdiegodepraves.centros.educa.jcyl.es/sitio/upload/Comanda.pdf
http://es.wikipedia.org/wiki/Scrum
http://es.wikipedia.org/wiki/Sommelier
http://oaxacaturismohp.blogspot.mx/2012/03/puestos-y-funciones-del-personal-de.html
http://www.slideshare.net/Isa06t/roles-desarrollo-software
http://es.wikipedia.org/wiki/Industria
http://www.canacintra.org.mx/sectores/index.php?option=com_content&view=article&id=100&Itemid=118
http://es.wikipedia.org/wiki/Sectores_de_producci%C3%B3n
http://es.wikipedia.org/wiki/Turismo
http://es.wikipedia.org/wiki/Ciclo_de_vida_del_producto
http://es.wikipedia.org/wiki/Sector_servicios
http://es.kioskea.net/contents/223-ciclo-de-vida-del-software
http://www.eduardoriol.com/%C2%BFpor-que-los-jefes-de-proyecto-ganan-mas-que-los-programadores/
http://spanishpmo.com/index.php/jefes-de-proyecto-versus-programadores/