La meta: desarrollar una intranet que incorpore gradualmente funcionalidad migrando el sistema actual de la empresa (entiendase por "sistema" a un montón de hojas de cálculo desparramadas entre las 6 terminales) de la manera más transparente posible.
Las condiciones: No muchas. Total libertad para elegir la plataforma, el lenguaje y demas. La única limitación fuerte es que no puedo interferir de ninguna manera en el funcionamiento de la empresa. Es decir, no puedo ocupar una maquina, no puedo distraer a los empleados, no puedo por ejemplo, reiniciar el router porque que quedé sin conexión. Tampoco puedo pedir que se instalen programas o que prueben tal o cual cosa.
Ok. Hasta aquí ningún problema. Me instalé con mi laptop y me puse manos a la obra.
Primero lo primero, el análisis. Muchas libertades, pero tenía que concretar decisiones. Por cierto, soy el único desarrollador/analista/tester ya que es un trabajo "de favor".
Primera decisión - El lenguaje:
Fácil. PHP. Si fuera otro, mi blog tendría otro nombre.
Segunda decisión - Plataforma:
Bueno, las PCs ya están corriendo en Windows y mi trabajo no puede afectar el funcionamiento de la empresa, por lo que formatear e instalar otro OS está fuera de la discución.
Por lo tanto abarajé mis posibilidades y recurrí a un viejo y conocido amigo: Wampserver.
La última vez que jugé con Wamp andaba por la version 1.7 y era práctico y fácil de usar. Hoy la versión 2.0 me parece IDEAL.
Sigue siendo sencillísimo de instalar y configurar y sigue trayendo las últimas versiones de MySQL, Apache y PHP incorporadas, pero además ahora trae una característica para instalar distintas versiones de PHP, Mysql, y Apache e intercambiar la que se está usando con sólo un click (no es que la vaya a necesitar, de cualquier manera). Decidido.
De esta manera, el servidor termino siendo un Apache, corriendo en Windows. Para base de datos: MySQL
Tercera decisión - Arquitectura:
Gran parte de esto ya estaba decidido. Hace ya algunos años que uso CodeIgniter siempre que puedo darme el gusto. Y como ahora me podía dar los gustos que quisiese, mantuve mi linea de comportamiento.
Un punto débil de CI (tiene varios, en realidad), es la capa del Modelo. CI mantiene la arquitectura MVC que se ha vuelto tan popular en los frameworks de hoy en día, y si bien la estructura de las Vistas y los Controladores "cumplen las expectativas", los Modelos de CI no son más que clases carentes de comportamiento propio en la que uno DEBERIA incluir todas las peticiones y procesamiento de datos.
Empecé a buscar reemplazos.
Mi primer impulso fue el "hágalo usted mismo". Durante el tiempo que trabajamos juntos con mi amigo Seppo habiamos desarrollado una API para los modelos de CI que nos resultó muy práctica por aquéllos tiempos.
Tanto él como yo continuamos desarrollando aquella librería aunque en direcciones ligeramente distintas.
La solución si bien era más completa que la de CI, aún no me convencía, por lo que seguí investigando.
Recientemente asistí a una charla en Latinoware en la que Guilherme Blanco hablaba sobre las bondades de Doctrine. La charla me había resultado bastante interesante por lo poco que pude entender (ya que era en portugués) y en mi todo list aún figuraba "checkear Doctrine".
Lo investigué, jugué un poco, busqué experiencias de otros usuarios y me decidí a utilizarlo.
La primera gran dificultad fue el manual de usuario. El capitulo 1: "Getting Started" es pésimo. No encuentro una palabra en español para misleading (¿desconcertante?), pero eso es lo que es. Una vez que se ignora ese capítulo, el resto es bastante comprensible y se decubre que doctrine es bastante poderoso.
La API es muy intuitiva (aunque un poco extensa) y las herramientas para generar codigo son muy buenas. La consola que trae es sencillamente: Un golazo
El problema era incorporar elegantemente Doctrine a la arquitectura de CI.... pero eso me lo guardo para otro día.
Decición Final - Schedule:
Como ya dije, es un proyecto "de favor" así que el schedule es cualquier cosa menos riguroso en cuanto a los tiempos. Pero por amor al orden, es una decisión que tenía que tomar, al menos para organizarme yo mismo.
Para empezar, sólo voy a estar dedicándole un día a la semana a estar "on site" implementando y durante la semana sólo le dedicaré tiempo a la investigación que resultara necesaria (como la que hice para la integración de Doctrine y otros problemillas que surgieron... tela para otros dias)
La primera semana la dediqué a instalar y configurar el servidor y customizar CI. También laburé sobre lo que tienen ellos armado actualmente.
Las proximas dos semanas serán dedicadas a la migración de los datos. La intención es levantar todas las hojas de excel a una base de datos. Como en este tiempo seguirán trabajando con hojas de Excel, necesito buscar periodicamente en las terminales de trabajo si abrieron nuevas hojas de calculo o si se efectuaron cambios.
Terminada la migración, desarrollaré la primera aplicación: Un buscador. Parece algo básico, pero actualmente se toman el trabajo de buscar en cada maquina (menu Inicio -> buscar) hasta que encuentran la hoja que necesitan.... inaceptable
Una vez centralizados los datos e implementado el buscador, el paso siguiente es suprimir definitivamente los archivos excel, y reeemplazarlos por una interfase que autocomplete los datos de clientes y productos, etc
Y de ahí en adelante... es un misterio..
Suscribirse a:
Enviar comentarios (Atom)

No hay comentarios:
Publicar un comentario