Y, que es entonces la nuezAzul?
Jun/096
Bueno, desde que abrí el blog la semana pasada, mucha gente preguntado:
“Vale, según tú1, eres un fanático de la programación estricta bajo PHP, OOP y el uso de los patrones de diseño (GoF); pero, que es la nuezAzul? A que os dedicáis exactamente?“
Bueno, nuestro objetivo es bastante simple en la base.
Desarrollo web avanzado para llevar acabo ‘ideas 2.0′ de forma seria, profesional y de calidad.
Queremos evitar que una buena idea desaparezca y por esto, siempre que nos llega una nos dedicamos al 100% a esta, evitando coger más de una idea a la vez y poniendo así todo nuestro esfuerzo en un solo proyecto.
Y esto, que significa realmente?
Bueno, esto significa que no hay proyecto pequeño; saber que todos los proyectos se van a tratar de igual manera. Se mimarán y desarrollarán manteniendo siempre el mismo “mínimo de calidad“, muy superior a la media de empresas de desarrollo web.
Significa que como cliente, no tendrás que vivir verdaderos calvarios para sacar tu web al mercado, para ver avances en el proyecto o simplemente, para ser informado en todo momento del estado del mismo.
En cierta ocasión leí a @loogic “tuitear” algo similar a:
¿por qué no existe un Grupo Intercom en Madrid?
La verdad es que me sorprendió dicho tweet, pero es totalmente cierto. Hasta ahora no hay ningún Grupo Intercom en Madrid, y aunque suene a utopía, este es nuestro sueño. Llegar a ser en Madrid (y a nivel naciona, claro), lo que es el Grupo Intercom en Barna.
Ser una empresa donde poder llevar acabo esas ideas innovadoras y desarrollos que requieren una verdadera planificación, un desarrollo eficiente y una escalabilidad máxima para el día de mañana. Ese el objetivo de la nuezAzul, ambicioso, verdad!
Para esto, todos los proyectos los dividimos en varias etapas o fases, informando al cliente en todo momento del estado de su proyecto.
En una primera fase hablaremos, y mucho, de la idea, que quiere el cliente y como quiere rentabilizarlo, que ideas podemos aportar nosotros al concepto, como se puede llevar a cabo… Destriparemos por completo la idea, la reorganizaremos, la reensamblaremos y la potenciaremos todo lo que podamos.
Una vez clara la idea, nos pondremos manos a la obra con el proyecto, buscaremos el usuario objetivo, trabajaremos sobre la interacción y usabilidad del site, buscaremos marcar los ROI del proyecto, haremos la toma de requisitos del proyecto, crearemos la interacción completa del site, los wireframe necesarios, las bases de los libros de estilos…
Después de las fases de “recogida de información” el proyecto se divide en tres fases paralelas:
- Diseño y maquetación final de los bocetos de alto nivel; Dentro de los limites de los wireframes los diseñador tendrán que crear algo acorde a la filosofía del proyecto. Después nos tocará maquetarlo, siempre cumpliendo, en la medida de lo posible2 , con los estandares web establecidos.
- Programación del proyecto, tanto backend como frontend; Gracias a una toma de requisitos amplia se evitarán errores en la programación, situaciones confusas o errores en la navegación. Facilitando así el objetivo principal, realizar un sito escalable, potente y de calidad.
- Social/Online Branding de la marca; Mientras que las fases de diseño y programación están trabajando al máximo, aprovechamos para hacer un poco de “online brandig“, haciendo que empiece a sonar la marca en el mundillo web, que aparezca ya en varios sitios y que la gente empiece a interesarse por ella, incluso antes de que esté terminado el site.
Y por último, entendemos que cualquier proyecto de gran calado, es o debería considerse un “ser vivo“. Por lo que realizaremos un seguimiento continuado del proyecto, donde veremos como crece, hacia donde evoluciona, que cambios hay en los habitos de los usuarios,… Así estaremos siempre preparados y con posibilidad de modificar el proyecto con el entorno.
Está es (no) brevemente nuestra filosofía. Esto es lo que queremos hacer. Suena ambicioso, pero no dudo que podremos llegar a hacerlo. Así, que si te ha interesado, a que esperas para llamar?
Cuando las cosas se hacen bien, salen bien.
Jun/090
Bueno, como hablar de algo sin demostrarlo, es como no hablar de nada, vamos a centrarnos un poco en enseñar como entendemos y programamos un proyecto web desde la nuezAzul. Principalmente porque esta es mi área.
También es cierto que toco un poco algunas de las demás partes de un proyecto; maquetación, accesibilidad y usabilidad (de esto poquito), SEO y SEM, branding online,…. Pero de estas prefiero ir dejando pequeños apuntes técnicos sueltos y centrarme en lo que realmente es mi fuerte, la Programación Web Avanzada. Y si, se puede decir esto y sumarle PHP sin restar el más mínimo poder a la frase.
Y para ello, lo primero es desmitificar a los que piensan que PHP es inseguro y poco profesional; el inseguro y poco profesional es el programador, no el lengjuaje.
El primer problema que encontramos con PHP es su mayor virtud. La anarquía del lenguaje. Este lenguaje se creó principalmente con una máxima; la mayor libertad posible. No es necesario definir variables, no tiene una estructura de programación definida, puede mezclarse dentro de código html o html dentro de código php…
Esto ha hecho que desde un principio, PHP fuese muy suculento para todo el mundo. Tanto programadores profesionales, como amateurs e incluso completos “novatos” de la programación pueden hacer en PHP sus pinitos y programar cualquier cosa.
Claro, esto ha dado muchas lineas de código a PHP, de las cuales la mayoría se podría decir que son basura “no reutilizable” y sobretodo muy inseguras y difíciles de auditar/ampliar. Pero claro, no todo es culpa del código, no se le puede pedir a un newbie que entienda de “Sql Injection” o de calidad de código.
Y como se podría solucionar este problema? Bueno, lo primero aquí es saber que se quiere y distinguir los casos.
- Si eres un newbie, que solo quiere hacer sus pinitos, adelante, este es tu lenguaje y esto es todo lo que deberías leer de este blog.
- Si realmente quieres realizar código de calidad y reutilizable, empieza por lo básico. Se lo más estricto posible, estructura el código, declara las varibles al principio de cada método, usa patrones de programación y nunca olvides la flexibilidad de PHP, pero no supedites la calidad a la flexibilidad, hazlo al revés, supedita la flexibilidad a la calidad
El segundo problema es la rápida evolución del lenguaje frente a la lenta o inexistente evolución del programador. Tanto PHP como Apache y las bases de datos han tenido una evolución estos últimos años bastante fuerte, pasando de, por ejemplo, la programación funcional hasta la implementación de la OOP por parte de PHP, el famoso mod_rewriter de Apache o la potencia de las bases de datos relacionales. Todo esto implica un continuo esfuerzo por parte del programador para estar al día con todo lo que le rodea. Cosa que muchas veces no pasa, encontrandonos con que, por ejemplo, PHP4 no llega a desaparecer ya que implicaría restructurar mucho código o que no existan todavía casi ninguna aplicación que sea 100% OOP sino hibridos entre funcional y OOP.
Solucionar este problema es algo más complicado, cada día vemos actualizaciones de PHP, nuevas funcionalidades y otras decrépitas. Estar al día en esto podría ser algo fácil, pero si además hay que sumar el estar al día en las aplicaciones que usas, en Apache, en la base de datos con la que trabajas, revisando tu código para actualizarlo, … La cosa se complica un poco. Lo malo, esta es la única forma de solucionar el problema, es decir, si quieres realmente hacer buen código cada día, debes emplear cada día en formarte un poco más, y para esto no hay ayudas externas. Cada uno debe tener intención de leer y aprender cada día, sino, en poco más de un año, tu también estarás “decrepit“.
Otro de los defectos es la falta de estructura a la hora de programar, la falta de profesionalidad y de “seguridad de código” en lo que uno hace. Conozco muchos casos en los que un programador, que entiende y usa la OOP, deja esto de lado porque un “proyecto es pequeño” o porque “no es necesario“. Creando archivos faraónicos, sin estructura alguna en la programación, sin revisar los posibles bugs de la aplicación, … Esto siempre es un error, pero es más error cuando esto pasa de ser para “proyectos pequeños” (Aunque nunca llegue a entender que es eso de proyectos pequeños) y se utiliza en todos los proyectos que uno hace.
El mayor problema que esto acarrea es la imposibilidad del posterior mantenimiento del site, los problemas y el tiempo perdido a la hora de implementar nuevas funcionalidades, o simples cambios en el diseño. Como siempre, el mayor problema aquí es la desfatachez del programador al pensar en el hoy y no el mañana. El mañana serán problemas para el cliente, no para el programador.
Y por último, otro de los grandes errores con PHP, es la suma de todo lo anterior, es encontrarnos proyectos “cajón de sastre” en los cuales, los programadores con buenas ideas y sin tiempo para pensarlas bien, crean proyectos, donde se mezcla funcional con OOP, viendo funciones sueltas entre clases, donde no hay una estructura definida correctamente, donde no se tratan los objetos por paquetes como cualquier otro lenguaje de programación orientado a objetos. Donde se ven funciones obsoletas o donde se ven mezclados, entre grandes ideas, código y html. Dando así grandes “cajones de sastre” de los que no se puede reutilizar gran cosa…
Como se podría solucionar? Lo primero es obviar la programación para todas las versiones y centrarse en PHP5 o superior. Versión a partir de la cual se puede hablar realmente de OOP. Y después de esto, aprender de los demás lenguajes de programación, aprender realmente lo que es el paradigma MVC (o cualquier otro que sea válido) y ponerlo en práctica, no pensar que existe un proyecto pequeño, todos son igual de importantes, pues son tu carta de presentación, usar PHP igual que usarías Java o C++ y sobretodo
TENER RESPETO, MUCHO RESPETO, TANTO A TU TRABAJO, COMO A QUIEN PAGA POR ÉL.