
Me encanta prototipar, probar conceptos, ideas y ponerlas en marcha sencillamente para validarlas o para profundizar en tecnologías que me gustan. Creo que éste es uno de los vicios de muchos desarrolladores: la necesidad sana de aprender cómo funciona tal framework, cómo desplegar con Heroku o cómo funciona el mecanismo de plugins de cualquier software, por poner algunos ejemplos.
Ahora bien, si queremos probar una idea no podemos perdernos en los detalles y desviarnos así del asunto relevante que queremos conseguir. No obstante, veo lo fácil que es perderse en esos detalles y no centrarse en lo importante realmente, lo que aporta valor al proyecto, producto o idea que estamos probando.
De ahí el conocido mantra en nuestra profesión de poner el foco completamente en la funcionalidad particular de un proyecto, de modo que la funcionalidad general debe estar cubierta por el entorno que se vaya a usar en forma de librerías reutilizables, plugins, extensiones, plantillas, etc.; cualquier cosa reutilizable, en definitiva.
Es como si se nos planteara realizar una plataforma para la gestión empresarial y decidiéramos hacerlo todo desde cero, sin contar con algunos de los productos que ya existen como base en el mercado. Sería, cuanto menos, inviable en términos de tiempo y esfuerzo.
Sin embargo, no siempre pensamos en adquirir alguna solución comercial ya existente y comenzar a partir de ella. De nuevo, caemos en el error de reinventar la rueda una y otra vez, sin evaluar realmente su coste. Una cosa es investigar e implementar por simple gusto o curiosidad en tu tiempo libre, y otra muy distinta es justificar decisiones en tu compañía que supongan costes extra que se pueden evitar.
Vicio, mala práctica o pura ignorancia, éste es uno de los déficits habituales de muchos desarrolladores que, además, tiene dos caras: no saber seleccionar componentes del mercado o de código abierto y tampoco saber desacoplar lo suficiente lo que se hace para reutilizarlo en el futuro.
No sólo estoy pensando en grandes productos comerciales que hay que configurar y adaptar a necesidades específicas, sino en pequeños componentes como plugins gráficos, templates, engines de búsqueda, etc.
Hoy día existe un auténtico mercado en el que se pueden adquirir componentes a un precio irrelevante comparado con el esfuerzo que tendríamos que dedicar a hacer algo similar (y seguramente no con la misma calidad, por no ser tan expertos en ese tema concreto).
Sí, para casi todo existe algo de código abierto y de excelente calidad, por lo que también es una alternativa que hay que considerar. Aunque no podemos cerrar puertas y usar algo libre (y gratuito) porque sí, cuando podemos encontrar cosas de mejor calidad por pocos euros. ¿Qué son unos cuantos euros cuando te pueden ahorrar decenas de horas de trabajo?
Recientemente hemos adquirido un tema para una landing page de un nuevo producto que hemos lanzado: necesitábamos una página de inicio muy atractiva, sencilla, con pocos contenidos y que resultara moderna, así que decidimos usar parallax, que tanto se ve en los últimos dos años. Se pueden ver algunos buenos ejemplos de este tipo de efectos aquí.
Moda o no, la realidad es que implementar una página de inicio así y que además sea responsiva tiene muchísimo trabajo y hay que ser un buen experto en HTML5 y CSS3 para realizar una buena implementación, sin hablar de los aspectos estéticos y de diseño. Además, no me quiero ni imaginar el esfuerzo de asegurar que la implementación funciona bien con todos (o la mayoría) de los navegadores y dispositivos… Imposible de asegurar a no ser que dispongas de muchísimo tiempo para probarla.
¿Por qué centrarte en ese desarrollo (que no es el core de tu sistema) cuando puedes adquirir por poco dinero una solución profesional ya implementada, usada por cientos de usuarios y extraordinariamente depurada? ¿No es como contratar a alguien muy bueno en su nicho por poco dinero y tenerlo a tu disposición? Muchos fracasamos en algunos proyectos por no poder vencer esa necesidad (un poco egocéntrica) de querer hacerlo todo uno mismo, no saber delegar (adquirir componentes externos es una forma de delegación) y no saber centrarnos realmente en lo importante del proyecto.
Decidimos usar un paquete de Envato Market que nos costó… 8 dólares, cantidad que además te da la oportunidad de preguntar al mismo autor y ver multitud de ejemplos. Es decir, unos cuantos cafés por algo que, al menos a mí, me habría llevado semanas implementar, y de lejos no tan bien como a un experto en esas técnicas.
¿No es eso una muestra de productividad? Otra cosa es personalizar el componente lo suficiente para que todos tus trabajos no parezcan iguales.
Por 8 dólares tienes a tu disposición a un desarrollador que ha trabajado mucho en ese paquete que estás comprando y que, precisamente por estar más especializado en esa área, seguramente lo hará mejor que tú. El desarrollador gana porque su componente se vende cientos o miles de veces.
El concepto de reutilización está en las entrañas y en la esencia del software, pero no siempre lo tenemos 100 % presente.
Me he encontrado con ciertas actitudes de desprecio cuando uno comenta que recurre a Bootstrap o a cualquier otra cosa, como si eso fuese poco profesional. Lo profesional es aprovechar tus recursos (tiempo) de la manera más productiva posible. La última palabra la tiene siempre el cliente, que es quien dice si le gusta o no; realmente, lo poco profesional es suponer un coste de un mes de trabajo a tu empresa cuando ese mes se puede reducir a unas pocas horas invirtiendo unos cuantos euros en un componente ya existente.
Ahora mismo existe un gran ecosistema de componentes, de modo que muchos desarrolladores que trabajan en proyectos, más que desarrollar software, pasan la mayor parte del tiempo integrando distintas piezas de software reutilizables para conseguir la funcionalidad particular que pide el cliente. Esto no deja de ser un aspecto interesante de nuestra profesión.
No veo que esto sea malo, ni muchísimo menos, sino que es una forma maravillosa de evitar duplicar trabajo. Además, puedes participar sin ningún problema en todo ese mercado de venta de componentes y librerías ofreciendo tus propios desarrollos: plugins, themes, etc., lo cual también te puede dar cierto prestigio como profesional.