Detrás de esta simple pregunta hay mucha historia. La respuesta correcta podría acabar con la eterna lucha entre diseñadores y programadores, pero como es lógico, no hay una respuesta correcta.
Se han escrito miles y miles de palabras defendiendo el sí o el no. Vamos a por otras mil.
Un poco de contexto
Unicornios. Esa es la palabra utilizada para definir a esos currantes que lo mismo te diseñan un logotipo con Illustrator, te montan una infraestructura con Docker en producción o te programan una aplicación de gestión en cualquier lenguaje de programación trendy.
El nombre no tiene mucho misterio, simplemente deja patente una cosa: que no existen. ¿O sí?
En esta época tecnológica que nos está tocando vivir, en la que vamos a un framework, app rompedora o tendencia de estilo nuevo cada día, parece que es obligatorio saber de todo. Y como ya habrás vivido en tus propias carnes, es imposible estar al día. Simplemente no hay tiempo material para ello.
Parece que la especialización se desprecia, y hace al especialista un vago que no quiere estar en la ola tecnológica de turno, aunque por su trabajo seguramente ni le va ni le viene que haya un nuevo framework que permite escribir CSS directamente en Javascript y prescinde de nuestras queridas CSS.
Pero también existe la corriente contraria: la especialización hace al profesional bueno en su campo, saca lo mejor de él y permite la realización personal si esta especialización es su vocación y, como debe ser, disfruta de su trabajo.
Pero especializarse no implica el darle la espalda a todo lo que escapa a tu tarea principal, y más si tu trabajo implica que una parte de tu equipo lo coja y lo implemente en una fase distinta del proceso.
¿Debe un diseñador web saber programar?
En mi opinión un diseñador web no debe quedarse en hacer un mockup con Photoshop y pasárselo al compañero o departamento de turno. Supongo que habrá muchas empresas en las que esto sea así debido a su estructura, pero creo que es un gran error.
El diseñador debe acompañar las diferentes etapas del proyecto, ya que es el que tiene una visión global de cada paso y dará valor a la fase de maquetación y programación desde el primer minuto.
Y para que esto ocurra, el diseñador no debe saber programar: debe conocer cómo funciona el código en el que su diseño va a ser implementado. Conocer los límites del mismo y adaptar acorde el diseño.
Un diseñador gráfico realiza su diseño según el tipo de soporte en el que se vaya a mostrar su trabajo: conoce los tipos de papel más usados, los tipos de tintas, modos de impresión, tipografías, etc. Un diseñador web debe hacerlo también conociendo el "soporte" en el que su trabajo se va a implementar y así definir los límites del mismo. Ojo, no estoy diciendo que se ponga límite a la creatividad, sino ser creativo conociendo los límites.
Que un diseñador web conozca HTML, CSS y un poquito de JS creo que es esencial. Que sepa programar en PHP, no; pero sí saber qué es, cómo funciona y, por ejemplo, qué sistemas de plantillas se usarán en el proyecto. Con esto en mente seguramente el diseño se adapte mucho mejor al medio y nos ahorraremos "sorpresas".
A mi personalmente no me gusta realizar los mockups con Photoshop, prefiero hacerlo directamente en HTML y CSS partiendo de los wireframes que previamente he generado en Sketch o a lápiz. Esto implica tener conocimientos de HTML y CSS, de Twig , Haml u otro motor de plantillas, saber un poco de JS… y eso no es saber programar.
Echando un vistazo al panorama actual y viendo la proliferación de herramientas como Angular, Ember o React en el mundo JS o Symfony, Laravel y demás en el mundo framework PHP o de cualquier otro lenguaje de programación, no está demás conocer cómo funcionan, cómo se estructuran y dónde están sus límites para tenerlos en cuenta a la hora de diseñar.
Por cierto, el debate sobre si un diseñador debe saber de UX, IA (y viceversa), junto con todo el humo y confusión que existe tras estas siglas, lo dejaremos para otra ocasión.
¿Debe un programador saber diseñar?
Dándole la vuelta a la tortilla creo que estamos en la misma situación. Un programador no debe saber diseñar, pero sí conocer cómo funciona esa etapa y cómo poder implementarla en las aplicaciones.
Que el programador tenga una visión global desde el inicio de lo que va a ser el producto y conozca lo que se va a encontrar en poquito tiempo, cuando UX y diseño vayan entregando sus iteraciones, creo que es esencial. Obligatorio. Mandatorio. Lógico.
Desde mi punto de vista, tanto los diseñadores como los programadores (y también UX, dueños de producto… y por supuesto el cliente ) deben ir unidos de la mano en todo el proceso.
En un entorno ágil la incertidumbre se diluye mucho más rápidamente y todos aprenden de todos. Esta es la clave de un equipo multidisciplinar.
Entonces… ¿sí o no?
Pues como veis no se trata tanto de saber programar sino de conocer las herramientas que se van a usar en el proyecto, conocer el proceso completo y crear tus diseños basándote en todo ese feedback del equipo y conocimiento del entorno de desarrollo. Y todo esto se puede resumir en ventajas:
- Conocimiento del medio en el que el producto se va a desarrollar.
- Lógicamente ofrece una ventaja competitiva con respecto a otros diseñadores.
- Mejora la comunicación con el equipo a lo largo de todo el proceso de desarrollo del producto.
- Y por supuesto, cuanto más sepas mejor diseñador serás.
Y esto quiere decir que se acabó eso de que el "departamento de diseño" le pasa los .PSD al "departamento de desarrollo" por debajo de la puerta. Si en tu empresa se sigue haciendo así, haz que cambie.
Espero vuestras opiniones en los comentarios y/o redes sociales. Sé que es un tema muy subjetivo y seguro que cada uno de nosotros tiene una opinión: vamos a debatir.