Date

October 5-6, 2019

About the event / A place to share knowledge

Software Crafters Barcelona is a two day event which aims to attract and connect software development professionals, who feel passion for their work and share the values and principles of the Crafters movement.

It aspires to be a meeting place that facilitates the magic of learning, teaching and collaboration, where participants create a gratifying and enriching experience.

It doesn't matter who you are, your knowledge level or your favorite programming language. We encourage you to participate if you:

- are passionate about software.
- want to be involved, or are already involved, in the Software Crafters movement.
- want to share your knowledge, experience, or skills.
- enjoy learning by helping others and believe that sharing is key to your own progress.

In addition to technical contents, it will be fun. There will be beers, and we'll have stimulating conversations late into the night. Software Crafters Barcelona is an opportunity to meet new friends, face new challenges while learning and further improve your skills. Join us!

Schedule

Provisional schedule (to be confirmed).

Registration


Opening


Varios estudios demuestran que la velocidad de carga de una página o aplicación afecta mucho en la conversión. Vivimos en un entorno muy dinámico, cualquier distracción, como una notificación de Whatsapp o Twitter, nos hace perder el foco con gran facilidad.
Como desarrollador@s debemos dar la importancia que merece a la web performance. La performance va más allá de mejorar el tiempo de carga, las animaciones y las interacciones del usuario también están llenos de puntos de mejora.
En esta charla aprenderemos:

  1. 1. Cómo tener en cuenta la performance desde el principio en un nuevo proyecto.
  2. 2. Cómo afrontar un proyecto activo para mejorar su velocidad.
  3. 3. Cómo mejorar la UX tanto en la carga como durante la navegación por nuestra página.
  4. 4. Herramientas de análisis y monitorización.
  5. 5. Recursos para estar al día.

Break


Explain, please: Help your users trust you

In the past 5 years mobile apps have expanded to encapsulate almost every instance of our daily lives: we use them to communicate with loved ones, share secrets, and to them we reveal part of ourselves. They interact with almost every business transaction around the world, and with the rise of IOT they are even being connected to our homes and cars. And yet according to surveys only around 5-8% of the world population knows how mobile apps operate or work.
Users sometimes don't understand why apps are asking for permissions, or what their data we ask access for is used for.
In this talk we'll see how important it is to earn your users' trust in a time when we are all worried about privacy. We will be reviewing real life scenarios about information transparency, and how it can be achieved with small changes in design and code. Helping users understand how your app uses their data is good for everyone.

🔙 to the basics: Modelando nuestro dominio

SOLID, Arquitectura Hexagonal, CQRS, DDD… total, que llega el momento de modelar nuestras entidades y servicios, y nos hacemos un lío que no sabemos ni por dónde empezar 😅.
Sensación de bloqueo. ""Hostia, llevo 3 horas pensando y dibujando posibles alternativas y ninguna me convence. Al final será verdad que no tengo ni idea 😬"".
Planteamos hipótesis erróneas del estilo… _si lo hago con DDD ""de verdad"" la query no aguanta ni 100 peticiones concurrentes, pero esto otro me parece una chapuza, y esto otro viola 7 de los 5 principios SOLID… ¡¡¡mmmmmamaaaaaa!!! 😱._
Keep calm. 👼
En esta charla plantearemos distintos escenarios prácticos y reales. Casos de uso de esos que se pueden ver en un screenshot y donde la gran mayoría de desarrolladores web y móviles nos podemos ver identificados:

  • Listado de items con 652342 filtros y combinatorias (backoffices, páginas de categoría o filtrados, búsquedas…)
  • Tipologías de items con partes comunes pero pequeños matices (productos de distintas categorías por ejemplo)
  • Distintas opciones a la hora de modelar nuestras interfaces para hacerlas realmente agnósticas de la infraestructura que hay detrás
En fin. Cositas que nos han supuesto un reto a la hora de plantearlas, que hemos fallado modelando y hasta que no lo hemos tenido picado no nos hemos dado cuenta de la magnitud de la tragedia, y batallitas que ojalá puedan serle útiles a alguien 🙂

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Cómo las herramientas correctas ayudan a implantar la arquitectura correcta

Todo empieza con un problema, uno gordo, tanto que decides que necesitas una solución a nivel de arquitectura. Así que te sientas con tus compañeros y definís vuestra nueva arquitectura. Pero esto solo es el principio, ahora tienes que lograr que toda la empresa la adopte. Y este es el auténtico reto. En esta charla quiero explicar mi experiencia personal de cómo llevamos la arquitectura a producción con millones de usuarios gracias al increíble conjunto de herramientas que hemos desarrollado dentro de Adevinta. Y cómo sin ellas la convergencia tecnológica hubiera sido imposible.

Break


Ingeniería del caos: Rompiendo cosas a propósito en producción

La ingeniería del caos es una joven disciplina centrada en la realización de experimentos controlados en sistemas en producción con el fin de mejorar su resiliencia.
Aunque ha existido desde mucho antes, fue en 2010 cuando empezó a tomar relevancia gracias al trabajo de Netflix con su ‘Chaos monkey’, desde entonces se ha evolucionado mucho y ha crecido alrededor una vibrante comunidad.
En esta charla veremos una introducción a los principios, prácticas y herramientas en torno a la ingeniería del caos.

InmunoGame: Cuando la inmunología se une a JavaScript of Things.

Este año desde Afaya nos hemos embarcado en la creación de un juego tipo trivial con IoT y para ello hemos buscado como temática la Inmunología y como framework JavaScript of things. En esta charla detallaré como hemos realizado nuestro proyectos junto con recursos y consejos útiles si a alguien le apetece ponerse a ello.

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


UI tests are dead, long live UI tests!

Is it really worth automating UI tests? In most of the cases, the cost of maintenance is much higher than the benefit they bring. However, it can still provide a lot of value, if kept to a minimum. In this talk I’ll explain what other kind of tests or techniques can be implemented to avoid doing that much UI testing. We will revisit the testing pyramid and explore how it can be adapted to context we now find in projects.

Break


The architecture game (Workshop)

In this session we will design an e-commerce solution using a "board game" approach, we will have a few boards with different types of architecture styles (layers, distributed, hexagonal). Atendees will fill the boards with cards representing classes placed in the board. There are a few tokens that can be used to mark classes (value object, aggregate, repository, service, event, ...). This should be a fun and iterative session where attendees can try different approaches to solve the problem, discuss alternatives, get feedback and learn about design and architecture.

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Web Accessibility: don’t be Beyoncé

We can make the web more accessible, for everyone.
Earlier this year, Beyoncé's website was hit with a lawsuit, claiming Beyonce.com denies visually impaired users equal access.
As more aspects of our daily lives are conducted online, every web developer can do more to make their content accessible for users with vision, hearing, or motor function difficulties.
This talk will show you the ways Beyoncé's website can be made more accessible, why it matters, and what you can do to improve the online experience, for everyone.

Break


Cloud-Native Kubernetes-First Serverless Continuous Delivery With Jenkins X, Kubernetes, And Friends (Workshop)

A lot changed since we were introduced to cloud, Kubernetes, and containers. Whatever we did in the past might not be valid anymore. Our applications need to become cloud-native, we need to adopt Kubernetes as the first class citizen, and there is no doubt anymore that continuous delivery is a must for any company that wants to stay competitive. The problem is that Kubernetes is complicated and the ecosystem is vast. Understanding low-level details takes more time than we might have, and yet we need to get everyone on board. We need a tool that will allow us to leverage all the latest and greatest processes and tools. At the same time, we need them to be simple and straightforward so that everyone can benefit from them. That is the primary objective behind the Jenkins X project. It brings power by combining best practices and tools while keeping it so simple that anyone can use it.
Jenkins X, an open source project introduced to the community by CloudBees, enables the rapid creation, delivery and orchestration of cloud-native applications based on continuous delivery best practices and the proven Kubernetes platform.
By combining the power of Jenkins, its community and the power of Kubernetes, the Jenkins X project provides a path to the future of continuous delivery for microservices and cloud-native applications.
Jenkins X is Jenkins and additional best of breed tools and software for Kubernetes. It provides an interactive command-line interface to instantiate applications, repositories, environments, and pipelines and orchestrate continuous integration and continuous delivery.
It is the CI/CD solution for development of modern cloud applications on Kubernetes.
We'll explore how to create a fully operational continuous delivery pipeline using containers, Kubernetes, Jenkins X, and quite a few other tools.
## Agenda

  1. What Do We Expect From Continuous Delivery?
  2. ow Do We Accomplish Continuous Delivery?
  3. Intro To Jenkins X
  4. Creating A CD Cluster
  5. Creating A Quickstart Project
  6. Applying GitOps Principles
  7. Working With Pull Requests And Preview Environments
  8. Promoting To Production

Lunch


Open Space!

Break


Open Space!

Closing


Registration


Opening


Functional Programming bits and pieces

In this talk I would like to go through some main concepts of functional programming and show how they can add value to the process of developing software. I will try to give some examples that don't require specialised knowledge. I would like for the audience to gain some curiosity about the topic and leave wanting to know more about functional programming.

Break


Why Serverless?

El año pasado vimos que Serverless es ya una tecnología madura con la que poder trabajar, pero por qué querría una organización meterse en un nuevo paradigma tecnológico? Es esta charla hablaremos sobre aquello que aporta Serverless a nuestra organización desde una perspectiva de negocio. Veremos como permite la rápida experimentación y nuevos modelos de negocio y como nos permite centrarnos en lo realmente importante para nosotros: la lógica de negocio.

Ia(rt)C. Infrastructure as (real typed) Code

Hoy en día parece que ya hemos pasado la oscura etapa en la que desarrolladores y administradores de sistemas hacían cambios (a veces aleatorios) en entornos de producción y se perdían en el éter. Cada vez más desarrolladores tenemos asumido que toda la configuración debe ir versionada, y con la computación en la nube hemos llegado a ser capaces de describir nuestros entornos al 100% solo con código.
¿Pero qué código nos toca escribir? En muchas ocasiones nos toca escribir YAML, JSON u otras formatos que no se prestan mucho de por sí a abstracciones o a la reutilización (más allá del uso de sistemas de plantillas).
En esta charla haremos un repaso de algunas opciones de Infrastructure as Code (IaC) en Amazon Web Services y algunos ejemplos usando Cloud Development Kit, un SDK que presentó Amazon en el re:invent 2018 y que nos permite definir nuestra infraestructura con código Typescript, Java o .Net!

Lunch


Software and architecture quality in a startup

Las startups de éxito suelen crecer muy rapidamente. Eso implica que la mayoría de veces el equipo de desarrollo se ve obligado a adaptarse a esa velocidad y sacar nuevas funcionalidades a un ritmo frenético. Todo esto queda reflejado en el código: tech debt, acoplamiento, bad smells, diseño de arquitectura pobre y no escalable...
En la charla hablaré como he afrontado todos esos retos y como, poco a poco, se ha ido mejorando el código y la arquitectura para que permita evolucionar y escalar según las necesidades de la empresa. Veremos como se pueden ir aplicando de forma incremental e iterativa patrones de diseño a micro y macro arquitectura (DDD, SOLID, microservicios...).

Apprenticeship programs

“Number of programmers doubling every five years” Robert C Marrin.
We have lots of junior developers joining the industry every year. And even with this, every company is struggling to find developers, especially senior developers.
We think that one of the best solutions to this problem is paid apprenticeship programs.
In this talk, we want to share our experience with our apprenticeship program from different points of view, as an apprentice and as a teacher.
We’ll talk about what went well, the challenges we faced and how we solved them.
Moreover, we believe that apprenticeship programs go beyond the apprentices and the teachers and help to foster a culture of learning in a company.

Break


Don't fear DDD: introducing it to your project

You will learn how to apply the Domain-Driven Design (DDD) concepts to your project. No matter what state you're currently at. In this talk, we will cover the basic and intermediate DDD concepts (e.g., value objects, aggregates; fighting anaemic domain modelling) and how to adopt it on Monday.
We will share the real experience of performing this same step-by-step transformation for a client project: from where we took it, the intermediate stages, and where we are now. How we have taught our client to adopt these practices, how to code better. We keep it simple, for maximum efficacy & efficiency.
This is a highly practical talk, showing plenty of code.

Closing


Registration


Opening


Beyond cryptography

El mundo contemporáneo se basa en la seguridad de los criptosistemas. Cada día intercambiamos información confiando en que sea de manera privada y que ninguna parte externa pueda acceder a los datos que mandamos. La rama que se encarga de estudiar y analizar estos procesos se llama criptografía, y es una mezcla entre matemáticas y enginería, ya que muy a menudo, la seguridad detrás de estos intercambios de información se basa en la dificultad de resolver ciertos problemas matemáticos.
En esta charla, haré un respaso sobre la evolución de la criptografía a lo largo de la historia, juntamente con algunas de las diferentes herramientas matemáticas que se han usado para poder intercambiar información de forma segura, y enseñar por qué y de dónde surgen algunos de los sistemas criptográficos de hoy en día. Algunos de éstos parecen muy complicados pero a menudo los problemas matemáticos que se esconden detrás son similares a los que encontramos en la criptografía clásica. Además de la criptografía simétrica y asimétrica, presento otros protocolos, a veces menos conocidos pero muy interesantes y con gran aplicación a blockchain, como son por ejemplo las signaturas o las pruebas zero-knowledge.

Break


UX Engineer: engineers connecting design and front-end

We work in companies that separate the visual part of the web, the design and the front-end, in completely different professional positions, even in different departments. What benefits would we get from having mixed profiles that could work in both disciplines and therefore connect them? In this talk I want to make visible these professional profiles called "UX Engineer", talk about what education we have, how we work, our contribution to teams in agile methodologies, our involvement in the entire visual process, what we are and what we are not.

The `sort` magic behind the scenes in Java

Sorting is a fundamental problem in Computer Science. Formally, given a collection of elements, a sorting algorithm describes how to arrange them in a certain order. Most efficient sorting element depends highly on the nature of the elements to sort, the order function, and the entropy of the collection. Also, other properties to consider are stability (keeping original respective order for equal elements), amount of auxiliar space and parallelism. Most programming languages provide sorting algorithm(s), so that we can get all the magic without caring about the details. Also, very commonly, they provide the counterpart for data structures, i.e. sorted sets (maps). In this presentation, I’ll review their typical implementation in modern Java, highlighting their pros, cons, and sum up with some wishlist.

Lunch


Service Mesh and the future of networking

In the world of microservices, we have seen this new technology, the Service Mesh, emerge and grow very fast. Projects like Istio, Linkerd or Consul have become very popular and people are starting to adopt them and figuring out the new possibilities these projects bring. But beyond the individual features each of those projects provide, in this talk we will present the core concepts of a Service Mesh, the novel things this technology brings, and the use cases it is meant to solve.
We will explore how Service Meshes will push networking to the next level, opening the door to a whole new set of possibilities especially designed for this new era of multi-cloud and hybrid architectures, and giving us a mental model with which to explore and evaluate after the talk.

Videojuegos con JavaScript: lessons learned

¿Qué pasa cuando quieres desarrollar videojuegos pero no sabes como? Hay quien muy acertadamente decide aprender, leer libros, hacer cursos… Yo decidí saltar a la piscina y empezar a hacer juegos con lo que ya sabía: JavaScript, concretamente Vue. ¿Qué podía salir mal? Muchas cosas! En esta charla hablaré sobre errores y lecciones aprendidas durante el desarrollo de varios juegos, también de lo que no salió del todo mal, y por qué estoy haciendo mi siguiente juego con Phaser.
Algunos puntos a tratar:

  • Control del tiempo con javascript
  • Control del estado del videojuego
  • Control del input del usuario
  • Cuando es mejor usar un framework especializado como Phaser

Break


Mis retrospectivas se han roto. Antipatrones de equipo

¿Alguna vez te ha pasado que estás en una retrospectiva y piensas, ""ésto ya lo he vivido antes, en otro equipo""?. A lo largo del tiempo y del espacio, una y otra vez los equipos acaban reproduciendo los mismos patrones de comportamiento en sus retros. Son antipatrones: Te encuentras con un problema en la dinámica de grupo, en un contexto, y aplicas las mismas soluciones (malas) para intentar corregir ese comportamiento y siempre son las mismas soluciones.
Caemos en la misma piedra constantemente. Traigo algunos de esos patrones y lo que he descubierto reflexionando sobre ellos: cuándo suceden?, qué consecuencias provocan?, cómo podemos atacarlos de una forma diferente a la habitual?

Closing


Registration


Opening


Desde el caos al Domain Driven Design en Go

¿Cansado de confundir tus espaguetis🍝 con tu código Go? ¿No sabes ni por dónde coger tu código🤯? Queremos ayudarte a ordenar tus aplicaciones Go aplicando Domain Driven Design. ¡Profundizaremos en los diferentes conceptos de Domain Driven Design y veremos como aplicarlos a nuestro código Go!
Seguro que cuando empezaste con Go, una de las primeras frustraciones que tuviste es, ¿cómo puedo evitar las dependencias cíclicas? Con nuestra charla queremos darte las claves, a través de una estructura de prácticas y terminologías que nos permitirán tomar decisiones de diseño que enfoquen y aceleren el manejo de dominios complejos.
En nuestra charla se abordarán los puntos de vista del DDD estratégico (arquitectura en capas, entidades y agregados, value objects, etc.) y del táctico (lenguaje ubicuo, bounded contexts, shared kernel), pero siempre haciendo que la charla se centre en los conceptos relacionados con la programación, mediante ejemplos prácticos de código escrito en Go.

Break


Why Emotional Intelligence is crucial in the workplace and in life

Have you ever wondered why more businesses are talking about emotional intelligence, mental health, or meditation? Have you wondered why companies like Facebook or Google are able to take such good care of their employees that they never want to leave? The secret to this long-term success is called Emotional Intelligence. In this talk, I will be able to explain what Emotional Intelligence is, how you can apply it to your business to help your business succeed, and how you can apply it to your life to gain stability and peace, despite the strong tides of inevitable problems life throws at us.

Predictably Unpredictable

How predictable is your code? How predictable is your system, your project or your business? What does it mean to be predictable? Knowing this will help us write better code, create better systems and run better projects and help us understand why agile practices work and when they may not be enough...

Lunch


Del código al software: un viaje en equipo

Miramos a nuestro alrededor: vemos programadores a los que no les importa la metodología, QA a los que no les interesa la arquitectura o Scrum Masters a los que no les importa todo lo anterior. Desde todos los ámbitos, estamos creando silos de conocimiento dentro de los equipos que conllevan a la delegación de responsabilidades conjuntas en personas concretas, que los roles y los títulos favorecen. Al final nos preguntamos, ¿qué pasó con los principios de XP? ¿dónde los olvidamos?
En esta charla queremos hablar sobre equipos multidisciplinares, necesidades de liderazgo y qué significa ser desarrollador de software. ¡Queremos ponerlo todo en duda!

Visualización de datos: ¿Un nuevo arte?

Primero fue el big data y ahora las visualizaciones, durante estos años todo lo relacionado con los datos es tendencia. Pero, ¿son estos años los primeros en los que se han hecho visualizaciones de datos para mostrar información y/o dar un mensaje?, ¿sabemos transmitir una idea usando una visualización de datos?, ¿pueden las visualizaciones de datos responder preguntas?, ¿ es arte la visualización de datos?.
Además de comentar estas preguntas, hablaremos de cómo se pueden usar datos para visualizar información. Para ello, compartiremos consejos sencillos, recursos y tecnologías que existen para que tus gráficas no caigan en el olvido.
Si te gustan los datos y las visualizaciones, o alguna vez te has preguntado cómo hacer una buena visualización esta charla te adentrará en el mundo de la visualización de datos.

Break


Functional error handling

La programación funcional va de funciones puras con resultados predecibles, pero en el mundo real se producen errores (llamadas a base de datos que no devuelven datos, timeouts de red, etc...). En esta charla me gustaría hablar de conceptos como Monads, Applicatives y Functors, y como nos ayudan a lidiar con dichos errores. Veremos algunos ejemplos en Kotlin y como librerías funcionales como Arrow nos proveen de tipos (Optional, Either y Try) que nos ayudan en el manejo de estos errores en una forma funcional.

Closing


Registration


Opening


Tech leadership: one year after

Many people think that being a Tech Lead is about being promoted. In fact, it's a career change. You start to shift your focus from the tools, libraries, programming languages and "the best code"
towards enabling your team so they can do their job, while learning and having fun. How can you help your team grow, keep yourself hands-on, change and improve processes, and manage different stakeholders, while delivering value to your company? In this talk, I will reveal the lessons learned in my first year as a first-time Tech-Lead, from transparency to communication, handling hyper-growth, fostering ownership and having difficult conversations with people.

Break


Monitoring with the Elastic Stack: Choose Your Own Adventure Workshop (Workshop)

In this workshop, we'll give you the tools to start monitoring your infrastructure and applications using the Elastic Stack. Just bring your laptop with docker installed, and we will guide you through the steps to start collecting and visualizing your laptop's logs and metrics. And be prepared to Choose Your Own Adventure!
We will dive into:

  • System metrics: Collect infrastructure metrics.
  • Application logs: Collect structured logs in a central location.
  • Uptime monitoring: Ping services and actively monitor their availability and response time."

Lunch


Mini-run Refactoring (Workshop)

Es un taller destinado a aprender técnicas para refactorizar en el día a día. Consistirá en dos sesiones de cuatro horas, con el objetivo de:

  • Crear conciencia de la necesidad de hacer código limpio y no sólo de que funcione
  • Transmitir la importancia de tener una base de test de calidad para poder refactorizar
  • Identificar los olores en el código
  • Dotar de técnicas para refactorizar con seguridad
Practicaremos:
  • Refactor semántico
  • Segregación de responsabilidades
  • TCR (test commit revert) para estresar pasos pequeños y siempre en verde

Break


Construye tu propio Virtual DOM

La propuesta de mi ponencia es desarrollar una pequeña librería que nos permita trabajar con un DOM virtual. Me gustaría hacer una sesión de Live coding, para mostrar paso a paso cómo se hace y detenerme en cada concepto, para desmitificar cómo funcionan librerías como React, Preact o Vue.

Closing


Diversity Matters / We welcome you

In the Software Crafters Barcelona movement brogrammers do not prevail, and year after year the organizational committee becomes more diverse.

We claim the Software Crafter movement as inclusive, because we know that diverse teams develop better software. That's why we want to make a clear invitation to collectives often underrepresented at tech events.

Women, migrants, racialized people, functional diversity folks, LGBTQIA+, etc: not only have we reserved tickets for you, but we also have a designated budget to facilitate your participation in the event. If you have any questions or suggestions, just drop us an email at SoftwareCraftersBcn [at] gmail.com or DM us on Twitter @bcnswcraft. We'll welcome you with open arms!

Sponsorship plans

We really appreciate this year sponsors for their support.

Platinum Sponsor

Gold Sponsors

Silver Sponsors

Supporters

Code of Conduct

All attendees, speakers, sponsors and volunteers at our conference are required to agree with the following code of conduct. Organizers will enforce this code throughout the event. We are expecting cooperation from all participants to help ensuring a safe environment for everybody.

Location

Hotels

There is an important number of hotels near our event. Furthermore, for a cheap solution airbnb can provide you with a relaxing place to sleep. And if you need free accomodation, we recommend you to check couchsurfing. It’s a welcoming platform and there are a lot of great hosts in Barcelona, we know it from our own experience.