Publicidad

RSS Metodologías de programación

Metodologías de programación: Ingeniería del rendimiento ¿Cómo anticiparse a que los problemas de escalabilidad ocurran en...

Ingeniería del rendimiento ¿Cómo anticiparse a que los problemas de escalabilidad ocurran en producción?

7 Comentarios
Ingeniería del rendimiento ¿Cómo anticiparse a que los problemas de escalabilidad ocurran en producción?

Por fin hemos pasado a producción, la aplicación ha terminado de ser desplegada en la plataforma accesible a los usuarios y podemos dar por terminada la iteración actual llena de crisis, nervios y sobreesfuerzos; que han culminado en un fin de semana de trabajo continuado.

Disfrutamos de un breve y merecido descanso antes de volver temprano a la oficina para arrancar la siguiente iteración, planificando las tareas a realizar y coordinando los equipos de desarrollo, UX y calidad.

Pero, la primera llamada a media mañana, ha despertado la pesadilla que se ha ido gestando según el número de accesos ascendía siguiendo al sol.

Y ahora – cuando los problemas se están escalando hacia Dirección como la espuma de un mal cava – un sistema sobrecargado ha terminado por presentar un rendimiento inutilizablemente lento.

Leer más »

Resolvamos las grandes disyuntivas del mundo del desarrollo

13 Comentarios
Resolvamos las grandes disyuntivas del mundo del desarrollo

El ser humano se mueve entre dualidades, dicotomías, ya sabes: el ying y el yang. Elegimos entre Madrid y Barcelona, entre ColaCao y Nesquick, entre tortilla con cebolla y sin cebolla, entre Marvel y DC y así ad infinitum. Los desarrolladores, mientras no se demuestre lo contrario, también somos personas y en nuestra profesión también nos enfrentamos a terribles dualidades diariamente. Pero para eso estamos en Genbeta Dev, para acabar con estas peleas ancestrales... con tu ayuda (y la de las polls de Google), claro.

Me explico: presentaremos a continuación las mayores disyuntivas del mundo del desarrollo y las acompañaremos de una encuesta, votáis y la semana que viene os traemos los resultados. ¡Que hable el pueblo ahora o que calle para siempre!

Leer más »
Publicidad

Test automáticos con QuickCheck ¿Cómo analizar nuestro código en busca de bugs?

5 Comentarios
Test automáticos con QuickCheck ¿Cómo analizar nuestro código en busca de bugs?

Verificar que nuestro código está libre de bugs es una tarea muchísimo más complicada de lo que pudiera parecer en un principio. El número de relaciones que se producen entre las piezas de código que vamos añadiendo aumenta de forma vertiginosa y desgraciadamente nadie parece saber aún la forma de escribir código libre de bugs. No deja de ser sorprendente que el datamining y en particular el machine learning no se apliquen de forma efectiva dada la ingente cantidad de programadores que hay en el mundo escribiendo cabezonamente el mismo código y cometiendo una y otra vez los mismos errores.

Hasta entonces, una de las herramientas que puede sernos de utilidad a la hora de validar nuestro código es QuickCheck, que nos permite escrutar automática y probabilísticamente nuestros algoritmos para encontrar errores.

Leer más »

Metaprogramación en runtime con Groovy

15 Comentarios
Metaprogramación en runtime con Groovy

Una de las características que hacen de Groovy un lenguaje tan potente es su capacidad de Metaprogramación. El hecho de que sea un lenguaje dinámico (opcionalmente como ya vimos) hace que podamos postponer hasta tiempo de ejecución ciertas comprobaciones y decisiones que normalmente se harían en tiempo de compilación. Así podremos interceptar, inyectar e incluso sintetizar nuevas clases y métodos bajo demanda en tiempo de ejecución.

La metaprogramación es una técnica avanzada que básicamente nos permite escribir código que escribe código. Este tipo de técnicas, que a priori pueden no significar nada, hacen que podamos resolver nuestros problemas con un enfoque distinto y en ocasiones la solución puede ser mucho más elegante, eficiente y adecuada que si usamos un enfoque más tradicional.

Si eres desarrollador Java probablemente te vengan a la cabeza reflection, programación orientada a aspectos o incluso manipulación de bytecode o generación de código y pienses que esto es algo muy complicado, ¡nada más lejos de la realidad!
En este artículo nos vamos a centrar en la Metaprogramación en Runtime de Groovy, veremos qué es, cómo y por qué funciona en Groovy y explicaremos las distintas técnicas con ejemplos de código para que todo se entienda mejor.

Leer más »

12 ideas de la filosofía Clean que no pueden faltar en tu código

18 Comentarios
12 ideas de la filosofía Clean que no pueden faltar en tu código

Si has oído conceptos como SOLID, conoces a personas como Uncle Bob, o eres un experto en arquitecturas, seguro que has oído hablar sobre Clean o el código limpio.

Esta filosofía básicamente aglutina un conjunto de ideas que pretenden hacer que el código sea más fácil de leer, mantener, extender y menos propenso a errores.

La idea original surgió gracias al libro del mismo nombre escrito por Robert C. Martin (Uncle Bob), y del que he querido extraer algunas ideas que creo que son interesantes.

Leer más »
Publicidad

Entendiendo la inmutabilidad: Qué es, para qué sirve y cómo usarla

9 Comentarios
Entendiendo la inmutabilidad: Qué es, para qué sirve y cómo usarla

En estos años en los que los lenguajes funcionales están empezando a convertirse en alternativas reales en casi todos los ámbitos, uno de los conceptos que suele venir asociado a ellos es el de la inmutabilidad.

Si bien es cierto que la inmutabilidad es una idea que no es exclusiva de la programación funcional, sí que cobra una importancia vital en este tipo de lenguajes.

La programación funcional se asienta sobre muchos conceptos matemáticos que requieren de la inmutabilidad para seguir siendo válidos.

Aún así, creo que es un concepto que es interesante de entender independientemente del tipo del paradigma de programación que utilices.

Leer más »

Cómo plantarle cara al Legacy Code

12 Comentarios
Cómo plantarle cara al Legacy Code

Aunque podemos tener una discusión muy profunda sobre lo que es y lo que no es Legacy Code, hay un aspecto concreto que para mi puede marcar la diferencia y es la confiabilidad con la que somos capaces de realizar cambios sobre nuestro producto a medida que estos son requeridos por negocio.

En una base de código en la que ciertas tarjetas de nuestro panel Kanban se eluden sistemáticamente por parte del equipo de desarrollo haciendose los disimulados, este es un claro síntoma de que hay una porción importante de nuestro sistema sobre la que nadie quiere asumir los riesgos que comporta su modificación. Cuando esto sucede, siempre se repiten algunas situación que son verdadores spots a detectar: Controladores o clases muy grandes, pocos tests y/o malos tests, acoplamiento, código duplicado, etc.

Ante esta situación, es muy probable que lleguemos a sentir la presión de negocio cuando no somos capaces de incorporar nuevas funcionalidades lo suficientemente rápido o cuando, plantear un test A/B sobre el producto parece como una gran locura que llevaría semanas de planificación.

Leer más »

To throw or not to throw o para que sirven las excepciones

13 Comentarios
To throw or not to throw o para que sirven las excepciones

En el mundo impuro en el que vivimos se producen situaciones inesperadas que escapan a nuestro control. Es por ello que los programas necesitan un mecanismo mediante el cual poder controlar dichos casos excepcionales, al más común de esos mecanismos se le llama Exception handling. Sin embargo, el uso de excepciones tiene consecuencias en la calidad de nuestro código haciéndolo más frágil. ¿Podemos hacer algo al respecto?

Leer más »

Retos de la agilidad en empresas grandes

4 Comentarios
Retos de la agilidad en empresas grandes

Son las 20:13, sonido en el móvil y el correspondiente mensaje de WhatsApp. Es de Marta. Ella trabaja con el rol de responsable de proyectos y, entre varios mensajes, quiere compartir conmigo que, después de meses de trabajo, el comité de dirección de su empresa, una de las que en el sector llamaríamos “grandes”, ha cancelado lo que allí llamaban la “transformación ágil” de su proyecto.

Marta me comenta que la dirección de su empresa ve demasiado grandes los cambios organizativos, estructurales, contractuales, etc., necesarios para poder acometer, realmente, el cambio que requiere trabajar de manera ágil.

Leer más »
Publicidad

Ver más artículos