Metro, mucho más que tiles

Y a continuación una entrada que escribi en su día en el blog de Kabel. Vamos con un poco de Metro y Windows Phone.

Supongo que a día de hoy todos hemos oído hablar de “Metro” o de términos como Metro Style.

Metro, además de ser un estupendo medio de transporte, viene a ser el código de identidad visual definido Microsoft, usado inicialmente en Windows Phone 7 y posteriormente evolucionado para Windows 8.

Lo primero que nos llama la atención de Metro, es el uso de una serie de elementos llamados tiles (traducido del inglés como adoquín) los cuales hacen la función de call to action (en los diferentes dashboards que implementemos) y exponen información de lo que hay detrás de las aplicaciones que representan.

Metro UI

Es chocante enfrentarte a una interfaz de este tipo precisamente por la presencia y entidad que tienen estos elementos. Pero la verdad es que aunque inicialmente es lo que más nos llama la atención, hay mucho más detrás de lo que llamamos Metro que los tiles, que son los pilares en los que se fundamenta, veamos nuestra interpretación de los mismos:

Gusto por lo que haces y los pequeños detalles.

Trabaja el detalle de tus aplicaciones. Cuando todos los pequeños detalles están bien resueltos, el conjunto de todos ellos implica una aplicación bien resuelta. Demuestra que te gusta lo que haces y que lo valoras.

En este punto, aspectos como equilibrio, simetría o jerarquía son vitales y tendremos que tenerlos en cuenta para transmitir seguridad y confianza.

Rápido y fluido.

Una buena experiencia de usuario, pasa siempre, por el buen performance de nuestras aplicaciones. Nunca vamos a encontrar usuarios satisfechos con aplicaciones lentas. Si a una aplicación con un performance bueno, le sumamos una interfaz de usuario, que responde de forma natural a nuestras acciones encontraremos el camino a los buenos resultados.

Cuando desarrollemos aplicaciones bajo la filosofía Metro, esto es fundamental, aplicaciones rápidas con interfaces que responden a nuestras acciones (sería maravilloso poder decir a nuestros estímulos ;) ).

Auténticamente digital

Metro huye de diseños “skeuomorphicos” y recomienda el uso de elementos puramente digitales. Google es el otro gigante que adopta este principio claramente demostrado con todos sus productos.

Usemos la tipografía, usemos los colores intensos que aplican bien en medios digitales, usemos el movimiento cuando tengamos que usarlo, usemos la nube para ofrecer más servicios. Usemos todo lo que tengamos a nuestro alcance, pero sobre todo, no nos encorsetemos en formatos físicos a la hora de crear experiencias digitales. No necesitamos imitar el cristal de un botón para saber que un elemento es un botón.

Haz más con menos.

Este principio no es nuevo, realmente sería una evolución del “menos es más” de Mies Van Der Rohe y el “menos, pero con mejor ejecución” de Dieter Rams.

Céntrate en lo que tiene que hacer tu aplicación y resuélvelo de la mejor forma posible. Céntrate en las funcionalidades concretas de tu aplicación y desestima aquellas funcionalidades satélites (que normalmente tienen un uso residual) y dale a tus usuarios lo que necesitan y nunca olvides que un diseño esta cerrado cuando no hay nada que puedas eliminar.

Trabaja en equipo.

Intégrate con otras aplicaciones. Hay aplicaciones estupendas que resuelven de maravilla ciertas acciones, intégrate con ellas y benefíciate de todo lo que esta desarrollado.

Este principio, parece ser tendencia en el desarrollo de software, si necesitas enviar un mail, haz uso de tu cliente de mail, no desarrolles uno para tu aplicación.

Estos cinco pilares, son muy interesantes y una vez vistos, fundamentales para entender lo que supone Metro, pero si algo significa Metro es cambioEs orientarse completamente al usuario,  ponerlo en el centro de todo, escucharlo, mimarlo y satisfacerlo. Es evolucionar y andar el camino y sobre todo implica estar vivo en un momento de constante cambio.

Anuncios

6 consejos a tener en cuanta cuando lideramos equipos que crean software.

A continuación os dejo con un post que escribí en su momento en el blog de Kabel Sistemas de Información compañía en la que trabajo y desempeño mi carrera profesional.

Siguiendo la estela del post 6 consejos a tener en cuenta cuando escribimos software, hoy vamos  a ver algunos aspectos que se dan en los equipos encargados de generar software que tenemos que tratar de evitar.

El código no es ni tuyo ni mío, es nuestro.

Una frase típica en los equipos de software es “mi código funciona”. El código no es tuyo, es del equipo, es nuestro. Siente el código que ha desarrollado otra persona del equipo como tuyo, esto, te va a obligar a involucrarte más en el desarrollo y ser más crítico con nuestro trabajo.

En mi equipo funciona.

El software que desarrollamos no funciona hasta que está desplegado en los entornos de producción y vemos que funciona. Eso de “en mi equipo funciona” es un error. Tenemos que asumir que nuestro código falla, y una vez refactorizado y muy probado, podemos tener la seguridad de que funcionara ok, pero no te lo creas hasta que no lo veas.

Cuantas veces te has encontrado con este caso. Muchas. Aprende de los errores y asume que el entorno de desarrollo no es el mismo que el de producción, que los servidores no van a estar siempre configurados de la misma forma y que aunque no lo queramos, pueden aparecen sorpresas a última hora.

Despliega el software que estas creando de forma asidua en un entorno exactamente igual que el de producción y no te encontraras con estas sorpresas de última hora, que implica cambios a fuego en ficheros de configuración o trabajos a deshoras de la noche.

Los equipos grandes son inversamente proporcionales a la productividad.

Cuanto más grande es un equipo menos productividad tiene el mismo.

Cuanto más grande es un equipo más obligado te vas a ver a realizar tareas de documentación, revisión de código, gestión de tareas, gestión del equipo, etc.

Evítalo.

Si el proyecto es muy grande, crea equipos más pequeños con tareas concretas. Delega funciones. Verás cómo la gente está deseando involucrarse en tareas que de otra forma tendría que realizar el jefe de proyecto / arquitecto y cuanta más gente, más trabajo y sobrecarga para esta persona.

5 equipos de 4 – 5 personas y un jefe de equipo van a ser mucho más productivos y eficientes que 1 equipo de 30 personas.

Interfaces de usuario y perfiles muy “juniors”.

Es un clásico, a menudo se desprecian las interfaces de usuario y se ponen a las personas con menos experiencia a implementarlas.

ERROR GRAVÍSIMO.

La pieza más compleja de toda aplicación, es la que le permite la comunicación hombre-máquina.

Pon ahí a gente con experiencia, profesionales que entiendan que están haciendo, que tengan gusto por el detalle y las cosas bien hechas y sobre todo que le den la importancia que tiene.

La tecnología es un medio no un fin.

La tecnología es el medio que nos va a permitir desarrollar ideas o resolver problemas y tenemos que usarla para eso.

En muchas ocasiones, cuando estas desarrollando software nos olvidamos de esto perdiendo el foco de las tareas que tenemos que realizar, para crear plataformas tecnológicas que se apartan la “idea” inicial que pretenden resolver.

Los mejores han de estar en tu equipo.

Rodéate de los mejores. Busca buenos profesionales. Gente que haya puesto aplicaciones en producción. Es complicado, pero existen muy buenos profesionales con gusto por lo que hacen, búscalos e incorpóralos al equipo de desarrollo.

6 consejos a tener en cuenta cuando escribimos software

A continuación os dejo un post que escribí en su momento en el blog de Kabel Sistemas de Información.

Principio de simplicidad.

El principio de simplicidad ha de prevalecer siempre. Siempre que te encuentres ante una decisión toma la más sencilla. A menudo cuando creamos piezas sumamente complejas sufrimos un impacto la productividad del equipo ya que es mucho más difícil comprender, entender y usar el código.

Esto sumado a las tiempo que hay que emplear en pruebas regresión cada vez que nos vemos en la tesitura de modificarlo hace que estos códigos sean un lastre a la larga.

En aplicaciones en las que hay códigos sumamente complejos, el equipo de desarrollo pasa más tiempo leyendo y depurando el código que escribiendo código y esto hay que evitarlo toda costa.

Además gran parte de los proyectos de software son después mantenidos por equipos que no han desarrollado las aplicaciones, por lo tanto, la persona que ha creado un código sumamente complejo desaparece y esto suele derivar en códigos que nadie quiere tocar por miedo al impacto que pueda tener.

Nada es reutilizable hasta que se reutiliza.

A menudo, cuando diseñamos los diferentes componentes de la aplicación, pensamos en el futuro de la misma e intentamos crear códigos reutilizables “por si acaso”.

Error.

Nada es reutilizable hasta que se reutiliza. Esta es una gran verdad que tenemos que tener clara en todo momento. Crear un código para posteriormente reutilizarlo (por que sí) implica complicar ese código, cayendo en el punto anteriormente enumerado.

No a soluciones genéricas que se adaptan a todos los casos.

Cuidado con los casos “voy a diseñar un control que valide lo que introduce un usuario, ya sea un mail, un código postal o un DNI”.

Este tipo de acciones, deriva en códigos complejos y a los problemas anteriormente vistos. A menudo, estas piezas de software mágicas resuelven solo lo que contemplan y conforme tienes que ir añadiendo funcionalidad vas complicándolo más y más.

Soluciones concretas a problemas concretos.

Construir de menos a más. Haz refactoring.

Siempre que creemos piezas de software, tenemos que partir de código sencillo y conforme vayamos teniendo necesidades, crecer sobre lo creado anteriormente.

Hacer uso de refactoring (http://en.wikipedia.org/wiki/Code_refactoring) es una buena práctica, dado que, conforme vamos revisando nuestro software, podemos detectar carencias y subsanarlas, además de ir añadiendo funcionalidades necesarias. Por otro lado, el refactoring te va a dar una visión clara de las funciones de que cada una de las partes de la aplicación a lo largo de todo el proyecto.

No a tu framework, usa frameworks ya desarrollados.

Evita en todo momento crearte tu propio framework. Hay gente, equipos enteros que se están encargando de esto. Usa estos frameworks. Ten en cuenta que seguramente, están desarrollados por buenos profesionales, que están perfectamente testeados y que prácticamente en el 100% de los casos, estos frameworks, van a ser bastante mejores que el tuyo.

Usa JQuery, Modernizr, usa el .NET Framework, usa el framework que quieras, pero no te crees el tuyo.

Por ejemplo, no puedes estar desarrollando un framework de acceso a datos cada vez que desarrollas una aplicación. Esto tiene un gran impacto en la productividad del equipo y seguramente no te van a pagar por desarrollar esa pieza, sino por resolver una problemática concreta. Céntrate en tu negocio.

Haz Pruebas unitarias.

El trabajar con pruebas unitarias, puede parecer que tiene un impacto en los tiempos del proyecto, y bien es verdad que dado que tenemos que escribir más código inicialmente vamos a tardar algo más, pero a la larga, nos va a permitir reducir los tiempos.

Si un código no funciona, vamos a detectarlo en el momento en que ejecutamos la batería de pruebas y esto nos permite ser más eficaces dado que sabemos en qué punto concreto falla nuestro software.

Trabajar bajo el paradigma del TDD, nos va a obligar a diseñar el código de una forma concreta (desacoplado) para poder probarlo, obteniendo así un software diseñado de manera “uniforme” a lo largo de todo el desarrollo, lo cual hace más sencillo su posterior uso, reutilización y refactoring por todo el equipo.

 

Francisco de Goya, en el año 1799, publico una serie de grabados realizados por medio de aguafuerte, aguatinta y retoques de punta seca que llamo Los Caprichos. Mediante estos grabados busco satirizar y retratar la sociedad española de finales del XVIII.

El sueño de la razón produce monstruos, es el grabado 43 de los 80 que componían la serie. Y este, además de posiblemente ser el más famoso de todos, cuenta con un título totalmente inspirador con el que no años después, si no siglos después, nos encontramos que su mensaje sigue siendo totalmente vigente.

En nuestro sector seguro que todos hemos visto casos en los cuales podemos decir que la fantasía ha sido abandonada por la razón y esto se ha traducido en aplicaciones de software monstruosas.