leanmind logo leanmind text logo

Artículos

Mireia dando una conferencia

Taller de introducción a la oratoria

En Lean Mind no solo valoramos las habilidades técnicas sino todas las que son importantes para trabajar en equipo, así que esta semana hemos tenido un pequeño taller de introducción a la oratoria para mejorar la forma en la que nos comunicamos. Además de que solemos ser ponentes en congresos y talleres, nos comunicamos con los equipos en los que trabajamos a diario, por lo que le damos mucha importancia a saber transmitir los mensajes para que lleguen con la máxima claridad.

Leer más
Checklist

Calidad en los proyectos de software

¿Qué entendemos por calidad en un proyecto software? ¿es posible que el exceso de calidad esté perjudicando al proyecto? ¿somos demasiado extremistas con la calidad? Este es un tema recurrente que de tanto en tanto sale a discusión entre agilistas y no agilistas, a veces con críticas poco constructivas al movimiento de la artesanía del software.

Leer más
End of the ITTT workshop

Taller: Inner Team Talent Tools

Desde nuestros inicios tenemos la gran suerte de contar con el apoyo de Rosa Elvira Gonzalez, nuestra psicóloga y coach en Lean Mind. Nos ha ayudado con dinámicas, talleres y conversaciones uno a uno que han sido muy importantes para crear el equipo en que nos hemos convertido.

Leer más

BLoC Pattern con Flutter

En este artículo explicaré cómo funciona el BLoC Pattern de Flutter. Tengo un boilerplate de flutter en el Github de LeanMind que quizás sea de ayuda para seguir este post. Pero primero vamos a hacer una pequeña introducción. Este patrón fue presentado en la Dart Conference de 2018 📹, es decir, es bastante nuevo. El objetivo de Paolo Soares y Cong Hu (trabajadores de Google) era hacer que el código fuera reutilizable entre las aplicaciones móviles hechas con Flutter y las aplicaciones web hechas con Angular Dart.

Leer más
cubes

Ejemplos de orientación a objetos (OOP) y principios de diseño

Cuando estamos aprendiendo sobre Programación Orientada a Objetos y sobre de principios de diseño, es complicado encontrar ejemplos reales que vayan más allá del típico rectángulo y el cuadrado. En este artículo te proporcionamos grabaciones de sesiones de trabajo reales, en un proyecto open source, practicando programación en grupo (mob programming). Tomando decisiones de diseño en vivo y aplicándolas a código que puedes ver tanto en vídeo como en el repositorio de código fuente.

Leer más
TDD Logo

Live coding: diseñando componentes React con TDD

Muchas veces surge la duda de como hacer TDD sobre la UI. Es típico que se acaben escribiendo test demasiado acoplados al código, cuando la idea en realidad es desarrollar nuestros componentes basándonos en casos de uso, expresándolos con test.

Leer más
colors

Combatiendo la obsesión de primitivos con objetos valor

La capa de código que contiene la lógica de dominio deberia hacer un uso limitado de los tipos primitivos del lenguaje, reemplazando la mayoría de ellos por nuestros propios tipos, con más semántica y con la capacidad de atraer comportamiento, permitiendo así programar paso de mensajes entre objetos.

Leer más
react logo

React custom hooks: diseño y testing

React es una de las librerías utilizadas para desarrollar aplicaciones front-end más conocidas a día de hoy. Esta librería se caracteriza por ser una de las más estables a lo largo de los últimos años y al mismo tiempo, de ofrecer nuevas características sin dar por obsoletas las ya existentes anteriormente.

Leer más
Spring Boot Logo

Testando construcción condicional de beans con Spring Boot

¿Cómo elegir la implementación concreta de una interfaz mediante un fichero de configuración? En este proyecto tenían una interfaz para un servicio y dos implementaciones. La implementación final se elige según un valor en la configuración del proyecto, de forma que es posible desplegar la app en varios servidores y elegir en cada uno una opción diferente. El código existente era similar a este (lo he simplificado un poco para el ejemplo):

Leer más
Docker logo

Argumentos en docker, cómo parametrizar contenededores

El contexto en el que surgió escribir este artículo es el siguiente:

Tenemos una aplicación Java + Spring la cual ya está dockerizada. Existen dos entornos: Desarrollo local y un entorno docker. Tenemos definido un application.properties dentro de nuestro proyecto donde se definen múltiples variables, las cuales cambian dependiendo del entorno. Al cambiar de entorno hay que cambiar manualmente el valor de esas variables.

Leer más
Project Lombok

Simplificando Java con Lombok

Uno de los problemas de Java es lo verboso y complicado que puede llegar a ser para tareas tan cotidianas como hacer un simple objeto y poder compararlo con otro. Pelearse con un equals y hashcode no es nada divertido. El Proyecto Lombok viene a solucionar esos detalles. Lombok es algo así como un preprocesador de CSS o Javascript pero para Java. A partir de unas anotaciones es capaz de generar código por nosotros.

Leer más
Closing tag simbols

Tips de CSS que podrían ayudarte

Hoy en día todavía hay personas que sufren mucho diseñando, os voy a compartir 3 formas de hacer columnas en CSS para que vean las diferencias entre flex, grid y css a la antigua. Flex está mas pensando para un alineamiento de bloques por así decir, mientras que Grid está pensado más como tablas, ¿en qué casos será mejor usar uno u otro? no creo que haya algo super definido, por lo tanto me resulta irrelevante, lo importante es que se vea como tu quieres y que esté mínimamente ordenado.

Leer más
Containers

Tests de integración con Testcontainers y Spring Boot

Para añadir más opciones a nuestra caja de herramientas a la hora de trabajar con Docker y Spring Boot, vamos a ver cómo utilizar Testcontainers a la hora de testear nuestra aplicación. ¿Testcontainers? Testcontainers es una librería Java que facilita la creación de bases de datos “de usar y tirar” o cualquier otra cosa que se pueda ejecutar en un contenedor Docker. Uno de los casos de uso más útiles es tener una base de datos dockerizada sobre la que poder lanzar nuestros tests de integración.

Leer más

La chuleta de Dockerfile y DockerCompose

En las últimas semanas he decidido dar un repaso a mis conocimientos de docker, y refrescar conceptos. Mi objetivo, más allá de repasar comandos sueltos, era poner en práctica la construcción de Dockerfiles y docker-compose, ya que, en el día a día, como desarrolladora, es lo que más suelo utilizar. Para esto aproveché un recurso made in Spain, la fantástica plataforma de CodelyTV, en la que podemos encontrar una gran variedad de cursos de diferentes tecnologías, herramientas y arquitecturas, explicados por grandes profesionales.

Leer más
Legacy Stamp

Estrategias para mejorar un enorme código legado

A menudo trabajamos con clientes que se enfrentan día a día a repositorios de código de cientos de miles de líneas o incluso millones de líneas, escrito durante más de una década. Son empresas con productos de éxito en el mercado cuyo valor ha hecho crecer a la compañía. Así que ese código legado tiene un alto valor. Eso sí, cuando llega el momento de actualizar el software por cualquier motivo, resulta muy lento y muy costoso.

Leer más
Flutter logo

Flutter, ¡una maravilla! ¿o... no?

En este artículo te contaremos nuestra vida tras varios meses tratando con esta tecnología creada por Google en 2017. Nuestro primer contacto fue extraño, para empezar nos encontramos con que usa el BLoC Pattern, que es el recomendado por los desarrolladores de Google, y por otro lado para la parte visual utiliza… ¿objetos? nos rompió un poco la cabeza, estábamos acostumbrados a otras cosas, pero todo esto no era algo negativo, era un nuevo objetivo.

Leer más
Coding dojo en Lean Mind

Test Basados en Propiedades

El pasado viernes 25 de enero de 2020 facilitamos un coding dojo en nuestra oficina como parte de las actividades de la comunidad Agile Canarias. Esta vez estuvimos practicando Property Based Testing (Test Basados en Propiedades). La idea es definir unos test donde en lugar de especificar datos concretos de entrada y de salida, le especificamos al framework cuál es el comportamiento esperado de la función que estamos probando y le pedimos que sea la propia herramienta quien genere por nosotros los datos de entrada.

Leer más

Afrontando un MVP con impacto social

Hace unos meses se nos presentó la oportunidad de colaborar en un proyecto social con Laborsord, S.L. (Centro Especial de Empleo de iniciativa social y sin ánimo de lucro), dedicada a la integración laboral de personas con discapacidad. El proyecto que se nos planteó consiste en crear una plataforma para que las personas con discapacidad auditiva pudieran seguir una clase en vivo, de manera que mientras el profesor hablaba, ellos pudieran ver en tiempo real la transcripción de la clase.

Leer más
Final de 2019

Lo mejor de 2019

El año 2019 ha sido inmejorable para Lean Mind. Esta joven empresa empezó a principios de 2018 y hoy, en menos de dos años, somos un equipo de 14 personas. No me lo imaginaba cuando estábamos arrancando.

Leer más
Foto de grupo en Adaloversconf 2019

Estuvimos en AdaLoversConf 2019

Sin duda uno de los eventos de comunidad mejor organizados de todos en los que he estado. Mi sincera enhorabuena a la organización por una gestión brillantísima. Absolutamente todo salió bien, impecable. AdaLoversConf 2019 ha sido el primer evento organizado por el colectivo canario de mujeres en tecnología ADA{LOVE}DEV. Un grupo que tiene la misión de dar visibilidad al trabajo de la mujer en nuestro sector, en el que existe una brecha de género tremenda. Entre otras cosas para que las nuevas generaciones tengan referentes que les animen a acercarse a alguna de las profesiones del sector TIC.

Leer más
Refactoring book cover

Los múltiples beneficios del refactoring matutino

La técnica de Refactoring consiste en simplificar el código sin alterar su funcionalidad. Simplificar significa sobre todo hacerlo más intuitivo y fácil de entender para los futuros lectos del código. La mejora del código debe hacerse a diario, cada pocos minutos, cada pocas horas, conforme se está añadiendo código. Lo primero es que el código funcione, que pase los tests y después es importante volver a leer el código que hemos escrito por si podemos hacer pequeñas simplificaciones en poco tiempo.

Leer más
Dark hacker

Null, un viejo enemigo del lado oscuro

Limita lo máximo posible el uso del valor null en tu código, porque tiene múltiples consecuencias negativas en la mantenibilidad del mismo. Por lo tanto limita también al máximo la cantidad de objetos nullables, es decir que pueden tener un valor nulo. El lenguaje Kotlin quiere ayudarte haciendo explícito el problema de los nulos pero, ¿entiendes lo que te está proponiendo? ¿o le das el “sí de los locos”?

Leer más
Hucha del cerdito

Cómo escribir tests rentables

Los tests automáticos son una herramienta que nos permite ganar velocidad de desarrollo y evitar problemas de mantenimiento severos, siempre y cuando sean adecuados. Las personas que no tienen suficiente experiencia escribiendo tests a menudo ignoran el gran impacto que la calidad de los tests tienen en el ciclo de vida del producto. El código de los tests requiere el mismo nivel de cuidado que el código que se despliega en producción, no se trata de código de segunda clase. Escribir tests requiere una inversión de tiempo; recuperarla o no depende de la calidad de los mismos. Si quieres que tu proyecto siempre huela a “green field”, necesitas buenas y abundantes baterías de pruebas. ¿Cuáles son los principios que buscamos en los tests?

Leer más
Caracola

La simplicidad por principio

Escribir código simple es tremendamente complicado. La virtud de encontrar la simplicidad es la clave del éxito de los proyectos ágiles. Pero estamos entrenados para la complejidad, vemos más complejidad de la que realmente hay y hacemos las cosas más difíciles de lo que son. Nos enorgullecemos de crear complejidad como si fuera algo grandioso. La complejidad accidental es la principal causa de problemas a la hora de mantener el código.

Leer más
Bitacora

La bitácora de proyecto

¿Quién dijo que “agile” significa “sin documentación”? La documentación es importante, lo que dice la agilidad es que es más prioritario poner en producción software que funciona, que escribir documentación. Pero la documentación hay que escribirla también.

Leer más
Kanban board

Taller de gestión de proyectos

La semana pasada impartí un taller de gestión de proyectos en el Laboratorio Campus, una iniciativa del Vicerrectorado de Empresa, Emprendimiento y Empleo de la ULPGC, en colaboración con la SPEGC.

Con un título tan abierto, genérico y sin conocer a la audiencia, hicimos un repaso global a los diferentes problemas que se dan en los proyectos y hablamos de herramientas clave para el éxito de los mismos.

Leer más
TDD

Respuestas a vuestras preguntas sobre TDD y testing

Hace nueve años que publiqué mi humilde libro sobre TDD en Español. Comencé a escribirlo hace diez años sobre esta época. Definitivamente quiero publicar una versión actualizada del libro arreglando los varios errores que cometí, utilizando ejemplos más concisos e incluso usando JavaScript para algunos de ellos en lugar de C#.

Leer más
team

Cómo es trabajar en Lean Mind

Todos buscamos tener un trabajo gratificante, aunque tenemos diferentes definiciones de lo que eso significa. Para mí, el trabajo más gratificante en el que he estado hasta ahora es en el que estoy ahora mismo y me gustaría compartir por qué me siento así al trabajar con este equipo tan magnífico 🙂

Leer más
science

Creando React Native Apps con Enzyme

Como desarrollador, una de las cosas que más valoro de JavaScript es el hecho de poder desarrollar cualquier tipo de solución (móvil, web, sistemas…) sin perder la esencia y el conocimiento del lenguaje que estoy usando.

Leer más
pencil

Testing de UI en Swift con Kif

¿Cuántos de nosotros hemos tenido que añadir una nueva funcionalidad y pasamos más tiempo probándola que implementándola?

En mi caso me he topado con varios proyectos de este tipo, en los cuales hemos tenido que lidiar con aplicaciones nativas, ausentes de test.

Leer más