22 agosto, 2006

¿Por qué no podemos ser amigos?

A veces parecemos políticos. Y no, no me refiero al "talante" de Zapatero, sino más bien a la continua regañina de Rajoy y sus compinches.

Está en los genes del hombre pelearse y organizarse en tribus, pero el conflicto entre diseñadores y programadores, tan antiguo que Ugh el cavernícola ya pensaba que Bork le había dado mal las especificaciones para organizar la caza del mamut, no beneficia a nadie.

Yo soy programador. Es cierto que he estudiado durante varios años para serlo, y me gusta pensar que este tiempo me ha proporcionado ciertas habilidades, más allá de las peculiaridades del C++, y me ha ayudado a desarrollar una forma de pensar estructurada. Me gusta analizar las cosas, me gusta tener algo claro antes de empezarlo. Me gustan la simplicidad y el orden. Si encuentro un problema, mi cerebro se pone a dividirlo en subproblemas y analizarlo antes de que pueda hacer algo para impedirlo.

Ahora bien, cuando me pongo a intentar inventar algo nuevo, a generar ideas revolucionarias, a ejercitar el pensamiento lateral, esa es otra historia. La creatividad se alimenta del desorden, del experimento fallido, de combinar lo que no tiene sentido combinar. Nos gusta trabajar en videojuegos porque es un entorno creativo, innovador. El diseñador es el responsable de ser creativo, y ese es un trabajo importante.

Ya hemos dicho en muchas ocasiones que el desarrollo de juegos no es una ciencia exacta. Incluso hacer una sencilla página web la mayoría de las veces tampoco lo es, y pocas cosas podría haber mejor estudiadas en los últimos años. Salvo que estemos haciendo un clon del Tetris, y aún en ese caso, va a haber aspectos del juego y de su construcción que desconoceremos, y que nos tocará aprender por el camino. A golpes, como suelen aprenderse la mayoría de las cosas. Esto vale para el diseñador que acaba teniendo que cambiar la mecánica de disparo, porque no encajaba con el ritmo de juego esperado, o para el programador que tiene que rehacer la pipeline de procesado de texturas porque había un problema con el canal alfa.

Es posible que durante este proceso de aprendizaje, desarrollo y crecimiento, el programador tenga un enfoque más analítico para solucionar problemas. Es posible que diga "ahora no es realista hacer una herramienta para colorear la sintaxis del script en el editor". También es posible que espere una visión más nítida del proceso de la que es realista esperar. El programador querrá saber cuantas balas por segundo y con qué ángulo de dispersión disparará el AK-47 antes de que se haya decidido si el juego es o no futurista.

El valor del diseñador en todo este proceso no está sólo en introducir unos números y colocar unos enemigos en el editor. Está en saber qué números y qué enemigos. Está en idear nuevas números que introducir, y nuevos tipos de enemigos que colocar. Al diseñador no le gusta cerrarse puertas. Posiblemente diga algo como "vamos a probar poniendo 30 unidades en cada tropa, pero esto puede cambiar". Y le gustaría poder convertir el juego de un Doom a un Fifa o a un Starcraft ajustando unos números en un fichero.

Ambos perfiles están destinados a enfrentarse, pero condenados a entenderse. Un equipo es la suma de toda la gente que hay en él. Toda. Si los programadores no respetan a los diseñadores, probablemente vean los cambios como caprichos, como el resultado de no saber lo que se está haciendo, y no como ideas fallidas, que en su momento parecían dignas de mérito, y que sirven de peldaño para llegar a las buenas ideas. Si los diseñadores no respetan a los programadores, pedirán herramientas imposibles y lo justificarán apuntando a otros paquetes de software y señalando que todo eso está ya funcionando, sin pensar que el esfuerzo de un desarrollo así quizás sea difícilmente recuperable y podría tener un impacto duradero.

A todos nos gustaría trabajar en ese estudio maravilloso, donde los programadores escriben código óptimo y sin bugs a velocidad de vértigo, y los diseñadores presentan documentos precisos y detallados, con todos los aspectos definidos y resueltos. Pero no existe, así que tenemos que salir adelante con lo que tenemos. Si a los diseñadores les falta experiencia, entonces los programadores tendrán que hacer un esfuerzo extra para facilitarles el aprendizaje, y compensar los errores que puedan cometer. Si es el equipo de programación el más débil, entonces los diseñadores tendrán que asumirlo y entender que posiblemente las herramientas sean sencillas y tengan bugs, que quizás tengan que ser más selectivos con los cambios que introducen, y que les tocará también hacer un esfuerzo extra para introducir el contenido.

Pero ante todo, hay que evitar caer en el error de cavar un foso alrededor de un equipo, para "protegerlo" del otro. No hay que dejarse llevar por el ego y menospreciar el trabajo, la dedicación y la ayuda que el otro equipo puede prestar. Ni es práctico que los diseñadores escriban un documento de 500 páginas y lo tiren por encima de la valla para que los programadores lo construyan, ni lo es que programación se cierre en banda y se niegue a escribir código o cambiar nada hasta que exista una definición milimétricamente precisa, o decida escribir algo ignorando los requisitos.

Apoyándonos unos a otros, siempre con honradez y camaradería, será más fácil sacar adelante el juego, habrá mejor convivencia, y los errores de unos y otros pesarán mucho menos. Es hora de terminar con la rivalidad y la sospecha. Hora de ponernos en el lugar del otro sin juzgarlo, y trabajar juntos con un objetivo común.


Mostrar/ocultar resto...

9 Comments:

At 22/8/06 12:40, Blogger Alvaro Vazquez de la Torre said...

Amén

 
At 22/8/06 15:04, Anonymous Anónimo said...

Me han colgado una frase que dije una vez en la pared, y dice "Somos un equipo, chicos. No hay bandos, sólo incompetentes". Vale, es broma. Pero lo que estaba tratando de comunicar, obviamente, es que la creación de 'bandos' dentro de un equipo siempre es dañina.

Entre un programador incompentente y un diseñador incompetente, el problema no es de comunicación, sino de incompetencia.

Entre un programador excelente y un diseñador excelente, el único problema que puede haber es el de los egos o la falta de respeto. Y se resuelve dejándose el ego en casa y apreciando lo que hace el otro en lo que vale.

El caso más peliagudo es el del programador que sinceramente quiere hacerlo bien y el diseñador que sinceramente quiere hacerlo bien. Pero a la hora de la verdad, los dos hablan en un idioma distinto. Así que como dice rosado, lo mejor que se puede hacer es aprender lo máximo posible acerca de lo que hace el otro, y tratar de encontrar un idioma común.

Una cosa, Sergio: en mi experiencia como diseñador, para los programadores 'poco detalle' significa 'insuficiente detalle' y 'mucho detalle' significa 'demasiado detalle'. La solución bucólica consiste en especificar con un grado 'intermedio' de detalle. Pero ese grado intermedio de detalle es sólo una palabra, no he visto una realización real, concreta y funcional del mismo.

Todo hay que decirlo, yo no soy un diseñador muy típico, ya que soy, a veces, bastante más programador que diseñador. Así que no voy a poder solucionar este problema para nadie; con suerte, para los programadores que tengo cerca.

 
At 24/8/06 12:02, Blogger Jordiver said...

Me gusta much el articulo. Te doy la razon sobre todo en lo de que esto es una cosa de equipo.

Es cierto que los diseñadores solemos escribir documentos muy vagos ciertas veces, quizas debido a la poca experiencia o porque la idea se esta gestando aun en nuestras cabezas. Todos tenemos que entendernos y saber que el codigo escrito 10 meses antes del final de juego se va a modificar mil veces hasta el final del desarrollo. Es algo lógico aunque hay veces que resulta cierto que somos mas un quebradero de cabeza para los programadores que otra cosa, precisamente debido a nuestra naturaleza de explorar todas las opciones posibles.

 
At 24/8/06 14:19, Blogger Unknown said...

Sergio, esa lagrimita en tu frase final! :)

Con lo que me he divertido yo dando caña precisamente a Rosado y Juand, jejeje

Ahora en serio, totalmente de acuerdo. Nunca he currado fuera de España, pero por el carácter español me da la impresión de que toda esta problemática es mucho más grave aquí.

 
At 25/8/06 13:03, Blogger Jordiver said...

En España no hay diseñadores seniors (no hay muchos) porque se deben largar afuera cuando lo ven posible.

Al menos yo lo haría.

 
At 27/8/06 23:14, Anonymous Anónimo said...

Pues yo se de bastantes programadores y grafistas que han emigrado, pero diseñadores... como mucho alguno que se ha ido a Cataluña. ;-)

 
At 1/9/06 12:40, Blogger Isilion said...

Lo que os cuento es una disgresión, pero esa es precisamente mi intención. Lo que me gustaría es transmitir la idea de que lo que se ha hablado aquí, también es válido si lo abstraemos del campo de los videojuegos. Ojalá pudiéramos aplicar esto a todas las facetas de nuestra vida cotidiana para mejorarla y también la de los demás.

En relación al comentario de Rosado:
===================================

Aquí os cuento un ejemplo real de lo que comenta Rosado.

El modelo de trabajo de "comunicación total" que se propone en este excelente artículo cargado de humanidad se corresponde perfectamente con el modelo plano de la organización ideal. En lugar de construir una estructura jerárquica donde nadie sepa qué pasa un nivel más arriba o más abajo, todos los niveles están a un nivel similar y la comunicación entre ellos es muy frecuente y abundante. Esto da más lugar a errores al principio, pero una vez todos se entienden, el sistema funciona a velocidades nunca vistas.

Este es un ejemplo real, pero ligeramente modificado para ilustrar lo que quiero decir:

En una empresa en la que trabajé hace años, teníamos turno de día y de noche. Evidentemente, las tareas eran distintas para cada turno.
- Por la mañana se atendían principalmente llamadas en castellano y de países con horarios similares a los nuestros (que por algún motivo no eran frecuentes).

- Por la noche se atendían menos llamadas, pero todas eran de un carácter más grave y siempre de países con horarios diferentes. A pesar de ello siempre había más tiempo, por lo que se procedía a avanzar trabajo de "Backoffice", administración, etc...

- Las personas que trabajaban en cada turno eran siempre las mismas.

En este modelo, cuando alguien necesitaba algo de las personas del otro turno y no estaba en el momento, siempre había grandes discusiones del tipo "No hacen nada! Sólo tienen que hacer esto y esto otro y ya está! Si no lo hacen es porque los de la noche son unos vagos y se pasan los turnos haciendo carreras de sillas y viendo películas en las pantallas de monitorización de redes."

Esto, a pesar de tener un grado de verdad (lo de las carreras de sillas), no se correspondía en absoluto con la realidad. La gente del turno de noche trabajaba tan duro como los de la mañana y se quejaban de lo mismo, pero desde otra perspectiva ("Por qué ellos tienen comedor y nosotros tenemos que comer en una sala fría y sin siquiera una mesa, al lado de la habitación de fumadores que está abierta totalmente? Llámame conservador, pero yo diría que eso es favoritismo.").

La solución, al final, fue bien sencilla. Simplemente se obligó a todo el mundo a ir variando los turnos. Los de la mañana aprendieron que los de la noche no eran unos vagos y la problemática del funcionamiento matutino sorprendió a los veteranos del turno de noche.

La conclusión fue que al final el funcionamiento mejoró de manera considerable simplemente porque cuando uno necesitaba algo de una persona de otro turno sabía qué implicaba el proceso y cómo ayudar a facilitarlo (lo cual a veces se traducía simplemente en tener más paciencia con los demás).

En relación al comentario de Juande
===================================

En una escuela de música por la que pululé durante un tiempo, existía la creencia de que si un músico es realmente bueno, no hace grandes alardes de ego. Además, un buen músico no teme compartir su conocimiento con otros.

Lo cierto es que he comprobado esto en algunas ocasiones y sí, creo que es verdad. Yo pienso que si eres bueno y lo sabes, no temes compartir tus conocimientos porque sabes lo que realmente vales y también que has llegado ahí porque has trabajado mucho. Así pues, si respondes a las preguntas de la gente, eso no te situará automáticamente en un nivel inferior o de desventaja. Si temes compartir tu conocimiento, normalmente significará que has aprendido algo por pura suerte (o por "malas artes") y que temes que compartir eso te devuelva a tu posición de "don nadie".

Esto es lo que algún libro de empresa describió como "share the log" (el ejemplo incluía algunos castores que construían juntos una presa). Entre programadores y diseñadores, también hace falta no sólo inteligencia emocional, sino la voluntad de "share the log".

Como ya se ha comentado, hablando se entiende la gente. Lo difícil es convencerles para que hablen entre ellos.

 
At 28/4/07 08:06, Anonymous Anónimo said...

EN VERDAD LOS ADMIRO...POR EL CONOCIMIENTO QUE DEMUESTRAN, POR LA MANERA COMO TRATAN ESTE TEMA, Y PORQUE ALGUN DIA QUISIERA SABER TANTO A OMAS QUE USTEDES...CLARO..CON MUCHO, PERO MUCHO ESFUERZO...

 
At 10/2/10 14:27, Anonymous Servicios Web said...

Hola,


Muy interesante el tema y muy real.
En nuestro equipo tenemos que administrar esas diferencias permanentemente.


Un saludo!

 

Publicar un comentario

<< Home