Date

October 1-2, 2016

Location

Barcelona

About the event / A place to share knowledge

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

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

It does not matter what your level of knowledge is or which is your favorite programming language. We encourage you to participate if:

- Feel passion for the software.
- want to be involved or are involved in the Software Craftsmanship movement.
- want to share your knowledge, experience, or skills.
- have the spirit to learn and improve by helping or sharing with others.

In addition to technical contents, it will be fun, there will be beer, and we'll have stimulating conversations until who knows what hours. Software Craftsmanship Barcelona is an opportunity to meet new friends, face new challenges, to learn and to improve your skills. Join us!

Platinum sponsors

Silver Sponsors

Barcelona information / useful resources

Transport

The Annual Software Craftsmanship Conference has available a discount for long-medium distance trains (RENFE), if you are interested please, send us an email and we will reply you with the discount.

Hotels

It exists an important number of hotels near our event. Furthemore, for a cheap solution airbnb can provide you a relaxing place to sleep

Events

The Software Craftsmanship Conference organizes a set of social events (tour guides, dinners) for the participants.

Schedule

Machine Learning a lo berserker

Os propongo una charla donde repasaremos gran parte de los algoritmos de Machine Learning. Conocer qué tipos hay, para qué demonios sirven, qué dificultad tienen, cómo los podemos usar, etc.
La idea es salir de la charla sabiendo qué es para qué sirven: Linear Regression, SVM, Random Forest y los demás amiguitos, poderlos explicar a vuestros colegas y usarlos para frikear en vuestros próximos experimentos.
Si da tiempo, veremos algo de código: en R, en Java o en scala…
A lo berserker no es sólo aprender a lo bruto: sino que NO vamos a detenernos en los detalles matemáticos, NI vamos a profundizar en las fórmulas que sustentan cada algoritmo; se trata de entender la lógica y el sentido, y ganar la intuición para aplicarlos.

Workshop: Understanding the Life of Microservices

Microservices are becoming more and more popular and, as with every other new trend, often implemented without enough experience. Idea behind them is easy to explain. Brake monolithic application into smaller independent services. That's it. That is what many think microservices are about. However, implementation is much harder to master. There are many things to consider when embarking down this path. How do we organize microservices? Which technologies to use and how? Should they be mutable or not? How to test them? How to deploy them? How to create scalable and fault tolerant systems? Self-healing, zero-downtime and logging? How should the teams be organized? Today's successful implementations of microservices require all those and many other questions to be answered. It's not only about splitting things into smaller pieces. The whole development ecosystem needs to be changed and we need to take a hard look at the microservices development lifecycle.
This workshop will go through the whole **microservices development lifecycle**. We'll start from the very beginning. We'll define and design architecture. From there on we'll move from requirements, technological choices and development environment setup, through coding and testing all the way until the final deployment to production. We won't stop there. Once our new services are up and running we'll see how to maintain them, scale them depending on resource utilization and response time, recuperate them in case of failures and create central monitoring and notifications system. We'll try to balance the need for creative manual work and the need to automate as much of the process as possible.
This will be a journey through all the aspects of the lives of microservices and everything that surrounds them. We'll see how microservices fit into continuous deployment and immutable containers concepts and why the best results are obtained when those three are combined into one unique framework.
During the workshop we'll explore tools like Docker, Docker Swarm, Docker Compose, Ansible, Consul, etcd, confd, Registrator, nginx, HAProxy, ElasticSearch, LogStash, Kibana, and so on.

ELM 101

This is a hands-on session to start our journey with Elm, the functional language developed to create web user interfaces. We´ll see the basics of the language, the Elm architecture (how we can create programs composing components) and we'll practise doing a funny exercise.

Coding Dojo: Una aproximación a Clean Architecture

Parece que en los últimos tiempos se oye mucho hablar sobre Clean Architecture. Desde algo más quizás de Hexagonal Architecture, Onion Architecture… al final comparten muchas ideas: centrarse en el dominio del problema, separación de responsabilidades en diferentes capas, independencia de sistemas externos y frameworks, fácil testeabilidad…
Pues bien, en este dojo trabajaremos sobre un ejemplo de proyecto greenfield, a modo de PreparedKata, en el que mostraremos la aproximación a Clean Architecture que estamos implementando en este momento con los Coding Stones.
Utilizaremos ruby como lenguaje de programación, rspec será nuestra herramienta de testing. No usaremos ningún framework, así que cualquier podrá seguir el dojo sin problemas.

Experiencias con Interaction Driven Design

Hace unos meses decidimos juntarnos y hacer un equipo de desarrollo a la XP, y así nacimos como Coding Stones.
En nuestro último proyecto, pudímos aplicar todo nuestro kung-fu sobre DDD y vimos que nos encajaba muy bien la separación de Actions como Application Services que propone Sandro Mancuso en sus charlas sobre IDD o Crafted Design. Y nos gustaría compartir las experiencias sobre lo que hemos aprendido con el resto de la comunidad.

Reactjs desde las trincheras, un año después

Después de la charla que ya di el año pasado sobre la intención de Schibsted de implantar ReactJS en todos sus productos y como pensábamos. Voy a tratar de explicar todas las cosas buenas y malas que hemos hecho en la transición. Creo que es una experiencia muy valiosa para otras plataformas que tengan en mente un cambio similar.

OOP & Connascence

Nuestro software debería tener la capacidad de poder ser modificado con un coste bajo. Para ello utilizamos algunas buenas prácticas de diseño o code smells que nos guíen (SOLID, Yagni, Demeter Law, etc). Pero a veces, estos elementos suelen ser algo subjetivos que a veces derivan en discusiones poco productivas para el fin. Los tipos de Connascence nos ofrece otra herramienta para evaluar nuestro diseño en otros términos, basado en 2 conceptos clave "Coupling & Cohesion" de los que Yourdon y Constantine ya nos hablaban en el año 79 en su famoso libro Structured Design.
La charla hablará de los tipos de connascence (o grado de acoplamiento), como podemos ver el impacto que tiene en nuestro diseño y algunas maneras de resolverlo. El paradigma es OOP por lo que se hará una muy breve introducción sólo a Encapsulation, Informations Hiding y Messaging.
Aunque he indicado que la charla será en español porque es mi lenguaje nativo, intentaré prepararla en inglés bajo la recomendación del documento para el call for papers.

Software Architecture patterns and tactics

The talk would describe the relationship between software architecture, qualitty attributes, talk some about architectural patterns and tactics. It is basically an introduction to some sw architecture topics (and up-front-design standpoint rather than emergent design) and while doing so focus on the fact that as engineers we have a responsibility to understand the pros but also the cons of our decisions.

IA en videojuegos, cómo programar un robot para dominar el mundo

La inteligencia artificial está por todas partes a nuestro alrededor. Hasta los ascensores tienen capacidad de decisión, eso sin pararnos a pensar en nuestro móvil o nuestro GPS. Pero el sistema que mejor expone lo que es la IA son los videojuegos, en los que los NPCs muestran comportamientos inquietantemente humanos.
Pero no os dejéis engañar, ¡todo es una ilusión! Diseccionemos juntos el cerebro positrónico, conozcamos los secretos ocultos en su núcleo, y acabemos con ese turbio misticismo que rodea a las "máquinas inteligentes".


Designing in the small: principles and practices

We make decisions every time we write a line of code. Often those decisions are not even conscious although they shape the code we have to maintain in the future. In this session we'll talk about the Less Surprise Principle among other principles, techniques and trade-offs we should consider when writing code. Not only for maintainability reasons but also as a mean to support our ideas when pairing or mobing with the team. This is a collaborative session where participants we'll discuss and propose more principles and techniques to enrich the group.

Patterns for Crafting Docker Containers

Es muy fácil comenzar a crear nuestros primeros containers de Docker en local, y facilitarnos la vida durante el desarrollo. Pero, ¿y si queremos compartir nuestros containers con nuestros compañeros de equipo o con otros equipos? ¿E introducirlos dentro del flujo de integración continua? ¿Cómo escalamos Docker dentro de nuestra organización?
En esta charla explicaremos las lecciones aprendidas durante nuestra aventura intentando conseguir utilizar containers en todas las fases del desarrollo del producto: desde la máquina del programador hasta producción. Y veremos qué buenas prácticas podemos adoptar para que la creación, distribución, y el despliegue de containers de Docker no sea una utopía.

Embracing flow for maximum productivity

Flow is what we experience when we are in an all-night coding session: we make so much progress and we have so much fun coding that we don't want to stop. It is the feeling we get when we are at our maximum engagement with the task we're doing. When we are in a flow state, we don't feel time passing by, we don't get stuck because we're able to solve all the problems that we encounter by effortlessly applying our skills, and we enjoy what we're doing.
Luckily, the job of a programmer is full of oportunities for experiencing flow everyday. In this talk we'll see how flow works and what we can do in order to get to that state easily. The purpose: being more productive and having fun at work.

Desarrollar un chat con Scala, Akka y WebSockets desde 0. ¡¿Qué puede salir mal?!

Estos últimos meses hemos desarrollado un nuevo sistema de chat para la aplicación de Letgo. En esta charla os contaremos toda la experiencia vivida al respecto, tanto a nivel del proceso seguido, como de nuestro proceso de aprendizaje sobre las tecnologías usadas y los errores que hemos cometido. Por lo tanto no es una charla puramente técnica (hay material mucho mejor para aprender Akka y Scala) pero sí que haremos una breve introducción al paradigma de actores.

Viniendo de desarrollar webs en PHP, muy concienciados por temas como SOLID, Arquitectura Hexagonal, DDD, y CQRS; nos encontramos con un paradigma donde nos ha costado encajar según qué planteamientos. Con lo cuál, os contaremos justamente eso:
* Estrategia seguida para salir del monolito e ir al microservicio rico
* Evolución del proyecto a lo largo de estos meses
* Por qué decidimos apostar por el stack tecnológico escogido a pesar del cambio que implica
* Paradigma de actores de Akka en el chat de Letgo.
* Cómo hemos intentado llevar el CQRS a un protocolo de comunicación por WebSockets
* Cómo hemos usado Akka Streams para el proceso de migración inicial de datos
* Qué cosas nos han sorprendido del cambio de ecosistema (tanto para bien como para mal)
* Cómo hemos conseguido mantener retrocompatibilidad con las versiones anteriores de la app que apuntan al sistema de chat anterior
* …

Esta charla proveerá de una visión más amplia de lo que se expuso en la Software Craftsmanship de Pamplona ( http://www.slideshare.net/JavierCane/leaving-the-monolith-thanks-to-eventsourcing-scpna-63267815 ). Donde nos centramos únicamente a analizamor cómo conseguimos mantener la retrocompatibilidad entre los dos sistemas de chat gracias a eventos de dominio, SNS, y SQS.

La charla la daríamos a medias entre los dos, @SergiGP y @JavierCane :)

Databases — the choice is yours

In hardly any other area we've had as much change and improvement as in the field of databases. Just a few years ago everyone had "their" database that was used for each project. Today you are confronted with a variety of approaches and implementations.

We start off with a brief look at the theoretical background of distributed systems and databases in particular. On the basis of this, we take a look at traditional relational databases such as PostgreSQL and MySQL. Additionally, we dive into newer NoSQL systems like MongoDB, Redis, Cassandra, or Elasticsearch.

After that, we discuss possible scenarios as well as the advantages and disadvantages of several databases:
* Why SQL is in fashion (again).
* Why MongoDB's document structure fits object-oriented programming so well.
* How you can capture visitor hits with Redis efficiently.
* Why Cassandra is so scalable and fail-safe.
* How full-text search works with Elasticsearch.

The right choice of database(s) hasn't become easier through the wide range of possibilities, but all the more interesting!

Event Storming for Fun and Profit

- Have you struggled to understand the strategic business requirements on your new project?
Do you wonder where to start in developing your greenfield features? Have you wondered how you can put Domain-Driven Design into practice on a project? Attend this workshop and find out how you can accomplish these efforts and more.

Practical Metrics and Visualisation for your teams: Kanban, D3 and AngularJS

In this session we will show how we are applying Kanban in eDreams ODIGEO to help teams improve their process. We will explain the basic objective metrics used (Throughput, Lead Time, Flow Efficiency, ...) and how we collect and share them, but also we will show the visualisation techniques we use for subjective metrics, and how we built them using some popular JavaScript libraries.

Railways Programming: All aboard!!!

All computations may fail. Real World (TM) is a pain and crawls with invalid inputs, timeouts, runtime errors, NULLable columns in the DB, etc... Instead of letting our code crash we add all sorts of protections, conditionals, try/catch blocks or generic error messages that make our systems less usable and our code less readable. It's 2016, pleeeeease! Let's put an end to it. Let's write code that handles errors without messing with our readability.

EDD - Experimenting Driven Design

En la charla presentamos el diseño basado en experimentos o en hipótesis, como un paso adelante tras conocer y trabajar de forma normalizada con TDD y BDD.
En esta charla se muestra como utilizar un sistema de A/B testing para realizar un desarrollo de producto de software basado en experimentos y alguno de las librerías que permiten realizarlo.

En la charla se presentará Vanity (https://github.com/assaf/vanity) un plugin para EDD de Rails que permite la especificación de los experimentos y la creación de los escenarios comparativos de resulta

Testing on the Toilet

En esta charla hablaremos de Testing on the Toilet, una iniciativa de Google para inspirar a los desarrolladores a escribir buenos tests y código testable. Analizaremos las técnicas más relevantes de entre las propuestas en sus episodios para mejorar nuestras prácticas de testing y que al terminar queráis imprimirlas y compartirlas en el baño de vuestras oficinas.t libraries.

Automating CSS Regression Testing

En el Software Craftsmanship uno de los pilares es el Testing, en un proyecto web el CSS es una pieza importante para tener un buen producto.
En esta charla veremos cómo implementar herramientas de testing en el CSS de nuestro proyecto y evitar así la temida "Visual Regression"

Schedule 2015 / Remember our last conference

Location

Barcelona

Netmind
Almogàvers 123,
08018, Barcelona

EMAIL