Icono del sitio BorrowBits

Crear una web desde cero: ¿quién lo haría en su sano juicio?

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

Yo era uno de esos espíritus barbudos y puristas de la vieja escuela que programaban todo en Linux con vim. Me sentía como el Elegido modificando el código de la Matrix. Así que comprendo el placer demiúrgico que proporciona el control absoluto del código, sin asistentes ni librerías. Todo un espartano del software… y también una máquina de perder tiempo. Puede que los templates no sean la solución para todo website, pero sin duda hacen nuestra vida mucho más fácil, nos ahorran tiempo y en ciertas situaciones los consideraría una herramienta imprescindible.

Por ejemplo, hay determinados casos en los que el esfuerzo adicional de programar desde cero no va a resultar en un mayor beneficio final; de hecho es muy probable que los beneficios obtenidos por una parte se pierdan al compensar la inversión adicional de tiempo y dinero. Es una cuestión de economía conocida como ley de los rendimientos decrecientes. Esto no significa que debamos hacer las cosas siempre deprisa y barato, sino que siempre debemos calibrar el ratio coste-beneficio.

Aclarado esto, hay que tener en cuenta que todas las plantillas y frameworks tienen sus limitaciones. En el caso del desarrollo front-end las plantillas son excelentes herramientas para hacer prototipado rápido del diseño tanto gráfico como funcional. Por cierto que muchas plantillas y frameworks están llenas de pequeños «hacks» para lograr que la vaina funcione, y que en algún punto nos pueden hacer perder el control (tanto del código como de los nervios 🙂

Además, su naturaleza suele ser «genérica». Nunca encontrarás una plantilla que esté perfectamente ajustada a tu proyecto web, que no necesite el más mínimo retoque. No existen plantillas descargables para webs que son únicas en su naturaleza, como Facebook, Twitter o Gmail. ¡Alguien tuvo que desarrollarlas a pelo en algún momento!

Entonces, ¿cuándo es conveniente usar plantillas y/o frameworks?

1) Cuando necesites desarrollar un prototipo o un MVP (producto mínimo viable) en el menor tiempo posible.

2) Enfoque mix-and-match: montar un layout cross-browser que sirva de base, aprovechando el grid de una plantilla, reciclando módulos pre-fabricados de un framework o los elementos de compatibilidad de otro. Este enfoque me gusta mucho porque es una solución híbrida entre usar plantillas y programar desde cero.

3) Si tu trabajo no sufrirá muchos cambios funcionales o técnicos a lo largo del tiempo. Es decir, si tu código no necesita mucho mantenimiento. Por ejemplo, la web corporativa de una panadería de barrio. En este caso puedes permitirte depender de un framework en producción.

4) En proyectos Agile el framework base puede ir optimizándose, adaptándose al caso particular o eliminándose de forma progresiva.

5) Perfect match: en la rara situación de que la plantilla se adapte perfectamente a tu caso particular.

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?

Salir de la versión móvil