Capítulo 2. Cómo pensar con BIF

2.1. Historia

BIF fue creado por Lunix como una necesidad para la creación de un sistema basado en web que debía realizarse en un plazo corto.

Lucas Di Pentima y Nicolás César ya tenían experiencia usando los conocidos «templates» bajo PHP y concluyeron que era una herramienta muy útil, pero que en el desarrollo de sitios grandes era inevitable duplicar código PHP y templates. Como el desarrollo era parte de un aprendizaje, se podían programar -copiar y pegar en realidad- 5 rutinas iguales hasta que nos dábamos cuenta de un BUG, que se tenía que corregir en todos los lugares donde aparecían esas rutinas[1].

La única salida a este problema era la centralización de dichas sentencias. Aquí planteamos varias alternativas y la que sobresalió por su simpleza es la orientación a objetos de los componentes de una página.

La idea original era tener un archivo que en 10 líneas exprese todo lo que una página contiene. Algo como esto:

          Encabezado
          TituloProductos
          ProdNro23
          Texto:

                  El producto Número 23 es una excelente opción para
                  el cultivo de soja. En nuestra empresa.... blah
                  bla..
          FinTexto
          PiedePagina
        
Luego BIF automágicamente interpretaría todo y devolvería la página HTML deseada. Por ejemplo «Encabezado» pone el membrete de la companía y una tabla que encuadraba todo. el encabezado son aproximadamente 17 líneas de HTML. Y son las mismas 17 líneas para todas las páginas.

Así surgió la idea de «Build It Fast v1.0».

A esas palabras claves las denominamos «widgets»; como lo hace la mayoría de los frameworks de interfaces de usuario orientados a objetos.

Y comenzamos a trabajar, pero nos dimos cuenta de que la idea era mucho más brillante de lo que pensábamos: dividía el trabajo por completo en tres roles claves.

Supongamos un escenario ficticio[2]: Lucas está como encargado de contenidos, entonces empieza a escribir:

          Encabezado
          TituloProductos
          (..)
        
Mientras tanto no existe ni el «Encabezado» ni el «TituloProductos».

Nicolás, encargado de los widgets, a los apurones hace un «Encabezado» y un «TituloProductos» que obviamente no serán los definitivos, permitiendo a Lucas continuar probando su trabajo (los contenidos que vaya insertando). Ahora Nicolás, tranquilo, puede hacer un diseño gráfico sobre esos items.

En un esquema tradicional de trabajo, se espera que el diseñador gráfico concluya todo el diseño del sitio para empezar a llenarlo de contenido; con BIF no es necesario.

En un momento determinado Lucas quiere incluir una encuesta en las páginas y pone una «votación del día»:

          (..)
          VotacionDelDia
          (..)
        
que está vinculada a preguntas en una base de datos MySQL. Entonces le dice a Cristian, encargado de SQL, que haga el SQL correspondiente, que luego se incorporará al widget «VotacionDelDia», sin interrumpir el trabajo de cada uno. Lindo, ¿no?.

Notas

[1]

En un sitio de 80 páginas web es muy común encontrar mas de 80 «foreach» que luego de la ejecución de una sentencia SQL completaban el correspondiente template.

[2]

Los personajes también son ficticios, cualquier coincidencia con la realidad es producto de tu imaginación