Reflections on Software Crafters Barcelona 2024

Last updated Nov 10, 2024 Published Nov 5, 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

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

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