En lenguaje menos coloquial, les llamamos Frontend developers y backend developers. Hay demanda por estos perfiles, demanda en serio.

El frontend dev es un ninja del javascript, amante de jQuery, Mootols o incluso devoto de Yahoo por YUI. Le toca pelearse con algo de maquetación, así que el CSS está entre sus herramientas y seguramente es con quien quieres charlar de html5.

El backend developer nos habla en Ruby o Python con fuerza si es cool. Si es más tradicional es PHPero, aunque puede sumarle CodeIgniter, Symphony o Zend a su navaja suiza. Y en muchas empresas .NET pego con fuerza para sus apps web. Muchas veces se involucra con la administración de servidores (aunque ideal si hay un sysadmin para ello), maneja consultas a la base de datos, genera validaciones y sobre un framework establece la dinámica con que funcionará la aplicación web.

El problema es cuando ambos hacen lo mismo

Digamos que no son tan amigos y cada quien está muy reservado con su parte del proyecto. La lista de requerimientos para el backend incluye que genere un set de querys que ayudarán a procesar muchos datos, digamos, la lista de clientes o de ítems en un carrito de compra que vamos a trabajar en nuestra aplicación web. Genera las consultas y nos da el resultado en todos los formatos de moda: Hay .xml, Json, .rss, .csv y por si acaso un .txt. Si tuviéramos información geolocalizada, hasta un .kml estaría en lugar. Tarea lista, continúa peleando contra las posibles inyecciones SQL en el sitio y no quiere saber más de la data.

Entonces, el frontend ya tiene la data y tiene que mostrarla. Genera una interface demasiado 2.0 con drag&drop y juega con arrays de datos en javascript para ordenar estos datos de acuerdo a como los pida el cliente. Práctico, lindo, pero en algún momento ambos están jugando con información, no están del todo de acuerdo y duplican esfuerzos.

Leyendo a Harry Brundage me convenció de que las aplicaciones web hoy en día son demasiado grandes para escribirlas dos veces y el diversificar nos genera un problema mayor que no estamos atacando. El desarrollo web de hoy apesta!

Validación, aquí y allá. ¿Es necesario?

Vamos por el siguiente ejemplo práctico. Hay que validar un formulario para llenar un nuevo pedido. Obviamente, que esto toca hacerlo doble. Ni se te ocurra solo validar en javascript que algún listillo con el firebug instalado te va a poner en aprietos. Y es importante que la validación incluya mucho ajax para ir marcando en color rojo las cajas que no cumplen con la validación.

Y luego, al ritmo del botón de “guardar” validamos de nuevo, verificamos que nadie esté poniendo unas comillas de más y un INSERT o UPDATE para jugar con nuestro sistema. Si lo llegaran a intentar y la validación del lado del cliente no funcionó también hay que enviar un error, mejor si en formato amigable para que el framework de manejo de errores en la aplicación muestre una linda ventanita que te diga que no jodas.

¿Contratamos al que tiene doble personalidad y asume ambos roles?

Si lo tuyo es chico o quieres avanzar rápido, no hay nada mejor que contratar a un developer que pueda con todo. Vas a funcionar, vas a tener un prototipo sin tanto drama, pero no va a ser tan especializado. No imagino la magia que veo en Quora si no tuvieran las funciones tan especializadas, y es que el One-man-band ya está fuera de escena. Hay que especializarse, contratar a diferentes roles, retarlos y ver que trabajen verdaderamente en conjunto.

Aquí es donde muchos gerentes, project managers o team leaders toman un respiro y replican: Esto es casi como cuando nos tocaba que el diseñador cediera en el .psd para quien tenía maquetarlo. Por eso le enseñamos a los diseñadores a usar CSS y los convencimos de que así iban a ganarse la entrada al cielo.

Más especialización

Hemos caminado un largo recorrido para especializar muchas de las tareas de la vida diaria en la web y creo que la especialización va a hacerse mucho mayor. Agrega los retos del desarrollo móvil con todos los dispositivos que ya empiezan a acompañarnos en la forma en que consumimos la web. Lo mejor es que cada día conocemos perfiles mucho más avanzados que están revolucionando el ecosistema. Y si creíste que con saber un lenguaje de programación a fondo ya tenías todo listo para hacer tu trabajo, puedes ser un engranaje más en el motorcito que exige constante innovación y que de vez en cuando nos pongamos a pensar en todo el panorama, no solo en los detallitos.