El otro día me topé con un artículo de Hackanoon que planteaba algunas ventajas de desarrollar una web desde cero. A la brava. A pelo. From scratch...
El autor asegura que prefiere desarrollar sus productos línea a línea, sin usar librerías ni frameworks. Que así es como uno aprende, dice. Y la verdad es que estoy de acuerdo en ese punto: desarrollar un website desde cero es la mejor forma de aprender.
¿Pero proporciona alguna otra ventaja interesante? ¿Merece la pena la inversión de esfuerzo? Y lo más importante: ¿quién en su sano juicio programaría en 2019 una página web etiqueta a etiqueta?
La pregunta puede resultar algo capciosa. Primero hablemos de ventajas e inconvenientes:
Inconvenientes de programar un sitio web desde cero
I. Poco ágil
En ciertos proyectos el time-to-market es de vital importancia. Desde ese punto de vista, desarrollar desde cero no es nada ágil, sobretodo si estamos en un marco de trabajo tipo Scrum o si el objetivo es montar un prototipo. Reciclar código de terceros, total o parcialmente, permitiría hacer una web mucho más rápido.
II. Curva de aprendizaje
Los lenguajes front-end deben convertirse en tu segundo idioma. Eso requiere mayor tiempo de aprendizaje del que necesitas para adaptar un simple framework. Para eso sólo tendrás que leerte la documentación sin necesidad de entender qué hay debajo..
Además de ser un experto en esos lenguajes también deberás dominar las buenas prácticas de programación. Y hay que hacer mucho hincapié en esto, pues los frameworks ya implementan esas buenas prácticas.
III. Difícil de mantener
El código escrito desde cero requiere mayor esfuerzo de mantenimiento. Refactorizar y actualizar será una tarea constante durante el ciclo de vida. En ese sentido se trata de una responsabilidad muy grande. Casi como cuidar de un perro o un gato. Además esto implica un requisito adicional: mantenerte constantemente informado y formado, para que tu producto no deje de funcionar después del último release de Firefox.
IV. Compatibilidad entre navegadores
Muchos frameworks ya vienen preparados para cubrir las particularidades de múltiples plataformas. Hacer una aplicación cross-browser a pelo puede ser una tarea mortificante, que puede llevar a tener que reescribir un CSS diferente para cada navegador.
V. Coste elevado
El esfuerzo necesario para desarrollar desde cero una web puede ser mucho mayor que si partimos de un template. Esto se traduce, naturalmente, en un incremento en los costes ya sea en tiempo, dinero o ambos. Sin embargo, en el largo plazo es posible que se dé justamente la situación contraria…
Pero esto lo veremos en las ventajas:
Ventajas de programar un sitio web desde cero
I. Aprendizaje acelerado
Si programas a pelo, vas a aprender sí o sí. Puede que al principio tú código no sea el más limpio, pero a la larga te convertirías en un verdadero experto, cosa que no lograrías se te limitaras a usar o modificar un framework. De hecho hoy día no es fácil encontrar expertos con un entendimiento profundo de un lenguaje de programación, son rara avis muy cotizados.Desde ese punto de vista también es una ventaja, pues es una inversión para tu currículum.
II. Máximo control
Programar línea a línea te proporciona una comprensión de tu proyecto casi absoluta. Sabes exactamente qué es lo que hay y cómo está hecho. Conoces sus puntos fuertes y sus puntos débiles. Esto te permite mantenerlo limpio y eficiente hasta puntos insospechados. Sin contar con la facilidad para detectar bugs o malfuncionamientos, lo cual te ahorraría en el largo plazo muchos quebraderos de cabeza.
III. Tu código, tus reglas
Cuando adaptas una plantilla/framework de terceros tienes que someterte al criterio de otros. Programar es una actividad creativa, algunos de hecho lo consideraran un arte. Programar a tu manera no sólo te va a permitir desarrollar tu creatividad, también te va a permitir desarrollar nuevos patrones mentales para alcanzar un diseño con mínimo esfuerzo.
IV. Optimización al máximo
Muchas librerías incluyen una cantidad de funciones que quizás en tu proyecto nunca utilizarás. Por eso, en un código artesano nunca verás líneas HTML de más, ni funciones JS que están ahí sin que sean utilizadas. Además podrás introducir mejoras de rendimiento específicas para tus requisitos, cosa que sólo puede hacerse a mano y después de un profundo análisis.
V. Independencia
Esta ventaja compensa la dificultad del mantenimiento, pues nuestra aplicación no depende de las actualizaciones (o ausencia de ellas) por parte del proveedor del framework. Nuestra web nunca estaría sometida por las cadenas caprichosas de un tercero.
Cuándo usar plantillas o frameworks
A modo de conclusión
No te dejes engañar por la pregunta del título. Yo creo que a veces tiene mucho sentido desarrollar un producto web desde cero. No me parece ninguna locura, a pesar de la tendencia actual de usar frameworks para todo, especialmente si estamos desarrollando algo muy específico para lo que no existen templates ni frameworks ni librerías adecuadas.
Por otra parte hay que tener cuidado con lo de dejarse llevar por el perfeccionismo ni por ese afán de programar por amor a la misma programación. Decía Shaw:
¿Qué hombre inteligente si le dieran a elegir escoger entre vivir sin rosas o vivir sin berzas no correría a asegurar las berzas?
Así pues, usemos el sentido común para determinar: 1) cuál es nuestro caso y 2) hasta qué punto nos conviene 2.1) trabajar «from scratch», 2.2) utilizar una plantilla o 2.3) un enfoque mix-and-match.
¿Y vosotros, qué opináis?