Below you will find pages that utilize the taxonomy term “Agile & Craftsmanship”
No necesitáis consultoría sobre DDD: Caso Motor de Reservas
Cuando una empresa me contacta para hacer consultoría, monto un Skype para entender mejor las necesidades y la situación en la que se encuentra. Normalmente, hablo con un par de técnicos y/o el CTO que me cuentan sus dificultades. Tengo varias de éstas al mes. Algunas son empresas grandes (50 developers o más) y más pequeñas (menos de 10 developers). Como no me gano la vida haciendo consultoría, soy muy imparcial con lo que necesitan y sobretodo con lo que no necesitan. En sus dificultades, algunos patrones se repiten (miedos, prejuicios, presiones, modas, etc.). Me gustaría resumir cómo fue una de esas video conferencias por si podéis estar en la misma situación.
Integración Continua y Deployment Continuo
Os dejo por aquí, una de mis charlas impartida en la asignatura “Técnicas para el desarrollo de software en producción” dentro del Máster en Tecnologías Informáticas de la Universidad de La Rioja. Se grabó hace un año (26/11/2015), pero no lo había encontrado hasta hace unas semanas. Espero que sea útil.
#MayTheRigorBeWithYou: Presentamos las “Rigor Talks”
Amigos del rigor! Hola! Siguiendo la senda de los más grandes como CleanCoders.com o CodelyTV a.k.a. #cosaMuyFina, tengo el placer de presentaros las “Rigor Talks”. Videos cortos de entre 5 y 10 minutos, en Español, que iré publicando de forma periódica con aquellos trucos sobre desarrollo de software que veo que se repiten en las consultorías que hago por esos mundos. Los videos están hechos con todo el cariño y amor para que os resulten útiles en vuestro día a día.
A fecha de hoy, tengo 12 ya grabados que iré publicando en YouTube y en el blog de forma regular. Para muestra de los primeros videos que iremos publicando (Guard Clauses, Self-Encapsulation, Named Constructors, Test Class, Self-Shunt, Inmutabilidad y Mutant Testing). Os dejo una imagencilla ;)
Awesome two days helping @Lowpost_es team
I have recently visited Valencia in order to help my friends at Lowpost. It was great and I had a lot of fun! I would like to tell you a bit about how it was.
Who is Lowpost?
Lowpost is a cool start-up that are focused in Content Marketing. Lowpost connects companies that need interesting content with authors that can write about such topics. Authors bet for the open jobs and then they deliver the content to the final customer. Everything around such process is managed by the Lowpost platform.
As a start-up, they have grown quite fast, so their code. They started with Drupal, as many start-ups, and then they added a Silex application. You know that testing is difficult, however, doing unit testing for Drupal is a challenge.
What we did?
“Scrum, no eres tú, soy yo”: Charla en la #geekdeveloperday organizada por @geekhubs
El pasado 2 de Noviembre estuve en Madrid. GeeksHubs Academy organizaba el II Geek Developer Day y me invitaron a dar una charla sobre Scrum y la manera de mejorar la implementación en las empresas. Aquí os dejo el video y las slides.
Entrevista en @CodelyTV
Aquí os dejo la entrevista que me hizo Javier Ferrer, la cara visible de CodelyTV, en Julio de 2016. A parte del video, se curró la transcripción de las cosas más relevantes. Me gustaría agradecerle personalmente el buen trato y el interés.
Hola Carlos
“Domain-Driven Design in PHP” (@dddbook) is finished
Today, Keyvan, Christian and me are very happy to announce that “Domain-Driven Design in PHP” book is 100% complete. 380 pages and around 1400 readers so far.
Thanks
Thanks, thanks, thanks.
Thanks to everyone that has supported us in this project.
Thanks to Christian and Keyvan. We don’t need words to understand each other.
Thanks to our families and friends. Love is what you need to keep pushing.
Thanks to Edd Mann for helping at the beginning with the language implementation details ;).
Thanks to Matthias Noback for his suggestions and his foreword.
Thanks to Vaughn Vernon for being pragmatic and inspiring.
Thanks to Ricard Clau, Albert Casademont, Victor Guardiola and Jordi Abad for your contributions.
Thanks to Natalye Childress for non stopping asking about uppercase or lowercase. With your work, the book can be read.
Thanks to everyone that committed fixes, you are great: Jonathan Wondrusch, César Rodríguez, Yannick Voyer, Oriol González, Henry Snoek, Tom Jowitt, Sascha Schimke, Sven Herrmann, Daniel Abad, Luis Rovirosa, Luis Cordova, Raúl Ramos, Juan Maturana, Nil Portugués, Nikolay Zujev, Fernando Pradas, Raúl Araya, Neal Brooks, Hubert Béague, Aleksander Rekść, Sebastian Machuca, Nicolas Oelgart, and Marc Aube.
Hi @xing_bcn and @xing_de!
After leaving Atrápalo, it’s time to jump to a new challenge. As I explained, I need to get out of my confort zone and check other things that will make me learn new things. Some of you already know, but for the rest, the chosen company is Xing. So, I’m more than happy to announce that I’m the next B2B Head of Engineering at @xing. I’d like to share some thoughts about the reasons that took me here.
Adiós Atrápalo
Después de más de 2 años trabajando en Atrápalo, ha llegado el momento de partir a nuevos horizontes. Los que ya me conocéis un poco sabéis cómo soy: llegar, simplificar y marchar. Mis objetivos se han cumplido y es hora de ayudar a otros equipos. Después de estos dos años, Atrápalo es una compañía respetada técnicamente por la comunidad de Barcelona. En 2015, consiguió se le premiara por esa evolución.
Cada integrante del equipo técnico ha hecho un trabajo increíble adoptando las nuevas dinámicas y prácticas de trabajo, tanto en desarrollo, UX y Sistemas. Casi siempre, un equipo grande es una desventaja, normalmente es lento, pero me ha sorprendido cómo un equipo de casi 100 personas, aplicando Scrum, eXtreme Programming y otras buenas prácticas ha conseguido reducir deuda técnica muy rápidamente. Lo que me lleva a la frase que repito entre amiguetes: “There is no legacy code, just legacy teams”.
RESTGames – More than katas
Today, Christian (@theUniC) and I (@buenosvinos) would like to introduce you “REST Games“: Games based in REST Services for learning and practicing coding.
Its goal is to provide some coding challenges that go beyond katas. You will have to implement a small JSON REST API that will play a well known multiplayer game, such as battleship, connect-4, tic-tac-toe, etc. The best part comes when two mates develop the same JSON REST API and you can use our referees programs two make them play one against the other. Who will win?
Guía para el Desarrollo Profesional PHP (edición 2014)
Rascando por Youtube, encontré este vídeo de 2014, de una presentación que hice en LaSalle inspirada por otra que hice en Castellón en 2011. La idea es hacer un overview del ecosistema PHP y puntos importantes a la hora de montar un ciclo de desarrollo basado en esta tecnología. Que la disfrutéis.
Deploying Symfony (and PHP) apps with Ansistrano
For a long time, Capifony was, without any doubt, the facto option for deploying Symfony2 applications. Capifony is a ruby gem based in Capistrano v2, an open source tool for running scripts on multiple servers with a deployment flow built-in. It’s primary use is for easily deploying applications. While it was built specifically for deploying Rails apps, it’s pretty simple to customize it to deploy other types of applications. At that time, alternatives were shell scripting or Fabric. Now there’s a better one, Ansistrano.
Economía del Desarrollo de Software – PHP Barcelona – Marzo 2015
Aquí os dejo las slides y el video de mi charla sobre “Economía del Desarrollo de Software” impartida en la Barcelona PHP Monthly Talk de Marzo y en la SmashTech “I’m a Developer”.
Atrápalo Tech 2014 figures
It’s almost a year ago since I started working at Atrápalo. The team has done an amazing job learning and applying all the changes in our software development process including the new architecture, testing practices, Scrum changes, branching strategy, releasing process, bugfixing, and so much more. Changing the way ourselves work is probably the most difficult part from a “status quo” change.
I will like to thank everyone in the team that has done the effort to make it possible. I know it’s not easy and sometimes not fun at first. There is still so much to do and 2015 is going to be even so much funnier. Following, there are just some figures about 2014. Thanks to the Atrapalo Team.
“Implementing Domain-Driven Design” Workshop in Barcelona
Since 2012 and after two years reading and working with Domain-Driven Design approaches, in 2014, Christian (@theUniC) and me went to Berlin to get trained by Vaughn Vernon, author of “Implementing Domain-Driven Design” book. The training was fantastic, all the concepts that were going around on their minds up to that moment, got stuck into the ground in the 3 days IDDD workshop. However, they were the only two PHP developers there in a room full of Java and .NET. That was quite funny.
Domain-Driven Design: Code Structure and Application Services Webcast at @AtrapaloEng (Spanish)
Siguiendo con la formación de DDD en Atrápalo, os dejo la sesión de formación sobre Code Structure and Application Services. Que la disfrutéis.
Domain-Driven Design: Domain Events and BC Integration Webcast at @AtrapaloEng (Spanish)
Siguiendo con la formación de DDD en Atrápalo, os dejo la sesión de formación sobre Domain Events y BC Integration. Que la disfrutéis.
Domain-Driven Design: Bounded Context Integration (Spanish)
Os dejo el video de la charla que impartí el pasado 25 de Octubre de 2014 en la Barcelona Software Craftsmanship.
Domain-Driven Design: Entities and Value Objects Webcast at @AtrapaloEng (Spanish)
Siguiendo con las formaciones de DDD de Atrápalo, os dejo el video sobre Entities y Value Objects.
Domain-Driven Design: Aggregates Webcast at @AtrapaloEng (Spanish)
En Atrápalo, estamos haciendo formación semanal sobre DDD. Estoy grabando todos los screencast y los iré publicando semana a semana. El primero sobre Strategical no lo pudimos grabar pero gran parte del contenido lo podéis encontrar en la sesión que grabé en la Monthly Talk en Octubre de 2014. A continuación, os dejo la sesión de formación sobre Aggregates, al final hay discusión sobre SOLID, especialmente SRP. Que la disfrutéis.
Tactical Domain-Driven Design Screencast at PHPBarcelona (Spanish)
Os dejo el video sobre DDD Tactical Design que hice en la Monthly Talk de PHPBarcelona. Nos dio tiempo a charlar un poco de estrategia, ver los Value Objects, Entities y algo de Repositories. La charla está basada en el libro que Christian, Keyvan y yo estamos escribiendo en leanpub: “Domain-Driven Design with PHP by Examples”. En los últimos 30 minutos hablo sobre cómo estamos gestionando la Integración Continua en Atrápalo.
Dogmáticos a favor vs. radicales en contra
Las herramientas y las metodologías no fallan, son las personas al aplicarlas. Una llave inglesa no puede fallar, o es la herramienta adecuada para tu problema o no lo es. Si eliges una llave inglesa para un trabajo que no es el suyo, el error es tuyo. No existe el legacy code, sólo los legacy teams, o las legacy companies que generan el legacy code.
En los proyectos Web veo dos tipos de proyectos en función del estado en el que se encuentran: los que especulan para ver si funcionan (start-ups, etc.) y los que han conseguido consolidarse y tienen una proyección a largo plazo. La gran mayoría son unos terceros, que son los que no tiran y se han de cerrar.
En los que especulan, la gran mayoría de veces, tiene todo el sentido el “don’t worry be crappy” si te ayuda a ir más rápido para poder mostrar que el proyecto funciona, ganas usuarios, emites algunas facturas, puedes conseguir financiación y tirar adelante. Si todo va bien, curras mucho, consigues funding y después de algún tiempo, el proyecto se consolidará. ¡Felicidades! Ahora bien, todo lo rápido que has ido al principio tocará hacerlo bien hecho para reducir los costes de mantenimiento (lanzamiento de nuevas funcionalidad, bugs, etc.) ya que tu proyecto ya no especula sino que ha venido para quedarse. Seguro que habéis visto las típicas gráficas de la deuda técnica.
En los proyectos consolidados, cualquier herramienta que acelere la velocidad de desarrollo reduciendo costes de mantenimiento es un plus. Las metodologías de desarrollo ayudan este objetivo. Cada uno es libre de usarlas o no.
Ellas son las verdades crafts(wo)men
“Hexagonal Architecture with PHP” was published in phparch|magazine
This week, the php|architect magazine has published an article of mine about “Hexagonal Architecture with PHP”. Here’s the introduction:
“With the rise of DDD (domain-driven development), architectures promoting domain-centric designs are becoming more popular. This is the case with Hexagonal Architecture, also known as Ports and Adapters, that seems to have been rediscovered recently by PHP developers. Invented in 2005 by Alistair Cockburn, one of the Agile Manifesto authors, the Hexagonal Architecture allows an application to be equally driven by users, programs, automated tests, or batch scripts, while being developed and tested in isolation from its eventual run-time devices and databases. This results in infrastructure-agnostic web applications that are easier to test, write, and maintain. Let’s see how to apply it using real PHP examples.”
I would like to share with you some thought, the cover and the code repository.
Legacy Code and Teams Series: Training Sessions and Technical Committee
(Next: Legacy Code and Teams Series: Composer)
When talking with some friends about how we are improving Atrápalo legacy code and development process, they asked for creating a presentation and give a talk about the steps we are following, hows, whys, and so on. It sound to me interesting so I would like to help sharing my experiences, not just the Atrápalo ones because when working at Emagister we did something quite similar with Christian, Eber, Dario, Lluís, Jordi, Jose Luís and the rest of the team with great results.
Before jumping into a talk, I would like to start a serie of posts about my way dealing with legacy projects. I’m really interested in listening from you and your comments in order to enrich the final result. So, any suggestion or experience is really welcomed.
Detalles sobre Scrum: ¿Cómo atacar el sprint?
Os presento un pequeño ejercicio que llevo utilizando un mes y que me está dando buenos resultados a la hora de ilustrar la importancia de cómo atacar el sprint y la obsesión por entregar valor lo antes posible.
“Es lunes, perteneces a un equipo de Scrum de 6 personas. Habéis acabado el planning meeting y habéis enviado un mail con el commitment. Montáis la ScrumBoard y os queda de la siguiente manera”.
Smash Tech: PHP 2014
El pasado día 28 de Mayo, participé en Smash Tech como ponente impartiendo una master class de 2 horas sobre el ecosistema PHP y en lo que se debe prestar atención para el 2015. Con los 50 asistentes que pagaron la entrada, repasamos desde Metodologías de desarrollo: Agile, Scrum y Extreme Programming. Sobre ésta última pivotó la gran mayoría de la presentación, viendo cómo se resuelven las dinámicas de TDD, Integración Continua, Coding Standards, etc.
Fixing commit TYPOs in git history with filter-branch
Last week, we tried at Atrapalo to migrate from our own git repository to Github. That should be easy, is just a matter of three commands already explained in Github’s guide. The main problem appears when you have some sort of issue with your commits, so messages like “invalid author email” raises when trying to push your changes.
Thanks Ron Jeffries – “Extreme Programming Installed” Book Review
I though that it was difficult to read a better book about XP than “Extreme Programming Explained” by Kent Beck. Then, “Extreme Programming Installed” by Ron Jeffries came to me. Last week, I finished it. Ron goes into the detail about the how-to in each XP detail. So, if you want to start with XP, read the explain one, but if you need to go deeper, the installed one is your book.
Cómo conseguir que tu equipo técnico lea: Club de lectura
Un software craftsman lee. Lee mucho.
A título individual, leer desarrolla nuestras habilidades técnicas, afianza lo que sabemos con ejemplos y experiencias de los autores, matiza conceptos complejos y abre nuevos horizontes hacia nuevas disciplinas. A nivel de equipo, sube el listón global, ayuda a ejecutar el roadmap técnico del departamento y mejora el entusiasmo general incitando la innovación.
Desarrollar el hábito de la lectura técnica, no es fácil. Es lectura densa, compleja y en inglés. Con este post, me gustaría presentar una dinámica genial para introducir la lectura en tu equipo técnico, los clubs de lectura. Fácil de montar y con muy buenos resultados. Ya me lo diréis.
Make your product owner or CEO watch this video
Por dónde empiezo: 7 ideas para ponerme al día
Estos días he estado haciendo entrevistas a muchos perfiles. Por si no lo sabéis, en Atrapalo, tenemos unas 15 posiciones abiertas para incorporar desarrolladores PHP de todos los perfiles, juniors y seniors con muchas ganas de pasárselo bien, aprender y aportar a un equipo que encara una nueva etapa excitante. Durante estas entrevistas, me he encontrado con desarrolladores cuyas circunstancias les han llevado a trabajar sólo en start-ups (“don’t worry be crappy”) o pequeñas empresas (“long live wordpress, drupal y joomla”), este post, con todo el cariño, es para ellos y su futuro.
Hola Atrápalo
La semana pasada os anunciaba mi salida de Emagister. Hoy, 20 de Febrero, es mi primer día en Atrápalo como CTO. Me han atrapado. Estoy muy ilusionado por trabajar en una empresa tan conocida, con una misión y visión tan clara (“ser líderes en el sector de ocio y turismo”), con un posicionamiento y marca reconocidos, así como más de 10 años de historia y presencia en 10 países.
Desde su fundación en el 2000, no ha parado de crecer y convertirse en un referente del ecommerce copando el “top of mind” de los usuarios interesados en ofertas sobre vuelos, restaurantes, viajes, actividades, cruceros, etc.
Unit Testing y TDD no son lo mismo
Resumiendo y sin entrar en volver a explicar los conceptos de TDD. Hacer Unit Testing es escribir Unit Tests, hacer TDD es seguir la metodología (3 reglas, ciclos cortos, diseño emergente, etc.)
Adiós Emagister – 8 reflexiones sobre gestión de equipos
Hoy, 14 de Febrero, es mi último día en Emagister. Después de casi 4 años ha llegado el momento de decir adiós y marchar hacia nuevas aventuras y retos profesionales. Con este post, quiero compartir algunos consejos e ideas basados en mi experiencia en la gestión del equipo técnico que espero que os resulten útiles.
Extreme Programming Explained: Embrace Change, 2nd Edition (The XP Series) Review
Happy new year to everyone! Today it’s January, 1st and I have finished reading “Extreme Programming Explained: Embrace Change, 2nd Edition”. If you love software development and agile practices, this book was the rules changer in the agile methodologies and software development in general. As I have done with other book reviews, here are my remarks. Buy it, seriously. You will fill the gaps about agile practices, so if you are doing Xp, Scrum, Kanban, Lean, etc. everything will gear together.
Test Doubles
Last week, another awesome cleancoders episode was published. It comes in two parts. I really recommend to buy it. Let’s review the most important concept taught in the first one: Test Doubles.
Code Style: If and return
When contributing to opensource code at GitHub, I found some mistakes, or improvements when writing code, that are repetead over and over again for newbies and not so newbies developers. I’ll try to write some posts about this, but for not, let’s start with some “if” and “return” statements cases.
Grábate haciendo katas y repasa la jugada
Son muchas las disciplinas que para mejorar utilizan el sistema de grabarse en video mientras practican y después revisan las imágenes para corregir los errores de técnica. Entre ellas, las prácticas deportivas, expresión en público como el derecho, la política, los debates, etc. Hace dos semana se me ocurrió hacer lo mismo con mis katas.
Courage on TDD (“Test Driven Development: By Example” – Part II)
La segunda parte del prólogo de “Test Driven Development: By Example” es casi aún mejor (podéis ver la primera parte aquí). 34$ bien invertidos.
Los 331€ mejor invertidos – CleanCoders Videos
Hoy, después de un fin de semana de maratón de los últimos 3 capítulos sobre TDD de CleanCoders, de Robert C. Martin (@unclebobmartin), he acabado de verme todos los 21 capítulos. Empecé hace un mes y medio, he intentado ver cada día uno antes de salir del trabajo y también los fines de semana.
Bibliografía y recursos para meterse en el movimiento SoftwareCraftsmanship
Durante este último fin de semana, se ha organizado la Barcelona Software Craftsmanship (28 y 29 de Septiembre). Ha estado muy bien y recomiendo que estéis atentos a los eventos que va a ir organizado esta asociación. Les deseo los mejores éxitos.
Es posible que todavía no os suene el movimiento o no hayáis tenido tiempo de profundizar, así que os intento arrojar un poco de luz y pasar material para que os podáis poner rápidamente al día. Por favor, completar las listas con vuestros comentarios (he intentado añadir lo básico pero me dejo mucho material).
¿Cuál es el verdadero objetivo de TDD?
A todos aquellos que habéis pensado: “¡Demostrar que mi código funciona!”, lo siento, estáis equivocados. Aunque está asociado al 2º valor principal del desarrollo de software (según Robert C. Martin).
Kata: Prime Factors
Context
Although quite short, this kata is fascinating in the way it shows how “if” statements become “while” statements as the number of test cases increase. It’s also a wonderful example of how algorithms sometimes become simpler as they become more general.
Level
Easy / 40 minutes
Robert C. Martin Clean Code Collection Review (Part II)
Hace una semana, publicaba un pequeño resumen y mis apuntes sobre el libro “Clean Coder” de Robert C. Martin (ver parte I). Hoy hago lo propio con el resumen del libro de la misma colección, “Clean Code”.
Os dejo cosas que subrayé y anoté del libro que me parecieron interesantes, espero que lo disfrutéis.
Robert C. Martin Clean Code Collection Review (Part I)
Me gustaría compartir la review de otro libro que ha caído esta semana. En realidad, son es una colección de 2 libros de Robert C. Martin que te puedes comprar en formato Kindle por 15,99 € (dos libros de Robert C. Martin por ese precio ya vale la pena), el pack lo podéis encontrar en amazon. En este post (de una serie de dos) os quiero hablar de “The Clean Coder”.
Tech Team Engagement
Me gustaría compartir con vosotros una de mis antiguas presentaciones sobre motivación de equipos técnicos que pude dar en la PHP Barcelona Conference hace algunos años. Me gusta ver que muchos conceptos todavía son vigentes. Si tenéis alguna duda sobre ella no dudéis en enviarme un tweet.
Introducción a Scrum y Agile
Hoy, me gustaría rescatar una presentación sobre Scrum y Agile que hice en la BetaBeers Barcelona. Una hora de Scrum en vena con dinámicas prácticas, overview de toda la metodología, ejemplos, etc. ¡Espero que la disfrutéis!