Llevándote bien con los Fixtures

Estándar

Las Factories pueden ayudar a lidiar con las dolorosas etapas tempranas, pero pueden ser dolorosas conforme una aplicación crece. Los Fixtures pueden ser incómodos al inicio, pero brillantes con la complejidad. A su propio modo, ambos hacen más fácil el hacer pruebas. Ninguno es un anti-patrón.

technicalHay una división en el mundo de Rails. Bueno, hay muchas divisiones en el mundo Rails, especialmente acerca de ¿cómo escribir pruebas? Para puntualizar. Los desarrolladores en Rails no están de acuerdo sobre como configurar sus datos de prueba.

Hay dos posturas en este debate. Los Fixtures vienen con Rails por defecto. Estos son le método que eligió el equipo del Núcleo de Rails y DHH los respalda. En la otra esquina tenemos a la gente que aboga por reemplazar los fixures con gemas para factory como Factory Girl o Fabrication. Ambas estrategias tienen suficientes defensores y detractores como para mantener viva la discusión por muchos años. Recientemente un defensor de las factory fue tan lejos como para afirmar que los fixtures eran un anti-patrón, lo que me hizo pensar en como encajan los fixtures y factories en el libro de las las pruebas.

He estado usando Fabrication como mi generador de datos de prueba como mi elección durante los últimos meses. Antes estuve usando Factory Girl depues de abandonar bastante pronto los fixtures. Hasta la semana pasada, me sentia muy comodo con la generación de objetos de prueba. He estado usando Fabricators activamente en mis pruebas e incluyendolos en algunas pruebas de entranamiento. La última semana, regrese al proyecto de un viejo cliente que estaba soportado con fixtures. Lo primero que pense fue re-escribir los test para usar fabricators, pero simplemente no habia tiempo para hecerlo. A regañadientes, he vuelto a usar fixtures para mis pruebas.

La semana incio algo lenta como si tratara de adaptar los nuevos fixtures a mi flujo de trabajo con fabricator, pero despues de un sorpendentemente corto periodo de adaptación, realmente lo estaba disfrutando. No estaba preocupado de crear el paquete correcto de objetos para pruebas complejas. Todo lo que necesitaba estaba justo ahí, esperando a ser probado. Esperaba revertirlo en el transcurso de la semana, pero no creo que sonsidere cambiar a usar fixtures con regularidad. Esto me hizo pensar de nuevo en el debate fixture vs factory con una nueva luz.

Quiero darle otra revisión a las dieferencias entre fixtures y factories con una nueva óptca.

Definiciones

Los fixtures son definidos en archivos yaml. Generalmente lucen algo como esto:

bond:
  first_name: James
  last_name: Bond
  email: jamesbond007@mi6.gov.uk

bourne:
  first_name: Jason
  last_name: Bourne
  email: jbourne@cia.gov

Las factories (Fabricators en este caso) se definen algo así:

Fabricator :agent do
  first_name { Faker::Name.first_name }
  last_name { Faker::Name.last_name }
  email { Faker::Internet.email }
end

La vía de los fixtures consiste en escribir múltiples definiciones de el mismo tipo de objeto. Las factories son en realidad plantillas de objetos, así que terminan buscando mucho más que las definiciones de tablas en db/schema.rb. Los fixtures promueven la repetición y trabajan mejor con algunos datos de prueba creativos y dignos de recordar. Las factories no te hacen pensar o reiterarte.

Escribir fixures parece algo tedioso cuando te fijas en ellos a lo ancho y largo, especialmente cuando estas usando una gema para generación de datos, como Faker, con factories. Definir datos para un solo tipo de modelos es claramente una victoria para las factories.

Creando objetos

Las factories crean nuevos objetos bajo demanda en las pruebas. Las pruebas usando factories inician con un borrón y cuenta nueva en cada ocasión, esperando a que preguntes por un tipo de objeto específico. Los fixtures tienen una aproximación diferente. Cuando arranca el entorno de pruebas, una de las primeras cosas que hace es leer todos las definiciones en los fixtures e insertarlas directamente en la base de datos, sin discriminarlas. Los fixtures se saltan el proceso completo de creación de objetos, evitando validaciones y encadenamientos.

Debido a la forma en que son cargados, los fixtures son ridículamente rápidos, pero no pueden ser cambiados. Si un objeto con cierto tipo de datos de prueba es necesario para una prueba, este necesita ser definido en un archivo de fixture (o creado con un Model.new). Esto es especialmente frustrarte durante etapas tempranas del desarrollo como la concreción de modelos de datos y requerimientos de aplicación.

Debido a la forma en que las factories son creadas, estas tienen la ventaja de la flexibilidad. Si te percatas de que en un punto en una prueba necesitas un cierto tipo de datos, fácilmente puedes sobre-escribir la definición de una factory para llenar las necesidades de la prueba. Esto es especialmente útil en una nueva aplicación donde aun estamos entendiendo como necesitan ser estructuradas nuestras pruebas.

test 'on_assignment collects agents on active missions' do
  agent_on_assignment = Fabricate(:agent, mission: Fabricate(:active_mission))
  agent_not_on_assignment = Fabricate :agent
  assert_includes Agent.on_assignment, agent_on_assignment
  refute_includes Agent.on_assignment, agent_not_on_assignment
end

En esta prueba, solamente necesitamos una factory predefinida para Mission y Agent, y manejar los detalles en la prueba. No necesitamos ir a otro archivo para establecer la definición. Si necesitamos un agente con una misión, entonces podemos extraer esto a su propio factory :agent_with_active_mission. Este tipo de flexibilidad da resultados con anticipación.

Desafortundamente, hay un impacto en el rendimiento con las factories. Las factories necesitan crear un objeto entero y posiblemente guardarlos en la base de datos para tenerlo disponible para la prueba. Esto se amontona conforme necesitas más objetos en las pruebas. pero como efecto colateral favorece las pruebas de forma aislada.

La misma prueba usando fixtures puede lucir algo como esto:

test 'on_assignment collects agents on active missions' do
  agents(:bourne).missions.clear
  assert_includes Agent.on_assignment, agents(:bond)
  refute_includes Agent.on_assignment, agents(:bourne)
 end

Necesitamos asegurar que el fixture del agente :bond esta asociado con una misión. Para hacer esto, tenemos que buscar entre los archivos de fixtures por los agentes y misiones. También podemos asumir que el fixture del agente :bourne debe tener misiones asociadas con el, así que debemos transparentar esa asociación.

Cuando de flexibilidad y obviedad se trata, las factories tienen claras ventajas con su habilidad para crear objetos dinámicamente cuando los necesitemos.

La desventaja de las Factories

Muchas de las comparaciones que he viso entre fixtures y factories usan ejemplos de una aplicación que esta en etapas muy tempranas de desarrollo en pruebas individuales. Las factories abordan el problema del no saber como deben lucir los datos de prueba. Ellas te permiten tomar decisiones acerca de los datos de prueba cuando este mucho más esclarecido lo que necesitas: en la prueba.

Esta ventaja temprana lentamente se convierte en una desventaja conforme la aplicación crece. Las factories crean objetos, propiciando el que los desarrolladores prefieran pruebas con objetos y datos tan reducidos como sea posible. Existe una carga asociada con la agregación de nuevos datos y objetos de prueba. Las pruebas toman más tiempo y nuevas variantes de datos necesitan ser añadidas. Las factories empiezan construir objetos con asociaciones y dependencias para probar escenarios de complejidad creciente. La simplicidad de las factories nos dieron al inicio pueden terminar por fatigar una aplicación más compleja.

Es semejante al problema de la última milla con el internet de banda ancha. Escribir esas primeras pruebas resulta mucho más fácil con factories, pero la cantidad de esfuerzo necesario para cubrir pruebas complejas crece en el tiempo. Este no es un factor decisivo pero es un tanto irritante.

Los fixtures despues de la luna de miel

Ya nos examinamos los aspectos negativos del uso de fixtures. Se termina por experimentar algo de dolor desde el principio por tener que evolucionar las pruebas con datos redundantes y buenos sin la ayuda de un generador. Tienes que saltar entre las pruebas y los fixtures a menudo cuando se trata de las necesidades cambiantes. Mantener ese sobre-esfuerzo a lo largo del proyecto es intimidante.

Pero aquí esta la cosa acerca de los fixtures: se vuelven más fáciles conforme pasa el tiempo. Iniciar con los fixtures es un tanto doloroso, pero puede ser condenadamente agradable una vez que se establecen los requerimientos de datos. He encontrado que los fixtures pueden ser mucho mejores si les entras con estas cosas en mente:

Escribir al menos tres fixtures para cada modelo.

Si. Debes escribir tus propios datos de prueba. Como desarrollador, esto apesta porque sabemos que no lo tenemos que hacer. Simplemente se siente mal. Pero si lidias con tus propios sentimientos de frustración, pasan cosas divertidas. Tus datos de prueba empiezan a formar una narrativa. Una historia toma forma al rededor de tus modelos, enlazas objetos logicamente como si estuviesen en tu aplicación. Con las factories, estás construyendo moldes que pueden llenarse con plastico no descriptivo, pero con fixtures, contruiras algo a mano con mayor detalle.Los fixtures te dan la oportundad de dejas de pensar en tu aplicación como un puñado de clases y la imaginas en el mundo real. Esto realmente ayuda

Abraza el cargar todo previamente.

Tres fixtures por cada modelo pareec una exajeración cuando empezas, pero rápidamente sientes que no es suficiente para representar diferentes tipos de datos.

No lo es.

Cuando estas trabajando con factories, terminas por definir varios objetos diferentes para manejar diferentes situaciones. Este es un efecto colateral de las factories iniciando cada prueba con borrón y cuenta nueva. Si necesitas a menudo un objeto usuario que tiene multples objetos compra, necesitas definir una única factory que los construya.

Si puedes abrazar la forma en que Rails carga los fixtures antes de probar, tendrías acceso a las mas complejas relaciones con mínimo esfuerzo. Las factories requiren que inicies con datos de prueba pequeños y aislados y agregas factories más complejas de forma incremental. Los fixtures, por otro lado, se espera que sean tan complejos como sea posible, tan pronto como sea posible. Puedes hacer esto simplemente asegurando que los objetos asociados estan conectados.

Así es, tendrás que mantener tus datos actualizados.

Una vez que tienes el mismo tipo de cosa definida al menos tres veces, probablemente necesitarás implementar cambos a los datos al menos tres veces. Nuevamente, como desarrolladores, esto se siente como si no tuviesemos porque hacer esto. Se siente como un gasto de tiempo.

Tambien podemos recibir una dosis concentrada muy pronto en la vida de la aplicación conforme nuestros modelos tomen forma al rededor de requerimientos cambiantes.

Si trabajas en superar esta incomodidad inicial, no sera tan malo como pienzas. Miigraciones y cambios de datos pasan mucho al inicio, pero van disminuyendo rápidamente conforme una aplicación va creciendo.

No te quedes atascado con los nombres

Las factories están diseñadas para ser plantillas de diferentes representaciones de datos. Las factories tienen finalmente un montón de nombres para recordar los muchos tipos de datos. ¿Necesitas un usuario que tenga múltiples ordenes? Probablemente terminaras teniendo una factory :user_with_multiple_orders para obtener justo lo que necesitas.

¡No! No con fixtures. Tu limitas el número de objetos en el fixture para cumplir con varios roles diferentes, por eso no tendremos una semántica de nombrado de lujo. Simplemente dale a esos objetos nombres cortos, únicos y fáciles de recordar y llamar algún día.

No te olvides del Object.new

Los fixtures se saltan el ciclo entero de creación de objetos. Cuando estas probando validaciones o llamandas en Rails, simplemente creas un nuevo objeto del modelo con la de de un fixture, algo como:

test 'should require a unique code_name' do
  duplicate_mission = Mission.new(missions(:grand_slam).attributes)
  assert_invalid Mission.new, code_name: "can't be blank"
  assert_invalid duplicate_mission, code_name: 'has already been taken'
end

(assert_invalid es una aserción personalizada declarada en test_helper.rb)

Crear un nuevo objeto de un modelo es también una buena forma de manejar variantes únicas de tus datos que serán irremediablemente necesarios.

Entonces ¿Fixtures o Factories?

guerra-quesosNo pienso que vaya ha haber una resolución a la discusión de Fixtures vs. Factories. Ambas son increíblemente útiles y tienen sus propias ventajas y desventajas. Conocer las limitaciones de cada una te ayudará a escoger la mejor herramienta para el trabajo.

Me estoy moviendo de regreso a fixtures despues de darles otra oportunidad, pero puedo ser perfectamente feliz en un proyecto con factories. Es bueno tener opciones.

Esta es una traducción del artículo original: [Getting Friendly with Fixtures] (https://whatdoitest.com/getting-friendly-with-fixtures)

Simplicidad es Elegancia, tendencias de diseño web

Estándar

Glass-Ceiling-03-580x434Al paso del tiempo las sociedades van modificando los ideales que les sirven como guía. Los ideales estéticos, las guías para distinguir lo bello, son quizá en los que se dan los cambios más notorios.

Recientemente trate el tema de la belleza en lo que al diseño aplicado a la web respecta, en el post La belleza de la proporción. Pero sentía que me había quedado a penas en la superficie del tema.

En general reconocer lo bello resulta algo relativamente sencillo, puesto que cada uno es portador de estas guías que nos permiten apreciar la belleza. Al intentar distinguir lo excepcionalmente bello y sencillo es donde nos topamos siempre con la complicación.

La elegancia es el atributo de ser excepcionalmente bello y sencillo.

La Elegancia es quizá una de las cualidades estéticas sobre la que menos acuerdo existe. Se ha frivolizado mucho la palabra “elegante” al punto de olvidar su significado verdadero. La palabra “elegancia” viene del latín elegantia y significa “cualidad del que extrae lo mejor”. Sus componentes léxicos son: el prefijo ex- (hacia fuera), legere (escoger, cosechar), -nt- (agente, el que hace la acción), más el sufijo -ia (cualidad). Pero en un mundo donde la diversidad estética es tan amplia y rica en belleza como el Internet. ¿Qué es la elegancia? ¿Qué es ser elegante?

Por mucho un par de escritores han logrado condensar mejor las nocines de la elegancia sintetizando todo lo que necesitamos saber en una frase.

La elegancia es un don natural que permite obtener un logro máximo con el mínimo de medios. – José Ortega y Gasset

Un efecto esencial de la elegancia es ocultar sus medios. – Honorato de Balzac.

Existen cuatro características fundamentales de la elegancia. La primera es lo estético, la percepción de la belleza y la forma que influye en nuestra mente.

La segunda es la naturalidad. Sin naturalidad no hay elegancia verdadera, para ser natural debe derivarse de la espontaneidad y la autenticidad.

La tercera es lo sobresaliente, la distinción, lo excepcional. Y la cuarta característica es la belleza que significa en primer lugar armonía y proporción de las partes dentro del todo, y luego que esta cercano a la perfección o al menos las nociones ideales de esta.

Gerard_Daran-FC4En el arte de cualquier tipo los componentes esenciales del concepto de elegancia son la simplicidad y la consistencia de diseño, enfocándose en las características esenciales de un objeto. Los estímulos visuales son considerados elegantes si son usados un pequeño número de colores y los estímulos, haciendo énfasis en el resto. De la misma forma desde un programa hasta un web es elegante si se utiliza una pequeña cantidad de código y recursos estéticos, de una manera muy ingeniosa, para un gran efecto.

Algunas tendencias hoy constituyen ya casi una norma en diseño web. Señalaremos algunas brevemente.

  • Diseño Adaptativo(Responsive)
  • Imágenes y Videos de ancho completo
  • Diseño Flat

Si están buscando algo de inspiración, lo mejor que les puedo recomendar es darse una vuela por el sitio de AWWWARDS, yo lo encuentro siempre una experiencia refrescante.

El Manifiesto Ágil – Colaboración con el Cliente

Colaboración
Estándar

children and marriageCuando pienso en “colaborar con el cliente” me vienen a la mente la relación matrimonial. Quizá porque relaciones entre personas y grupos siempre tienen elementos comunes, y la relación proveedor-cliente no es la excepción. Así que vamos a tomar algunos problemas comunes en toda relación y veremos si podemos aplicarlos a las organizaciones, y dar algunas ideas de como resolverlos y mejorar nuestra relación proveedor-cliente.

Colaboración con el cliente“, cuando menciono esto algunos de mis colaboradores tienden pensar que estoy chalado, o les suena al equivalente de “durmiendo con el enemigo”. Encontraremos muy pocas relaciones proveedor-cliente verdaderamente buenas y exitosas, sin embargo no debemos renunciar a la idea de que la relación con nuestro cliente sea una relación exitosa.

“Matrimonio: así llamo yo la voluntad de dos de crear uno que sea más que quienes lo crearon. Respeto recíproco llamo yo al matrimonio, entre quienes desean eso” – Friedrich Nietzsche, Así habló Zaratustra

Niezche describe el matrimonio como la unión de dos que tienen la meta común de crear algo mayor, en español el termino para esta idea es “sinergia”. Las relaciones de colaboración entre individuos y organizaciones debe tener por objeto conseguir esa sinergia. Y como a todos nos toca actuar en ambos papeles (el de cliente y el de proveedor) es mejor si logramos que nuestras relaciones en ambos roles sean exitosas. Vayamos ahora a los problemas más comunes.

Perdida de interés

healthy relationshipComo proveedores, tendemos a “salir de sintonía” con nuestro cliente. Atrás quedan los tiempo en que pretendíamos a nuestro cliente y eramos con el “todo atención”. Al igual que con la pareja, dejamos de estar al pendiente de lo que necesita y de demostrar nuestro interés autentico en las cosas que le importan. Ya no les llamamos, no les preguntamos sobre la satisfacción con los servicios y productos, no les enviamos regalitos en su aniversario de fundación o cumpleaños de contactos clave, ni le preguntamos que nuevos intereses tiene.

Si estás casad@ sabrás que las cosas no son siempre “color de rosa”, pero es siempre buena idea recordar los días de noviazgo (con tu pareja o tu cliente) y procurar encontrar las cosas que harías diferente y otras que quizá deberías volver a hacer. A esto se le suele llama retrospectiva, en el mundo de los negocios le han llamado Gestión de Relaciones con el Cliente o CRM (Customer Relationship Management).

Comunicación Negativa

DiscusiónLa comunicación es un factor fundamental en cualquier relación. Y no me refiero a los saludos y respuestas casi mecánicos de todos los días “¡buenos días! ¿cómo te va?, ¡bien!”. Si nuestros métodos de comunicación son negativos, podemos llegar a tener problemas importantes. Veamos algunos ejemplos de comunicación negativa, que debemos evitar y re-aprender para convertirlos en positivos.

  • La comunicación de un problema en párrafos largos, vagos o muy emocionales. Debemos intentar ser claros con las cosas que nos molestan el uno del otro, y tratar de expresarlas de forma clara, corta y simple.
  • Las quejas cruzadas. Cuando convertimos la comunicación en un duelo de quejas, en lugar de escuchar al otro mientras trata de exponernos una queja, perdemos lo que pudiera ser una comunicación constructiva y de crecimiento para la relación.
  • Criticar constantemente al otro no es nada constructivo, aún cuando se piense que son críticas constructivas. Sobre todo si tenemos en cuenta la forma en que decimos las cosas.
  • Exageraciones. ¿A quien no le ha tocado escuchar un “tu siempre” o “tu nuca”? Quien me diga que su cliente o su pareja nuca ha hablado en términos exagerados o absolutos, considérese dichoso.
  • Lectura Mental Negativa. Solemos asumir que somos capaces de leer la mente del otro y le acusamos de motivos subyacentes equivocados. Ya sea el proveedor, la esposa o el esposo, siempre tenemos en mente que lo que esta haciendo o diciendo “lo hace para molestar” o “para ver que ventaja puede obtener”. Si tenemos que asumir algo, resultara mejor si asumimos que sus motivaciones son positivas o al menos validas.
  • Culpar al otro, aun sabiendo que en cualquier situación es bastante improbable que la responsabilidad sea solo de una de las dos partes.
  • Orientarse hacia el problema en lugar de dar paso a buscarle una solución positiva.
  • Irnos “por las ramas” utilizando comentarios irrelevantes, en lugar de mantenernos enfocados en el punto de nuestra conversación hasta que alcancemos un acuerdo.

Demás esta decir que casi todos estos problemas ocurren en nuestras comunicaciones de pareja y proveedor-cliente también. Cosas como los correos testamentales sin objetivo claro, el típico clamor “es que mi cliente es muy malo”, el cliente que siempre tiene la culpa de los problemas, y el pensar que nuestro cliente nos quiere sangrar. Ya sabrán que del lado del cliente nos aplican lo mismo a los proveedores. Hasta acá, el que nunca ha hecho o percibido nada parecido de su pareja o cliente, ya puede dejar de leer este artículo porque no le esta siendo de utilidad alguna.

El deseo de cambiar al otro

Ya se trate de personas u organizaciones, cada cual tiene sus hábitos, costumbres, forma de ser y de hacer las cosas, que probablemente no coinciden con las nuestras. Es ahí cuando aparece la tentación de querer cambiar al otro. Esas “pequeñeces” son asuntos que se deben resolver de inmediato.

Ya sea que llegue tarde a una cena, no baje la tapa del baño, se atrase con la entrega de un producto o bien de unos términos de referencia o se pierda la documentación de remisiones, utilice demasiado papel o te envía papelería excesiva. No podemos forzar al otro, ni pretender que se transforme en un clon nuestro. Lo ideal es conversar y encontrar soluciones que permitan a ambas partes sentirse satisfechos.

No olviden ‘armarse de paciencia’ para que se cumplan los acuerdos, que más de una vez tendrán que ser renovados con ideas distintas hasta encontrar la mejor.

Gastar de más

“No se trata de ganar más, sino administrar mejor el dinero”

Los problemas económicos son unas de las principales causas de problemas y ruptura de relaciones. Es algo a lo que hay que prestar especial atención tanto si nos va bien, como si estamos pasando por épocas difíciles.

Dependiendo de la cultura, del entorno y otros factores compartir esta información es difícil tanto para parejas como para proveedores y clientes, esto es algo que requiere de mucho esfuerzo porque hay que romper con muchas concepciones y además tener también mucha confianza en el otro.

Lo que hace el uno, afecta al otro. Tanto si se te paso la mano y no alcanzaste a pagar la luz por que te compraste un televisor nuevo o bien si vas ha incumplir el pago a tu proveedor o subirle el precio a los clientes porque te saliste del presupuesto. Necesitas mejorar la forma en que tomas tus decisiones y como manejas tu presupuesto.

Mala administración del tiempo

Office Clocks Showing Different TimesEsto es uno de los problemas más frecuentes. Se deben acordar momentos y horarios para reunirse y compartir tiempo, en la pareja estos acuerdos suelen se más tácitos que explícitos.

Ya sea que apartes un tiempo para conversar con tu pareja, o acuerdes reuniones periódicas con tus clientes, intenta evitar en esos encuentros los temas de trabajo y responsabilidades, y den lugar a detalles cotidianos, planes, temores y gustos. La intención de esto es cultivar la amistad.

La infidelidad

Cuando se decide tener una vida en pareja se llega al acuerdo de lealtad y exclusividad. Al romperse este compromiso surge la infidelidad.

Contrario a lo que la mayoría piensa que este fenómeno no se produce solo cuando la relación se ha deteriorado. En general las causas pueden ir desde problemas graves hasta trivialidades. Ya sea que tu pareja esta o haya estado saliendo con otra persona, o simplemente tu cliente ha estado probando los servicios de otros proveedores o productos.

Independientemente de la causa, lo importante es tomar la decisión de seguir adelante juntos o bien separarse. Si continúan unidos es indispensable trabajar el área del perdón y reconstruir la confianza. La decisión de disolver la relación debe analizarse bien y no considerarla solo porque aparente ser el camino más fácil, o por conveniencia.

Se que en los negocios la poligamia suele ser la norma, porque multiples clientes trabajan con multiples proveedores y viceversa. Encontrar relaciones de exclusividad suele ser menos usual. Pero no debemos desestimar el valor de esto, como proveedor la “fidelización del cliente” es una de los grandes metas de una estrategia de negocios.

Responsabilidades compartidas

Este tema es fuente de desacuerdos porque una parte puede creer que la otra no hace suficiente. Las responsabilidades y tareas son algo compartido.

Debe prevalecer la comunicación y la disposición de llegar a una convivencia de forma igualitaria y justa. Lo cual no significa que ambos sean responsables de las mismas cosas, además de que no tienen las mismas capacidades y tiempo disponibles.

Ya se trate de tu pareja o tu cliente, de forma conjunta deberán alcanzar esa cooperación mutua, necesaria para que las cosas marchen bien en el día a día.

No siempre vamos a ganar

bandera blancaEn los conflictos no se trata de callar o tener la razón. Desde el principio de la relación se deben establecer regalas y acuerdos sobre cómo discutir.

En general, sea tu pareja o tu cliente, no se trata de que calles mientras el otro habla, vocifera u ofende. Se debe establecer los términos de la comunicación, ha veces toca defender estos reglas de comunicación regularmente. Ambas partes deben poder solucionar sus conflictos conservando su dignidad y de forma respetuosa el uno para con el otro.

Durante estos períodos de crisis debe prevalecer la madurez y la disposición de buscar soluciones para fortalecer la relación. Si se ignoran los conflictos, poco a poco el vínculo se deteriorará.

Una aplicación muy práctica de la idea de “Ganar – Ganar” es el Equilibrio de Nash y resolución de conflictos. Pero no siempre las conflictos llegan a soluciones que satisfacen a ambos, y no siempre se han seguido las reglas de comunicación. Habrá ocasiones en que tendrás que ceder. Esto no es algo que debes tomar como una derrota, sino retomar los puntos de vista y analizar las cosas para afrontar mejor conflictos futuros.

La belleza de la proporción, la razón áurea en la web

Estándar

Luego de muchas conversaciones acerca de como debería ser una web, me di cuenta que para mucha gente la web continua siendo un territorio sin reglas; pese a que hay ideas bastante claras sobre principios de diseño aplicado al arte, creación de materiales impresos, desarrollo de productos, arquitectura y varias otras.

Las web modernas deben llenar no solamente las expectativas de los propietarios. Las web y aplicaciones de hoy deben también cumplir las exigencias de un público globalizado, diverso y rico en preferencias. Por ello resulta vital que se utilicen ideales de belleza tan universales como sea posible. Esos ideales de belleza son por tanto aquellos que utilizamos de forma innata y en los que la naturaleza es rica, tal es el caso de la proporción áurea.

Golden Ratio - Proporción Áurea

El número áureo (también llamado número de oro, razón extrema y media, razón áurea, razón dorada, media áurea, proporción áurea y divina proporción ) es un número irracional , representado por la letra griega φ (phi) (en minúscula) o Φ (Phi).

Además de su belleza matemática, su carácter misterioso como número irracional y la aparente armonía que otorgaba a las proporciones, los artistas clásicos utilizaron la razón áurea tras comprobar que aparecía en numerosos diseños de la naturaleza, comenzando por las mismas proporciones del cuerpo humano. Esto les llevaba a pensar que la razón áurea era algo así como un canon divino implantado en el universo. Hoy sabemos que la llamada ‘proporción divina’ tiene que ver con los procesos de crecimiento y optimización de las formas.

Esta proporción ha sido usada por pintores, escultores, arquitectos, matemáticos, escritores, fotógrafos, novelistas, cineastas, músicos y un largo etcétera en diversas épocas. También es utilizado por los diseñadores gráficos de nuestro tiempo. En lo personal encuentro interesante la idea de aplicar la razón áurea al diseño web. ¿Comó se ha aplicado? y  ¿Cómo podemos utilizarla nosotros?

Marcas y Logotipos

Hurgando un poco por la web, encontré que la proporción áurea ha sido aplicada en diseño de logotipos de varias marcas reconocidas. Estos diseñadores han sabido utilizar esta proporción para transmitir esas nociones de ‘proporción’ y ‘armonía’ que las marcas desean asociar con ellas.  Les dejo acá un enlace al artículo y algunas imágenes interesantes.

La Proporción Áurea en el diseño de logotipos (http://www.brandemia.org/la-proporcion-aurea-en-el-diseno-de-logotipos)

Pero de lo que va este artículo es del ¿cómo aplicar la proporción áurea al diseño web? así que vamos a ver algunas ideas y aplicaciones prácticas de esta proporción y algunas herramientas que nos facilitaran el ponerla en uso.

Diseño Web

Al diseñar el aspecto visual de un sitio web o la creación de imágenes en general, el dilema de elegir proporciones surge inevitablemente. Por ‘elegir proporciones’ nos referimos a la idea de diseñar un espacio que contenga la información de un sitio web o la información visual de una imagen. En ocasiones, estas decisiones se vuelven más simples al crear las cajas contenedoras de información(“div”) de forma proporcional, lo suficientemente grandes para contener la información.

Al utilizar una proporción como la proporción áurea, esta relación de aspecto no se altera por la expansión o contracción. El contenido de un sitio web puede ser mostrado en cualquier tamaño y todavía tendría sentido, ya que no se basa en el mundo físico. El colocar la información de un sitio web dentro de un div que tiene las proporciones áureas permitiría una presentación de la información que sigue las ideas clásicas de la belleza visual. Además, ya que el rectángulo de oro se puede dividir en cuadrados para crear rectángulos áureos más pequeños, la información puede ser incrustada como divs con estas proporciones una dentro de otra.

El Mito de la Lectura Superficial. Investigaciones con eyetracking (http://blog.pucp.edu.pe/item/162324/lectura-superficial)

Algunos estudios acerca del comportamiento de los usuarios mientras navegan, como el citado arriba, indican que las webs se leen desde arriba a la izquierda, en diagonal, hacia abajo a la derecha, perdiendo importancia según se va bajando. Los elementos más importantes tienen que ir siguiendo esta tendencia. Información de importancia se coloca dentro del rectángulo más grande, con información de la sub-categoría en los rectángulos más pequeños. El resultado sería un diseño espacial y visualmente agradable, con información organizada de forma conceptual por el tamaño relativo. Podemos apreciar esto en el diseño del sitio web de Twitter.

Legibilidad

No es que la gente lea menos, los sitios web todavía no están diseñados para que el usuario pueda leer textos extensos cómodamente.

LecturaLa legibilidad se define como la capacidad de una forma para poder ser descifrada y se basa especialmente en la eficiencia de la palabra visible. Existen reglas, o al menos, principios, para la legibilidad tipográfica. Para lograr textos más legibles debemos tener en cuenta estos factores:

  • La forma del tipo
  • Su organización en el espacio
  • Su tamaño (cuerpo)
  • Longitud de línea
  • Distribución de blancos: interletra, interpalabra, interlineado, ubicación del texto en relación al tamaño de la página.
  • La jerarquización de la información.

La proporción áurea también puede ser utilizada para logar mayor legibilidad, ya que nos permite establecer valores o al menos rangos para estos factores. En los siguientes artículos se nos explica mejor como podemos utilizar la razón áurea para el calculo de los factores de legibilidad.

[Cómo calcular tamaños tipográficos para Web] (http://www.cristalab.com/tutoriales/como-calcular-tamanos-tipograficos-para-web-c113111l/)

[Tipografía Básica] (http://tipografiabasica.wordpress.com/)

[Secret Symphony: The Ultimate Guide to Readable Web Typography] (http://www.pearsonified.com/2011/12/golden-ratio-typography.php)

Herramientas

Para finalizar y animarlos a que utilicen esta proporción en sus diseños, les dejo acá algunas de las herramientas que encontré y me parecieron útiles.

Golden Ratio Typography Calculator. Nos calcula a partir del ancho de línea el tamaño de la tipografía y el interlineado o bien calcular en base al tamaño de la letra. También puede calcular en base a cantidad de caracteres por línea y permite visualizar el aspecto de el punto en tal tipografía, de un listado básico de tipografías.

Type Scale. Permite previsualizar y elegir la escala tipográfica adecuada para tu proyecto y experimentar con el tamaño de la tipografía, escala y diferentes fuentes web.

The Golden Grid. Es un sistema de rejilla para web. Es producto de la búsqueda de un sistema perfecto de rejilla moderno. Su intención es ser una herramienta de CSS para los sitios web basados en cuadrícula o rejilla. Incluye ejemplos y hojas de estilo para layout, proporciones comunes para tipografía, imágenes y vídeos.

BlockLayer – Golden Ratio Calculator. Permite calcular las dimensiones de objetos proporcionales utilizando la razón áurea, para objetos rectangulares, círculos, elipses y triángulos.

Está infografía es una guía de todo lo que necesita saber. Aprender los conceptos básicos como lo que es la proporción aurea y donde se puede encontrar, además de formas prácticas de utilizarla en sus diseños. Ya sea que encuentren eligiendo una tipografía, en la edición de fotos, la creación de formas o incluso el trabajo en el diseño, pueden utilizar la razón aurea para que su diseño se vea lo mejor posible.

 

Everything you Need to Know About The Golden Ratio #infographic

You can also find more infographics at Visualistan