Reflections on Software Crafters Barcelona 2024
The content here is under the Attribution 4.0 International (CC BY 4.0) license
Attending Software Crafters Barcelona felt like the perfect opportunity to explore the challenges and innovations shaping software development today. With sessions covering everything from emotional intelligence in teams to technical strategies for refactoring at scale, the event offered a mix of sessions, from technical discussions on metrics and refactoring in production to soft skills like emotional intelligence and cultural change. Each session approached the craft of software development from a unique angle. The conference had more sessions than one could attend, chosing what to pick was the most challenging part.
In this post, I’ll share my thoughts on each session I attended, including insights that resonated with me and ideas I’m excited to take back to my own projects and teams. on The right hand side there is the session titles, you can skip to the one you are most interested in if that is the case.
Sessions
The one about Titanic and Metrics, or why Jack fit in the log
The opening talk centered on one of the often-overlooked aspects of observability: the cardinality of metrics. In the world of monitoring, cardinality refers to the unique values a metric can have—like the number of distinct labels in a dataset. Managing cardinality effectively is key to maintaining both the performance and affordability of monitoring systems, especially as they scale. Almudena Vivanco emphasized practical strategies for managing cardinality through careful metric labeling and the selection of tools designed to keep monitoring systems efficient.
This session was a great reminder of how small, technical choices, like labeling metrics correctly, can make a big difference in the cost and scale of observability. One of the takeaways from this talk was how costly unchecked cardinality can be, to keep that in check is the work of a performance engineer. High cardinality often leads to excessive data storage and processing requirements, driving up both resource usage and expenses. This session underscored the importance of paying attention to metric design early on and keeping cardinality in check to prevent those costs from spiking.
Observability resources resources
Parallel changes in production for 1,700 stores
In this session, Felipe Álvarez Alejandro Capdevila and Alejandro Capdevila Tárrega took us through the complex process of refactoring an application’s core functionality while maintaining data integrity and avoiding downtime — a challenge faced when managing a system for a massive chain like Mercadona supermarkets, with over 1,700 locations. The approach involved implementing parallel changes to ensure continuity and reliability, essentially creating a seamless experience for end-users while substantial adjustments occurred under the hood. The speakers shared strategies for parallel deployments, which included gradual rollouts, continuous testing, and close monitoring to ensure that no service interruptions occurred.
This talk offered a valuable perspective on the intricacies of refactoring at scale and emphasized the need for planning and strategic execution when dealing with mission-critical systems, communication with business representatives is key during the process.
Parallel changes resources
Refactoring Your Company: Practical Strategies for Cultural Change
In this session, Emmanuel and Fer tackled one of the biggest challenges in tech: leading cultural and organizational change. They explored the complexities of reshaping a company’s beliefs, values, and behaviors and offered practical frameworks to guide this process. Emphasizing the importance of empathy and open communication, they made it clear that cultural change can’t be imposed; it needs to be managed strategically.
A major focus was on creating safe environments where mistakes are part of the learning process. They shared insights on fostering a culture that supports experimentation while managing expectations to minimize friction. They also introduced practical tools, like the Net Promoter Score (NPS), to measure the impact of cultural changes and prioritize the most critical areas for transformation.
They discussed how frameworks like Agile and DevOps can sometimes accelerate change—or even create hurdles. They provided guidance on when to pivot or pause a cultural shift if it doesn’t deliver the desired results. During the presentaton they presented a parallel comparison between the smells in the code (from a technical perspective) to what are smells in the organization, which they called Corp smells., the following table depicts the list of corp smells and the derivative from the code smells made by them:
Code smells | Corp smells |
---|---|
Refused Bequest - A subclass inherits features it doesn’t need, suggesting poor hierarchy design | Resistance to change, Poorly analyzed team splitting, Poor assignment of people to teams without considering their capabilities |
God Class / Large Class - A class that takes on too many responsibilities | Overload of work on a person or team, Concentration of power, Lack of delegation |
Duplicated Code - Identical or very similar code fragments in different parts of the system | Duplication of efforts, Unaligned parallel initiatives, Decentralized leadership without coordination |
Shotgun Surgery - A small change in one module requires modifications in many others | Dependence on external approval, Excessive interdepartmental coordination, Lack of autonomy |
Feature Envy - A method depends too much on other classes to perform its task. Data from another class is consulted frequently. | Silos, Poor distribution of responsibilities, Interdependence between teams/departments |
Divergent Change - A class has to change for several unrelated reasons | Conflicting objectives, poorly defined roles, involvement of multiple departments |
Dead Code | Obsolete processes |
Speculative Generality | Overplanning or unnecessary anticipation |
Inconsistent Naming | Inconsistency in communication |
Long Parameter List | Too many people in decision making |
Primitive Obsession | Lack of sophisticated strategy |
Lazy Class | Redundant departments |
Large Method | Long and bureaucratic processes |
Switch Statements | Reactive management |
Message Chains | Excessive hierarchy |
Inappropriate Intimacy | Over-reliance on external teams |
Resources for organizational changes
Kitchen Nightmares - Understanding Message Brokers
This session offered a beginner-friendly introduction to event brokers and their role in system communication. To make the topic engaging and relatable, the speaker presented it through a fun analogy: Mr. Doe, a successful chef, managing communication as his restaurant grows in size and complexity. This story illustrated how event brokers work compared to other communication methods, highlighting the challenges of scaling and the solutions that event brokers provide.
The speaker broke down the pros and cons of using event brokers, especially in systems that require reliable and scalable communication across distributed components. This was particularly helpful in understanding when to choose an event broker over simpler communication models, like direct API calls or synchronous messaging. Topics covered:
- Point-to-point
- Publish-subscriber
- Dead letter queue(or channel)
- Message bus/Broker
Resources for asynchronous communication
- Moisés Rodríguez
- RabbitMQ
- SQS
- Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
Resources
The Importance of Emotional Intelligence in Software Development
In this session, David Llerena and Victoria Sosa explored how emotional intelligence (EI) can significantly enhance the performance and cohesion of software development teams. They emphasized how skills such as empathy, self-management, and effective communication enable developers to make better decisions, reduce stress, and foster collaboration—all of which positively impact the quality of their work.
David and Victoria shared practical actions for integrating emotional intelligence into team dynamics. They highlighted techniques like active listening, recognizing stress triggers, and fostering open dialogue about challenges. By implementing these strategies, teams can create a more supportive environment where ideas flow freely and challenges are approached collectively.
Tidying up your code
In this session, Fernando Escolar, inspired by Kent Beck’s 2023 concept “Tidy First?”, explored the questions of software design and the practices that contribute to cleaner, more maintainable code. The focus was on proactive “tidying” as a first step in development, advocating for a mindset where small, consistent improvements prevent codebases from accumulating technical debt over time.
Fernando shared techniques for identifying and addressing design issues early on, along with strategies for making incremental improvements that contribute to a healthier, more cohesive codebase. This “tidy-first” approach aligns closely with the insights I discussed in my review of “Tidy First?”, where I explored the benefits of addressing structural issues upfront to ensure maintainability.
Reources for tidying up
- Tidy First?: A Personal Exercise in Empirical Software Design
- Refactoring: Improving the Design of Existing Code
Bonus - doing live katas?
Throughout the Software Crafters Barcelona conference, Daniel Ramos took a unique approach to foster collaboration and hands-on learning by organizing live mob programming sessions. Open to all attendees, these sessions offered an immersive experience where participants could join in coding katas together, tackling challenges in real time. Daniel facilitated the sessions, creating an inclusive and engaging environment where developers of all skill levels could contribute, learn, and problem-solve as a team. This continuous style allowed anyone interested to experience the collaborative power of mob programming.
Resources for katas
Table of contents
- Introduction
- The one about Titanic and Metrics, or why Jack fit in the log
- Parallel changes in production for 1,700 stores
- Refactoring Your Company: Practical Strategies for Cultural Change
- Kitchen Nightmares - Understanding Message Brokers
- The Importance of Emotional Intelligence in Software Development
- Tidying up your code
- Live katas?
Got a question?
If you have question or feedback, don't think twice and click here to leave a comment. Just want to support me? Buy me a coffee!