<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title>Chemaclass - agile</title><subtitle>Tech Lead sharing practical insights on software craftsmanship, TDD, leadership, Bitcoin, and AI. Blog posts, book summaries, and conference talks.</subtitle><link rel="self" type="application/atom+xml" href="https://chemaclass.com/tags/agile/atom.xml"/><link rel="alternate" type="text/html" href="https://chemaclass.com"/><generator uri="https://www.getzola.org/">Zola</generator><updated>2025-04-12T00:00:00+00:00</updated><id>https://chemaclass.com/tags/agile/atom.xml</id><entry xml:lang="en"><title>Ship, Show, Ask</title><subtitle>Match the review to the risk, not the ritual</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="code-review" scheme="https://chemaclass.com/tags/code-review/" label="Code Review"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2025-04-12T00:00:00+00:00</published><updated>2025-04-12T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/ship-show-ask/"/><id>https://chemaclass.com/blog/ship-show-ask/</id><summary type="html">Not every change needs the same review. Ship, Show, Ask matches the process to the risk, without losing quality or collaboration.</summary><content type="html">&lt;p>In fast-moving teams, one of the biggest tensions we face is this: How do we keep shipping without compromising quality or collaboration?&lt;/p>
&lt;p>The traditional approach to &lt;a href="/blog/pull-request-vs-pair-prog/">pull requests&lt;/a> often slows things down. We wait hours, or days, for approvals, even for trivial changes. But the alternative, merging directly, can feel reckless or invisible to the rest of the team.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;p>That’s where the Ship-Show-Ask strategy comes in. Originally described by &lt;a rel="external" href="https://martinfowler.com/articles/ship-show-ask.html">Rouan Wilsenach&lt;/a>, this model offers a more flexible and thoughtful way to handle code changes. It’s not just a branching strategy, it’s a shift in how teams collaborate, trust, and take ownership.&lt;/p>
&lt;h2 id="what-is-ship-show-ask">What is Ship, Show, Ask?
&lt;a class="heading-anchor" href="#what-is-ship-show-ask" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>It’s a model that classifies changes based on how much review they require:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Ship&lt;/strong>: Merge directly to main (without a PR)&lt;/li>
&lt;li>&lt;strong>Show&lt;/strong>: Open a pull request, but merge it immediately&lt;/li>
&lt;li>&lt;strong>Ask&lt;/strong>: Open a pull request and wait for review&lt;/li>
&lt;/ul>
&lt;p>The key idea is to use Ask as the default for most work, fall back to Show when the context makes it safe, and avoid Ship (or reserve it for extremely trivial cases, if used at all).&lt;/p>
&lt;h2 id="why-i-prefer-to-ask-and-show">Why I prefer to Ask and Show
&lt;a class="heading-anchor" href="#why-i-prefer-to-ask-and-show" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Treat every change, even the small ones, as something worth sharing. I always create a branch and open a PR. It provides visibility, builds a shared history, and creates a space for optional or asynchronous feedback. It’s &lt;a href="/blog/working-with-the-garage-door-open/">working with the garage door open&lt;/a>, applied to code.&lt;/p>
&lt;p>But not all PRs need to follow the same review process.&lt;/p>
&lt;h3 id="i-default-to-ask">I default to Ask
&lt;a class="heading-anchor" href="#i-default-to-ask" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>I prefer to wait for a peer review when:&lt;/p>
&lt;ul>
&lt;li>The change involves risky or complex logic&lt;/li>
&lt;li>It could impact other developers or teams&lt;/li>
&lt;li>It introduces architectural or structural decisions that haven’t been agreed on yet&lt;/li>
&lt;li>It benefits from shared input or a second pair of eyes&lt;/li>
&lt;/ul>
&lt;p>That said, &lt;strong>Ask doesn’t mean over-engineering the process&lt;/strong>. Often, one thoughtful reviewer is enough, especially if they’re familiar with the domain. If the change touches a specific area, I’ll ask for feedback from the person who owns (or best understands) that part of the code. It doesn’t need to involve everyone.&lt;/p>
&lt;blockquote>
&lt;p>In small teams, requiring two approvals on every PR can quickly become a bottleneck and slow down the delivery of value. The goal is alignment and quality, not ceremony for its own sake.&lt;/p>
&lt;/blockquote>
&lt;h3 id="i-use-show-for-safe-low-impact-changes">I use Show for safe, low-impact changes
&lt;a class="heading-anchor" href="#i-use-show-for-safe-low-impact-changes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>I might merge immediately when:&lt;/p>
&lt;ul>
&lt;li>Practicing &lt;a href="/blog/effective-pair-programming/">pair programming&lt;/a> (the review already happened live)&lt;/li>
&lt;li>Fixing typos or broken links&lt;/li>
&lt;li>Updating documentation or changelogs&lt;/li>
&lt;li>&lt;a href="/blog/the-art-of-refactoring/">Refactoring&lt;/a> within a module I own&lt;/li>
&lt;li>Adding tests for existing behavior&lt;/li>
&lt;li>Making non-functional tweaks (formatting, logs, comments)&lt;/li>
&lt;li>Applying UI or style adjustments with no logic change&lt;/li>
&lt;/ul>
&lt;p>The key principle: &lt;strong>Show is optional, never mandatory&lt;/strong>. I choose Show only if the change is low-risk and fits within team expectations. When I use Show, I own the outcome. The responsibility is mine.&lt;/p>
&lt;h2 id="why-this-approach-works-for-me">Why this approach works for me
&lt;a class="heading-anchor" href="#why-this-approach-works-for-me" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>This model helps me:&lt;/p>
&lt;ul>
&lt;li>Ship faster without compromising quality&lt;/li>
&lt;li>Work with greater autonomy and ownership&lt;/li>
&lt;li>Avoid bottlenecks, especially in small or async teams&lt;/li>
&lt;li>Foster a mindset of trust, accountability, and thoughtful decision-making&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>It shifts the goal from getting approval to sharing intent and owning the outcome.&lt;/p>
&lt;/blockquote>
&lt;h2 id="what-makes-a-good-show">What makes a good “Show”?
&lt;a class="heading-anchor" href="#what-makes-a-good-show" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A Show PR might be the right choice when:&lt;/p>
&lt;ul>
&lt;li>The change is trivial and within my area of responsibility&lt;/li>
&lt;li>No one is available to review, and waiting would block progress&lt;/li>
&lt;li>The PR includes clear context and reasoning&lt;/li>
&lt;li>I’m open to post-merge feedback&lt;/li>
&lt;li>I’m ready to follow up with adjustments if needed&lt;/li>
&lt;/ul>
&lt;h2 id="tips-for-making-it-work">Tips for making it work
&lt;a class="heading-anchor" href="#tips-for-making-it-work" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Some practical advice from experience:&lt;/p>
&lt;ul>
&lt;li>Clarify team expectations for when to use Show vs Ask&lt;/li>
&lt;li>Always provide context in your PR, even if merging immediately&lt;/li>
&lt;li>Write tests for any new logic or behavior&lt;/li>
&lt;li>Welcome post-merge feedback, review doesn’t stop at merge&lt;/li>
&lt;li>Reflect regularly as a team and adjust the approach as needed&lt;/li>
&lt;/ul>
&lt;hr />
&lt;p>Ship, Show, Ask is more than branching hygiene. It builds a culture of clarity, accountability, and trust, where developers move fast while staying thoughtful.&lt;/p>
&lt;p>If you’re tired of slow PR queues and over-engineered approvals, try it on your next change. Want to dive deeper? Read &lt;a rel="external" href="https://martinfowler.com/articles/ship-show-ask.html">Rouan Wilsenach’s original post&lt;/a>.&lt;/p>
&lt;blockquote>
&lt;p>Match the review to the risk. Own what you merge.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="/images/blog/2025-04-12/footer.webp" alt="blog-footer" />&lt;/p></content></entry><entry xml:lang="en"><title>What Is Waterfall?</title><subtitle>What makes Waterfall a poor fit for modern software development?</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="software-design" scheme="https://chemaclass.com/tags/software-design/" label="Software Design"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2024-08-01T00:00:00+00:00</published><updated>2024-08-01T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/what-is-waterfall/"/><id>https://chemaclass.com/blog/what-is-waterfall/</id><summary type="html">Waterfall moves through fixed stages and gives no feedback until each one ends. Why that clashes with how software really evolves.</summary><content type="html">&lt;p>Waterfall is like following a straight path where you move from one step to the next in a defined order, like water flowing down a waterfall through different stages.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;p>The problem is that each step can take a lot of time and resources to complete. Plus, you don’t get feedback until the entire stage is finished, which can lead to a lot of wasted time. This is especially tricky in software development, where things are always changing and evolving.&lt;/p>
&lt;p>It usually follows a straightforward sequence like this:&lt;/p>
&lt;p>&lt;img src="/images/blog/2024-08-01/waterfall.webp" alt="Waterfall img from Comic Agile" />&lt;/p>
&lt;h2 id="the-reality-of-waterfall">The reality of Waterfall
&lt;a class="heading-anchor" href="#the-reality-of-waterfall" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Waterfall can be like communism in theory, it seems perfect on paper but doesn’t work in the real world.&lt;/p>
&lt;ul>
&lt;li>Clients often don’t know exactly what they want.&lt;/li>
&lt;li>Requirements are constantly changing.&lt;/li>
&lt;li>Businesses need to quickly adapt to market shifts and client needs.&lt;/li>
&lt;li>Software needs to be flexible to keep up with these changes.&lt;/li>
&lt;/ul>
&lt;p>So, in a constantly changing world, Waterfall can really hurt a business. It tends to frustrate developers and teams, and it can also annoy clients and the businesses paying for the software. This usually leads to delays and extra costs.&lt;/p>
&lt;h2 id="why-companies-still-use-waterfall">Why companies still use Waterfall
&lt;a class="heading-anchor" href="#why-companies-still-use-waterfall" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Even with its problems, a lot of companies still use Waterfall because it seems straightforward and logical. This makes them reluctant to take the time to learn Agile. Plus, getting management to agree to switch to Agile can be a tough sell, especially since it requires an investment in time and learning.&lt;/p>
&lt;p>The big issue is when higher-ups dictate exactly how teams should work, leading to micromanagement. This messes up the flexibility that Agile brings. From what I’ve seen, this is a common problem.&lt;/p>
&lt;blockquote>
&lt;p>Looking back, switching to Agile could have fixed a lot of issues.&lt;/p>
&lt;/blockquote>
&lt;hr />
&lt;p>&lt;img src="/images/blog/2024-08-01/footer.webp" alt="agile vs waterfall" />&lt;/p>
&lt;h2 id="why-agile-was-created">Why Agile was created
&lt;a class="heading-anchor" href="#why-agile-was-created" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Agile was created to overcome the limits of the Waterfall method. It focuses on constant interaction with clients and teams.&lt;/p>
&lt;p>Agile builds autonomous and responsible teams that handle tasks from start to finish, reducing wasted time and resources. It emphasizes flexibility, collaboration, and customer feedback.&lt;/p>
&lt;p>Unlike Waterfall, Agile uses iterative development, breaking projects into small, manageable sprints or iterations that last 1-4 weeks. Each cycle includes planning, development, testing, and review, aiming to deliver value quickly and gather feedback to improve.&lt;/p>
&lt;h3 id="key-aspects-of-agile">Key aspects of Agile
&lt;a class="heading-anchor" href="#key-aspects-of-agile" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Iterative Development&lt;/strong>: Work in small chunks and adjust as you go.&lt;/li>
&lt;li>&lt;strong>Customer Collaboration&lt;/strong>: Keep talking with clients to make sure they’re happy.&lt;/li>
&lt;li>&lt;strong>Cross-Functional Teams&lt;/strong>: Teams with different skills working together.&lt;/li>
&lt;li>&lt;strong>Adaptive Planning&lt;/strong>: Stay flexible and tweak plans based on feedback.&lt;/li>
&lt;li>&lt;strong>Continuous Improvement&lt;/strong>: Always look for ways to get better.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Read the original &lt;a rel="external" href="https://agilemanifesto.org/">Agile Manifesto&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h3 id="where-can-you-start">Where can you start?
&lt;a class="heading-anchor" href="#where-can-you-start" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>As a developer, you can boost your agility by diving into &lt;a href="/blog/effective-pair-programming/">pair programming&lt;/a> and &lt;a href="/blog/test-driven-development/">TDD&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>With pair programming, two developers work side by side, which means you get instant feedback and shared problem-solving, leading to better code.&lt;/li>
&lt;li>TDD, on the other hand, involves writing tests before the code, which help specifying what you want to do, focusing on baby steps.&lt;/li>
&lt;/ul>
&lt;p>Together, these practices make your development process more flexible, collaborative, and high-quality, fitting right in with Agile’s focus on quick adjustments and continuous improvement. See more practices &lt;a href="/readings/extreme-programming-explained/#practices">here&lt;/a>.&lt;/p>
&lt;blockquote>
&lt;p>The key is collaboration, baby steps, and quick feedback on everything you work on.&lt;/p>
&lt;/blockquote>
&lt;h2 id="my-experience-with-agile">My experience with Agile
&lt;a class="heading-anchor" href="#my-experience-with-agile" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I’ve &lt;a href="/talks/">talked&lt;/a> about Agile at various tech events and explored it in depth because I’m passionate about how it can supercharge software teams. When done right, Agile can completely change how teams work, making them faster, more efficient, and better at delivering what clients and businesses really need.&lt;/p>
&lt;ul>
&lt;li>2022-06-26 | &lt;a rel="external" href="https://phpconference.com/mixed/update-your-team-to-be-more-extreme/">International PHP Conference&lt;/a> [Berlin, Germany] (EN)&lt;/li>
&lt;li>2022-09-16 | &lt;a rel="external" href="https://web.archive.org/web/20231231183058/https://codetalks.de/">Code Talks&lt;/a> [Hamburg, Germany] (EN)&lt;/li>
&lt;li>2022-10-26 | &lt;a rel="external" href="https://phpconference.com/mixed/update-your-team-to-be-more-extreme/">International PHP Conference&lt;/a> [Munich, Germany] (EN)&lt;/li>
&lt;li>2022-12-21 | IES Ginés Pérez Chirinos [Murcia, Spain] (ES)&lt;/li>
&lt;li>2023-01-19 | &lt;a rel="external" href="https://devm.io/update-your-team-to-be-more-extreme/">devm.io&lt;/a> [Remote] (EN)&lt;/li>
&lt;li>2023-07-28 | &lt;a rel="external" href="https://www.wearedevelopers.com/world-congress">WeAreDeveloper World Congress&lt;/a> [Berlin, Germany] (EN)&lt;/li>
&lt;/ul>
&lt;h3 id="wearedevelopers-world-congress-in-berlin">WeAreDevelopers World Congress in Berlin
&lt;a class="heading-anchor" href="#wearedevelopers-world-congress-in-berlin" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/dqtAyl-SvaY"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>The Phoenix Project</title><subtitle>A Novel About IT, DevOps, And Helping Your Business Win</subtitle><category term="devops" scheme="https://chemaclass.com/tags/devops/" label="Devops"/><category term="leadership" scheme="https://chemaclass.com/tags/leadership/" label="Leadership"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><published>2024-05-31T00:00:00+00:00</published><updated>2024-05-31T00:00:00+00:00</updated><author><name>
Gene Kim</name></author><author><name>
Kevin Behr</name></author><author><name>
George Spafford</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/the-phoenix-project/"/><id>https://chemaclass.com/readings/the-phoenix-project/</id><summary type="html">An impossible project, people playing politics, and endless quick patches, instead of anyone helping the business thrive.</summary><content type="html">&lt;p>This is a story about an impossible project in which the people around are constantly playing politics, busy fixing critical bugs and wasting constant efforts on quick patches instead of helping the business thrive.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;blockquote>
&lt;p>If IT fails, the business fails.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;strong>&lt;a href="/readings/accelerate/">DevOps&lt;/a> Principles&lt;/strong>: Flow, Feedback, and Continual Learning and Experimentation. These guiding concepts promote advancements in responsiveness, dependability, and teamwork.&lt;/p>
&lt;h4 id="summary">Summary
&lt;a class="heading-anchor" href="#summary" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;p>The book starts with the promotion of Bill as VP of IT, and with that the responsibility of delivering an imposible (Phoenix) project. The CEO warns him that if the project does not deliver in time, then the entire IT department will be outsourced and the current IT employees will be fired.&lt;/p>
&lt;p>Bill tries to understand the status quo, and finds out that the people are too busy firefighting constantly and dealing with too many responsibilities (in addition, they are understaffed). Everything is urgent and needs to be done asap. The deadline was already setup from above, and there is no planning or discussions with other departments. TL;DR: Corporate chaos, politics and bloodbath meetings.&lt;/p>
&lt;p>However, Bill gets to know one person in the company that helps him improve the status quo, not by telling him what to do but by asking him questions to help find the solution.&lt;/p>
&lt;p>For example, the first question: “What are the four types of work that IT does?” which is not answered immediately but during the story:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Business projects&lt;/strong>: these are the projects that directly affect business goals. They generate revenue and deliver value to customers.&lt;/li>
&lt;li>&lt;strong>Internal projects&lt;/strong>: these are regular tasks that keep the system working. Like system upgrades, security patches, etc. It tends to be invisible and can become a bottleneck for IT departments.&lt;/li>
&lt;li>&lt;strong>Changes&lt;/strong>: the result of the previous business and internal projects, to know what to change with and within them.&lt;/li>
&lt;li>&lt;strong>Unplanned work&lt;/strong>: this is the real productivity killer. This is related to all operational issues resulted from the previous three types of work.&lt;/li>
&lt;/ol>
&lt;hr />
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/6QNdL1I7OTM"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>What Kills Agility?</title><subtitle>Why Agile if you already do Scrum, Kanban, SAFe, or Waterfall?</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="leadership" scheme="https://chemaclass.com/tags/leadership/" label="Leadership"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2024-05-30T00:00:00+00:00</published><updated>2024-05-30T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/what-kills-agility/"/><id>https://chemaclass.com/blog/what-kills-agility/</id><summary type="html">Why Agile if you already do Scrum, Kanban or SAFe? How you manage an organization defines its quality, and what really kills it.</summary><content type="html">&lt;p>Dozens of documents and spreadsheets, meetings over meetings, and yet without much impact, result in team misalignments, realized too late.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;p>How we manage an organization defines its quality. Excellent management is crucial to avoid the &lt;a href="/blog/what-is-waterfall/">Waterfall&lt;/a> trap if we aim to build an Agile environment. But why would we want that? What’s wrong with the way we already work?&lt;/p>
&lt;p>If you are already happy with how you and your team work together, that’s okay. However, what about reevaluating how you work to look for potential improvements?&lt;/p>
&lt;p>I am referring to evaluating your system and how you and the people around you act within it. What worked months or years ago might differ from what we could discover today, as part of continuous improvement.&lt;/p>
&lt;p>I dislike politics in the workplace, where each team looks out for themselves instead of having a bigger shared direction. This results in daily work filled with fear from above, passed down to the people below, maintaining an &lt;a href="/blog/unhealthy-working-environment">unhealthy working environment&lt;/a>. Game of Thrones is great as a fictional series, but not something to deal with in daily business.&lt;/p>
&lt;p>Agile was born precisely as a response to the excessive waste generated by politics and organizational micromanagement.&lt;/p>
&lt;p>Controlling and “slow performance” needed a more flexible approach. When people adopt a fixed mindset, they resist change, fear failure, and prioritize rigid processes and hierarchies. This conflicts with Agile’s core ideas of embracing change, &lt;a href="/readings/accelerate/">continuous delivery&lt;/a> with iterative development, flexible planning, and fostering collaboration and innovation.&lt;/p>
&lt;p>A fixed mindset leads to fear of experimentation and a reluctance to challenge the status quo, reducing progress and the potential for learning and growth.&lt;/p>
&lt;hr />
&lt;h2 id="what-kills-agility">What kills agility?
&lt;a class="heading-anchor" href="#what-kills-agility" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Fixed mindset&lt;/strong>: Resistance to change, fear of failure, and prioritizing rigid processes over learning and adaptation strangle innovation and flexibility.&lt;/li>
&lt;li>&lt;strong>Excessive bureaucracy&lt;/strong>: Complex processes and excessive documentation slow down decision-making and responsiveness.&lt;/li>
&lt;li>&lt;strong>Micromanagement&lt;/strong>: Over-controlling leadership undermines team autonomy.&lt;/li>
&lt;li>&lt;strong>Lack of collaboration&lt;/strong>: Poor communication and teamwork hinder progress.&lt;/li>
&lt;li>&lt;strong>Ineffective feedback loops&lt;/strong>: Prevent adjustments and continuous improvement.&lt;/li>
&lt;li>&lt;strong>Fear of experimentation&lt;/strong>: A culture that punishes failure discourages experimentation and learning from mistakes.&lt;/li>
&lt;li>&lt;strong>Inflexible processes&lt;/strong>: Strict adherence without adapting to project needs.&lt;/li>
&lt;li>&lt;strong>Misaligned goals&lt;/strong>: Conflicting priorities reduce efficiency.&lt;/li>
&lt;li>&lt;strong>Lack of leadership’s support&lt;/strong>: Without backing from upper management, Agile initiatives can struggle to gain the necessary resources and commitment.&lt;/li>
&lt;li>&lt;strong>Poor technical practices&lt;/strong>: Neglecting technical excellence and good design can lead to a fragile codebase that is difficult to adapt and extend.&lt;/li>
&lt;/ul>
&lt;h3 id="what-can-you-do-about-it">What can you do about it?
&lt;a class="heading-anchor" href="#what-can-you-do-about-it" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Learn the basics of &lt;a href="/blog/update-your-team-to-be-more-extreme/">Extreme Programming&lt;/a> (XP) and Lean Software Development.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>XP&lt;/strong>: Focused on software development practices and technical excellence, with specific practices like &lt;a href="/blog/effective-pair-programming/">pair programming&lt;/a> and &lt;a href="/blog/test-driven-development/">Test-Driven Development&lt;/a> (TDD).&lt;/li>
&lt;li>&lt;strong>Lean&lt;/strong>: Takes a broader approach, focusing on removing waste, optimizing flow, and improving processes across the organization.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="/images/blog/2024-05-30/footer.webp" alt="A rusted barrier blocking a narrow walkway above Alicante, the city and its port spread out below" />&lt;/p></content></entry><entry xml:lang="en"><title>Deployments on Fridays</title><subtitle>Why "should we not" deploy to production on Fridays?</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="leadership" scheme="https://chemaclass.com/tags/leadership/" label="Leadership"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2024-02-25T00:00:00+00:00</published><updated>2024-02-25T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/deployments-on-fridays/"/><id>https://chemaclass.com/blog/deployments-on-fridays/</id><summary type="html">The panic around deploying on Fridays. Does banning a whole day of delivering value to your customers actually make sense?</summary><content type="html">&lt;p>I have heard multiple times, from various people, the idea of panic towards deploying on Fridays. How good is that idea of banning the day before weekend from delivering new value to our clients or customers?&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;p>The main argument in favor of NOT deploying on Friday is based on the idea that we “should be paranoid” with our software and that it could fail when we touch it. So, we “should assume” the worst whenever we deploy a new release version of our system.&lt;/p>
&lt;p>However, the critical factor here is Why? Why should we not deploy on Fridays? Is it OK to be afraid of our own software system, that we live in a constant panic of breaking it the day after we have done a deployment? How much impact should our releases have? How can we make sure the deployment won’t break the live system?&lt;/p>
&lt;p>Your Continuous Integration/Delivery pipelines, end-to-end and other types of tests in place, automated scaling policies, a previous staging sandbox to perform even manual tests if necessary, etc., will determine the security and confidence for any of your releases. However, the quality of these topics is a deal-breaker to have enough confidence on how, when and why would it make sense to release to production.&lt;/p>
&lt;p>The goal is build a system where deployments to production should be as often, smooth and easy as possible; any time, any day. Being afraid of your system should not be the aim. On the contrary, it should be something to work towards to fix it.&lt;/p>
&lt;p>The team dynamics are also an essential factor here. If we establish fear of deployments on Fridays, and fear of our system, that will end up in lack of accountability by default. This reminds me of &lt;a href="/readings/the-five-dysfunctions-of-a-team/">The Five Dysfunctions of a Team&lt;/a>.&lt;/p>
&lt;p>&lt;img src="/images/blog/2024-02-25/middle.webp" alt="deploying on fridays" />&lt;/p>
&lt;p>If you deploy small and frequent changes as soon as they can guarantee 100% quality value success, why delay such an incremental improvement to your system?&lt;/p>
&lt;p>Coming back to “Why should we not deploy on Fridays?” The only reason I can think of is being afraid that we have to work on Saturday on the broken thing we delivered on Friday. However, I wonder if any option was available, so we could have identified such a broken thing during the working Friday itself.&lt;/p>
&lt;p>Monitoring your live system is crucial to guarantee the health after each deployment. This is essential to ensure everything is working fine and smoothly. To build a resilience system, this should trigger alarms to notify someone responsible for addressing the issue, disable or revert the latest “broken” feature… there are many techniques to create awareness and act on them.&lt;/p>
&lt;p>In case of doubt, you could use feature flags to disable the feature you will deploy. Still, you prefer not to enable it during the weekend while keeping the option of adding value and deploying anytime always open.&lt;/p>
&lt;p>I believe &lt;strong>frequent&lt;/strong> and &lt;strong>small releases&lt;/strong> to production &lt;strong>are key&lt;/strong>; any time, any date, as far as it makes sense, and there is a clear path to bringing value soon to the customer to get &lt;a href="/blog/ship-show-ask/">feedback&lt;/a> ASAP.&lt;/p>
&lt;blockquote>
&lt;p>Deliver quality value in small increments, as frequently as possible.&lt;/p>
&lt;/blockquote>
&lt;p>Being able to deploy on Fridays (if needed or wanted) impacts the team’s confidence. Similarly, forbidding deployments on Fridays impacts the team’s self-esteem as well.&lt;/p>
&lt;p>&lt;img src="/images/blog/2024-02-25/footer.webp" alt="frequent small releases" />&lt;/p></content></entry><entry xml:lang="en"><title>The Lean Startup</title><subtitle>How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful</subtitle><category term="leadership" scheme="https://chemaclass.com/tags/leadership/" label="Leadership"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><published>2024-01-26T00:00:00+00:00</published><updated>2024-01-26T00:00:00+00:00</updated><author><name>
Eric Ries</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/the-lean-startup/"/><id>https://chemaclass.com/readings/the-lean-startup/</id><summary type="html">Most startups fail, and many of those failures are preventable. The approach that changed how companies build and launch.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>Most startups fail. But many of those failures are preventable. The Lean Startup is a new approach being adopted across the globe, changing the way companies are built and new &lt;a href="/readings/continuous-discovery-habits/">products&lt;/a> are launched.&lt;/p>
&lt;p>Eric Ries defines a startup as an organization dedicated to creating something new under conditions of extreme &lt;a href="/readings/sprint/">uncertainty&lt;/a>. This is just as true for one person in a garage or a group of seasoned professionals in a Fortune 500 boardroom. What they have in common is a mission to penetrate that fog of uncertainty to discover a successful path to a sustainable business.&lt;/p>
&lt;h2 id="key-takeaways">Key Takeaways
&lt;a class="heading-anchor" href="#key-takeaways" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Test frequently and learn quickly&lt;/li>
&lt;li>Observe and measure real customer behaviour&lt;/li>
&lt;li>Focus exclusively on capturing actionable Metrics&lt;/li>
&lt;li>Be comfortable pivoting based on key learnings&lt;/li>
&lt;li>Embrace new accounting methods&lt;/li>
&lt;li>Learn what is not working and apply changes immediately: stay lean&lt;/li>
&lt;/ul>
&lt;h3 id="summary">Summary
&lt;a class="heading-anchor" href="#summary" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/RSaIOCHbuYw"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr />
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/fEvKo90qBns"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Agile Project Management</title><subtitle>A Beginner's Guide to Agile Implementation and Leadership</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="scrum" scheme="https://chemaclass.com/tags/scrum/" label="Scrum"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2023-05-31T00:00:00+00:00</published><updated>2023-05-31T00:00:00+00:00</updated><author><name>
Jeremy Savell</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/agile-project-management/"/><id>https://chemaclass.com/readings/agile-project-management/</id><summary type="html">Waterfall projects ran over budget and shipped software nobody wanted to use. In 2001, a 68-word manifesto changed that.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>A basic and straightforward overview of what &lt;a href="/blog/what-kills-agility/">Agile&lt;/a> is, presenting some framework examples that are well known today, such as &lt;a href="/blog/ignoring-scrum-to-get-more-agile/">Scrum&lt;/a> or Kanban, everything condensed in a 100’s pages book that you can read in a couple of hours.&lt;/p>
&lt;h2 id="chapters">Chapters
&lt;a class="heading-anchor" href="#chapters" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ol>
&lt;li>The fluid manifesto&lt;/li>
&lt;li>Being agile&lt;/li>
&lt;li>Agile process&lt;/li>
&lt;li>Planning for success&lt;/li>
&lt;li>Agile communication&lt;/li>
&lt;li>Scrum basics&lt;/li>
&lt;li>Introduction to Kanban&lt;/li>
&lt;li>Building an adaptive team&lt;/li>
&lt;li>Leadership and collaborative management&lt;/li>
&lt;li>Common errors behind agile failure&lt;/li>
&lt;li>Final words: agile is adaptation&lt;/li>
&lt;/ol>
&lt;hr />
&lt;blockquote>
&lt;p>“The benefits of Agile projects extend no only to the team using it, but also to the customer receiving the final product.”&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>“There is an underlying critical metric that consistently leads to the success of an Agile project: communication. Miscommunication, under-communication, or poor communication of any type leads to the collapse and failure of said project.”&lt;/p>
&lt;/blockquote>
&lt;hr />
&lt;h3 id="key-takeaways">Key takeaways
&lt;a class="heading-anchor" href="#key-takeaways" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Projects that followed a &lt;strong>&lt;a href="/blog/what-is-waterfall/">Waterfall&lt;/a>&lt;/strong> methodology tended to exceed their expenses over time, while the product delivered was below standard and difficult to use.&lt;/p>
&lt;p>That situation originated that a group of developers signed a brief, 68-word manifesto in 2001.&lt;/p>
&lt;h4 id="a-brief-background">A brief background
&lt;a class="heading-anchor" href="#a-brief-background" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;p>During the 1960s, software got into a big crisis; creating software was complex but changing it later became pure chaos. &lt;strong>Waterfall&lt;/strong> to the rescue.&lt;/p>
&lt;p>&lt;strong>Waterfall&lt;/strong> outlined a simple, logical set of processes that a company would need to follow for a project to be successful. Its name comes from the metaphor of water gently cascading down a predictable, steady, incremental stream. Its life cycle of software development would be in six simple steps.&lt;/p>
&lt;ol>
&lt;li>Requirements&lt;/li>
&lt;li>Analysis&lt;/li>
&lt;li>Design&lt;/li>
&lt;li>Code&lt;/li>
&lt;li>Testing&lt;/li>
&lt;li>Operations&lt;/li>
&lt;/ol>
&lt;p>For 10 years, &lt;strong>Waterfall&lt;/strong> was the standard methodology in the software universe. And for 10 more years, chaos persisted. Although the intention was good, the reality is that the ever-changing set of constraints does not cope very well with this methodology because each step is dependent on the previous one.&lt;/p>
&lt;p>86% of the time a company uses the &lt;strong>Waterfall&lt;/strong> method for project management, the customer receives inadequate or useless software. A lot of software projects were unused or never finished.&lt;/p>
&lt;p>During the 70’ and 80’, &lt;strong>Iterations and Incremental Development (IID)&lt;/strong> proved to be a viable option. In the 90’ surges an &lt;strong>Evolutionary Delivery (ED)&lt;/strong>, which changes the situation. The developer is responsible for listening to the user’s reactions early and often. The user starts playing a direct role in the development process.&lt;/p>
&lt;p>A few years later, a new method surged &lt;strong>Rapid Iterative Production Prototyping (RIPP)&lt;/strong>, later called &lt;strong>Rapid Application Development (RAD)&lt;/strong>, which they claimed &lt;em>“Working software in 90 days… or your money back.”&lt;/em>&lt;/p>
&lt;p>Lastly, during the 90’ &lt;strong>&lt;a href="/blog/update-your-team-to-be-more-extreme/">Extreme Programming&lt;/a> (XP)&lt;/strong>, &lt;strong>Scrum&lt;/strong>, and &lt;strong>Crystal&lt;/strong> were defined in detail.&lt;/p>
&lt;p>These distinct yet similar solutions were decentralized, working independently of one another. This realization led to that night in Utag the unification of these ideas under one banner, in one document.&lt;/p>
&lt;p>&lt;strong>Agile&lt;/strong> became the definitive standard for software development.&lt;/p>
&lt;h3 id="the-agile-manifesto">The Agile Manifesto
&lt;a class="heading-anchor" href="#the-agile-manifesto" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Individuals and interactions over processes and tools&lt;/li>
&lt;li>Working software over comprehensive documentation&lt;/li>
&lt;li>Customer collaboration over contract negotiation&lt;/li>
&lt;li>Responding to change over following a plan&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>That is, while there is value in the items on the rights, we value the items on the left more.&lt;/p>
&lt;/blockquote></content></entry><entry xml:lang="en"><title>Dedicated QA Teams in Software?</title><subtitle>How does it fit a dedicated QA person in your agile team?</subtitle><category term="testing" scheme="https://chemaclass.com/tags/testing/" label="Testing"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="clean-code" scheme="https://chemaclass.com/tags/clean-code/" label="Clean Code"/><published>2023-05-17T00:00:00+00:00</published><updated>2023-05-17T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/dedicated-qa-teams/"/><id>https://chemaclass.com/blog/dedicated-qa-teams/</id><summary type="html">Let's talk about the QA position. The hidden truth behind poor software quality, and why it concerns you if you write code.</summary><content type="html">&lt;p>This will be controversial, but let’s talk about the QA position. The hidden truth behind the lack of &lt;a href="/blog/different-beliefs-about-software-quality/">software quality&lt;/a> and why this should concern you if you write software.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="qa-is-a-role-not-a-position">QA is a role, not a position
&lt;a class="heading-anchor" href="#qa-is-a-role-not-a-position" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>As a software developer, when you write software, you are responsible for the quality of whatever you’re writing. A third person acting like QA could find that your solution doesn’t work like expected, but how come? You might argue they might catch edge cases, but how could that be possible if the software was already tested previously?&lt;/p>
&lt;p>A software team’s final goal is to make the QA position useless because they should find nothing but well-working software. But how do you get to that point? How can we ensure that the software we write is working as expected and there is no need for a QA person in our team?&lt;/p>
&lt;h2 id="the-hidden-truth-behind-the-lack-of-software-quality">The hidden truth behind the lack of software quality
&lt;a class="heading-anchor" href="#the-hidden-truth-behind-the-lack-of-software-quality" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Unfortunately, in our software industry, the demand for “fast, quick and dirty” projects ended up in poorly developed MVPs by simply applying patches and code over code with just manual testing checking happy paths, sometimes even ignoring edge cases.&lt;/p>
&lt;blockquote>
&lt;p>“The deadline is in one week, so you better finish it on time!”&lt;/p>
&lt;/blockquote>
&lt;p>We don’t learn the importance of what automated testing can bring to our daily job, so we don’t take it seriously, and therefore, we don’t practice it enough. And, for that exact reason, because we don’t practice it, we don’t know how to perform it properly. Yes, I am talking about writing automated tests that prove the behavior of your software!&lt;/p>
&lt;p>Our inability to write testable code results in software that is hard to test, and thus we &lt;a href="/blog/tech-lead/">delegate&lt;/a> testing to other third parties shifting the responsibility for the overall end quality of the product or service we write.&lt;/p>
&lt;h2 id="practice-makes-the-master">Practice makes the master
&lt;a class="heading-anchor" href="#practice-makes-the-master" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>You must learn and apply proper testing techniques when they make sense. How and when effectively use test doubles, prepare solitary or sociable tests, which compromises and reasons backup your mind when choosing one or other paths toward your testing strategies?&lt;/p>
&lt;p>You are the latest and main responsible person in charge of your knowledge, so you better invest in yourself because no one else will do it for you.&lt;/p>
&lt;p>Look at everything you do as an opportunity for learning. Practice and get better by default at everything you do.&lt;/p>
&lt;p>If you don’t know how to start, here is my favourite tip: you can always practice and improve your testing skills using code-katas. Read more about this topic &lt;a href="/blog/test-driven-development/">here&lt;/a>.&lt;/p>
&lt;h2 id="nice-theory-but-why-bother">Nice theory, but… why bother?
&lt;a class="heading-anchor" href="#nice-theory-but-why-bother" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Manual testing is, of course, necessary. It is another testing strategy that I am not blaming or attacking. We might still need a dedicated person in charge of discovering what new features we want to build to satisfy our clients. But this blog-post is not about that position.&lt;/p>
&lt;p>It is all about shortening the feedback loop. If you can write software to work in specific ways, can’t you write automated tests to prove that the software you wrote behaves the way you expect?&lt;/p>
&lt;p>If you have covered with automated tests the behavior of your software at any level that makes sense, what’s left for a dedicated QA person?&lt;/p>
&lt;p>Next time you think about “We need a QA person to test this,” try the exercise of thinking instead, “How can I write an automated test that verifies what I would expect if a QA person were checking this?”&lt;/p>
&lt;p>And that’s how you change the “full-time QA position” into a “role mentality for everyone that writes software.”&lt;/p>
&lt;p>Code never lies and never forgets; once it’s written and automated in your pipeline, you can run it anytime at zero cost.&lt;/p>
&lt;p>&lt;img src="/images/blog/2023-05-17/footer.webp" alt="blog-footer" />&lt;/p></content></entry><entry xml:lang="en"><title>Accelerate</title><subtitle>Building and Scaling High Performing Technology Organizations</subtitle><category term="devops" scheme="https://chemaclass.com/tags/devops/" label="Devops"/><category term="software-design" scheme="https://chemaclass.com/tags/software-design/" label="Software Design"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2023-03-19T00:00:00+00:00</published><updated>2023-03-19T00:00:00+00:00</updated><author><name>
Nicole Forsgren</name></author><author><name>
Jez Humble</name></author><author><name>
Gene Kim</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/accelerate/"/><id>https://chemaclass.com/readings/accelerate/</id><summary type="html">The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>Accelerate explores how software development teams using &lt;strong>Lean Software&lt;/strong> and &lt;strong>DevOps&lt;/strong> can measure their performance and the performance of software engineering teams impacts the overall performance of an organization.&lt;/p>
&lt;blockquote>
&lt;p>Note: DevOps is about integrating and automating software development (Dev) and IT operations (Ops), focusing on improving (and shortening) the systems development life cycle.&lt;/p>
&lt;/blockquote>
&lt;h2 id="key-capabilities">Key Capabilities
&lt;a class="heading-anchor" href="#key-capabilities" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="continuous-delivery">Continuous Delivery
&lt;a class="heading-anchor" href="#continuous-delivery" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Use Version Control for all Production Artifacts&lt;/li>
&lt;li>Automate Your Deployment Process&lt;/li>
&lt;li>Implement Continuous Integration&lt;/li>
&lt;li>Use Trunk-Based Development Methods&lt;/li>
&lt;li>Implement Test Automation&lt;/li>
&lt;li>Continuous Delivery (CD)&lt;/li>
&lt;/ul>
&lt;h3 id="architecture">Architecture
&lt;a class="heading-anchor" href="#architecture" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Use a Loosely Coupled Architecture&lt;/li>
&lt;/ul>
&lt;h3 id="product-and-process">Product and Process
&lt;a class="heading-anchor" href="#product-and-process" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Gather and Implement Customer Feedback&lt;/li>
&lt;li>Make the Flow of Work Visible through the Value Stream&lt;/li>
&lt;li>Work in Small Batches&lt;/li>
&lt;li>Foster and Enable Team Experimentation&lt;/li>
&lt;/ul>
&lt;h3 id="lean-management-and-monitoring">Lean Management and Monitoring
&lt;a class="heading-anchor" href="#lean-management-and-monitoring" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Have a Lightweight Change Approval Processes&lt;/li>
&lt;li>Monitor across Application and Infrastructure to Inform Business Decisions&lt;/li>
&lt;li>Check System Health Proactively&lt;/li>
&lt;li>Improve Processes and Manage Work with WIP (Work-In-Process) Limits&lt;/li>
&lt;li>Visualize Work to Monitor Quality and Communicate throughout the Team&lt;/li>
&lt;/ul>
&lt;h3 id="cultural">Cultural
&lt;a class="heading-anchor" href="#cultural" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Support a Generative Culture&lt;/li>
&lt;li>Encourage and Support Learning&lt;/li>
&lt;li>Support and Facilitate Collaboration among Teams&lt;/li>
&lt;li>Provide Resources and Tools that Make Work Meaningful&lt;/li>
&lt;li>Support or Embody Transformational &lt;a href="/blog/the-beauty-of-leadership/">Leadership&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="four-key-metrics">Four Key Metrics
&lt;a class="heading-anchor" href="#four-key-metrics" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Change Lead Time&lt;/strong>
&lt;ul>
&lt;li>Time to implement, test, and deliver code for a feature&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Deployment Frequency&lt;/strong>
&lt;ul>
&lt;li>Number of deployments in a given duration of time&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Change Failure Rate&lt;/strong>
&lt;ul>
&lt;li>Percentage of failed changes over all changes (regardless of success)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Mean Time to Recovery&lt;/strong>
&lt;ul>
&lt;li>Time it takes to restore service after production failure&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/_d9cws_T9qk"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Interview About XP and Agile</title><subtitle>Agile is about HOW you do certain things</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2023-01-09T00:00:00+00:00</published><updated>2023-01-09T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/interview-about-xp-and-agile/"/><id>https://chemaclass.com/blog/interview-about-xp-and-agile/</id><summary type="html">My interview with devm.io regarding Agile and Extreme Programming. Agile is more about HOW you do certain things, rather than WHAT things you do.</summary><content type="html">&lt;p>My interview with &lt;strong>devm.io&lt;/strong> regarding &lt;a href="/blog/what-kills-agility/">Agile&lt;/a> and &lt;a href="/blog/update-your-team-to-be-more-extreme/">Extreme Programming&lt;/a>.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;hr />
&lt;p>&lt;strong>devm.io: We talked to Chema, a software developer and an Extreme Programming expert, about his favourite topic and his upcoming live event &lt;a rel="external" href="https://devm.io/update-your-team-to-be-more-extreme/">Update Your Team To Be More Extreme&lt;/a>.&lt;/strong>&lt;/p>
&lt;h2 id="could-you-tell-us-a-little-about-yourself-who-you-are-and-what-you-do">Could you tell us a little about yourself, who you are, and what you do?
&lt;a class="heading-anchor" href="#could-you-tell-us-a-little-about-yourself-who-you-are-and-what-you-do" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Chema: My name is Jose Maria Valera Reales, but everyone calls me Chema. I’m originally from Spain but have lived in Berlin since 2015. I’ve been working as a software developer since 2013. In recent years, I have focused on achieving excellence and figuring out how to help my peers and, with them, the entire software community to improve in our profession.&lt;/p>
&lt;p>I am currently a Tech Lead at &lt;a rel="external" href="https://teufel.de/">Lautsprecher Teufel GmbH&lt;/a>, where I work with the e-commerce webshop team. I also enjoy &lt;a rel="external" href="https://github.com/Chemaclass">open-source software&lt;/a>, so I enjoy creating &lt;a href="/blog/pull-request-vs-pair-prog/">pull requests&lt;/a> for other repositories, and I also love when I receive pull requests from others.&lt;/p>
&lt;h2 id="how-would-you-describe-extreme-programming-what-makes-it-so-extreme">How would you describe Extreme Programming? What makes it so “extreme?”
&lt;a class="heading-anchor" href="#how-would-you-describe-extreme-programming-what-makes-it-so-extreme" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Extreme Programming is the most straightforward and pragmatic approach to embracing Agile in your software team. It incorporates solutions based on values, principles, and practices. You don’t have to use or do everything, but rather whatever fits you and your team in your context. However, these are helpful general solutions that work better when combined.&lt;/p>
&lt;p>From my experience, the word “extreme” can be misleading, but I see it as an opportunity to emphasise the difficulty of the fundamentals behind it. The critical point is realising that our “common sense” is not as “common” as we tend to think, nor the best practices for practical teamwork. Therefore, this is about pushing ourselves to extreme effectiveness, collaboration, and satisfaction while working with others.&lt;/p>
&lt;h2 id="you-will-host-a-live-event-on-devm-io-on-the-topic-on-january-19th-could-you-give-us-a-sneak-peek-of-what-your-audience-can-expect">You will host a live event on devm.io on the topic on January 19th. Could you give us a sneak peek of what your audience can expect?
&lt;a class="heading-anchor" href="#you-will-host-a-live-event-on-devm-io-on-the-topic-on-january-19th-could-you-give-us-a-sneak-peek-of-what-your-audience-can-expect" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>We will explore how a software team works nowadays, the common issues we encounter, and what solutions we could apply to improve our team routines. We will look for the real meaning of Agile, focusing on Extreme Programming ideas.&lt;/p>
&lt;p>In addition, I will share some ideas to help your team create learning opportunities with concrete examples that any team can incorporate into their current work.&lt;/p>
&lt;h2 id="during-the-event-you-will-also-tell-us-something-about-katas-what-exactly-are-katas">During the event, you will also tell us something about Katas. What exactly are Katas?
&lt;a class="heading-anchor" href="#during-the-event-you-will-also-tell-us-something-about-katas-what-exactly-are-katas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The term “kata” comes from the repetitive movements done in karate that help you improve your fighting skills.&lt;/p>
&lt;p>Why “code katas?” Because as a group, we need to practice more. Most of our learning takes place on the job, so most of our mistakes are also made there. And because we want to keep PROD, we’re reluctant to try new things.&lt;/p>
&lt;p>Katas exist to help developers get the same benefits you would get from practice in any other profession. These simple, simulation exercises let you experiment and learn without the pressure of PROD. There are no right or wrong answers in any software kata: the benefit comes from the process, not the result.&lt;/p>
&lt;p>There are katas to help you improve your &lt;a href="/blog/the-art-of-refactoring/">refactoring&lt;/a> skills (such as Gilded Rose Refactoring Kata by Emily Bache) or your testing skills (easy ones like Fizz Buzz or Roman Numerals, or more advanced ones like the Bank Kata by Sandro Mancuso). They’re also great for building confidence when programming with others, watching and practising different roles collaboratively, fostering team cohesion, etc.&lt;/p>
&lt;h2 id="what-role-do-agile-methods-play-in-software-development-for-you">What role do Agile methods play in software development for you?
&lt;a class="heading-anchor" href="#what-role-do-agile-methods-play-in-software-development-for-you" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The very first question here is to define what Agile methods are. In the end, everyone communicates somehow, provides feedback to others, and simplifies to some level. Sometimes people have the courage to speak their minds and sometimes they do not, and usually, they try to respect their peers. So, for me, Agile is more about “how” you do certain things rather than “what” things you do.&lt;/p>
&lt;p>Agile is a highly collaborative working process at any level, which might have a challenging learning curve at the beginning, but it pays off sooner than you might expect.&lt;/p>
&lt;h2 id="which-topic-in-the-area-of-agile-should-receive-more-attention">Which topic in the area of agile should receive more attention?
&lt;a class="heading-anchor" href="#which-topic-in-the-area-of-agile-should-receive-more-attention" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Team building and embracing agility, starting with asking “why?” We need to challenge the status quo more often and ask ourselves why we work the way we do and how and what we could do differently to keep improving and never stop learning.&lt;/p>
&lt;blockquote>
&lt;p>You can also read the interview from the original link: &lt;a rel="external" href="https://devm.io/agile/extreme-programming-agile">https://devm.io/agile/extreme-programming-agile&lt;/a>.&lt;/p>
&lt;/blockquote></content></entry><entry xml:lang="en"><title>Ignoring Scrum to Get More Agile?</title><subtitle>Killing agility with excessive meetings</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="scrum" scheme="https://chemaclass.com/tags/scrum/" label="Scrum"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2022-12-06T00:00:00+00:00</published><updated>2022-12-06T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/ignoring-scrum-to-get-more-agile/"/><id>https://chemaclass.com/blog/ignoring-scrum-to-get-more-agile/</id><summary type="html">Boring meetings are killing agile. When the process stops helping the team and starts owning it instead.</summary><content type="html">&lt;p>Talking to a friend about agile, he asked me a fascinating question remarking how badly sometimes Agile and Scrum fit
together, especially regarding meetings. These are my thoughts about this topic.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;blockquote>
&lt;p>“Do you think it would make sense to just use agile and ignore scrum (sprints) completely in a product based
development company. I feel it’s hard to be agile when you have 10 hours of meetings per week.” Filip G.&lt;/p>
&lt;/blockquote>
&lt;p>That is related to the essence core of &lt;a href="/readings/xp-embrace-change/">Extreme Programming&lt;/a>, which is the first value: Effective Communication.&lt;/p>
&lt;blockquote>
&lt;p>“Probably some companies just don’t know how to properly use meetings and just have them out of habit.” Filip G.&lt;/p>
&lt;/blockquote>
&lt;p>I wouldn’t say completely ignore Scrum. Scrum (when done well) is a great “Product Management” Framework. To improve
your understanding of Scrum I recommend reading: &lt;a href="/readings/scrum-the-art-of-doing-twice">Scrum: The Art of Doing Twice the Work in Half the Time&lt;/a>.&lt;/p>
&lt;p>The main issue with scrum nowadays is that management took control over the whole thing, and developers are not really
educated about how to practice Scrum properly (in a real Agile way), and that’s where the problem starts. For this,
I recommend a book that addresses pretty well the common issues that most Scrum teams face in a fun and easy-reading book
&lt;a href="/readings/zombie-scrum-survival-guide/">Zombie Scrum Survival Guide: A Journey to Recovery&lt;/a>.&lt;/p>
&lt;p>It’s not about Agile yes, and Scrum no. They are totally compatible. The issue is to create awareness about how to focus
the team processes from an agile point of view.&lt;/p>
&lt;h2 id="agile-in-a-nutshell">Agile in a nutshell
&lt;a class="heading-anchor" href="#agile-in-a-nutshell" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I recently wrote a blog post about agile fundamentals, which I recommend you to read to get into the
details: &lt;a href="/blog/working-agile-with-non-agile-teams/">Working agile with non-agile teams&lt;/a>. But, the &lt;strong>tl;dr&lt;/strong>:
&lt;ins>Agile is about quick feedback. It’s about effective communication and reducing waste while aiming for simplicity.&lt;/ins>&lt;/p>
&lt;p>&lt;a rel="external" href="https://agilemanifesto.org/">Agile&lt;/a> is about keeping these values always present:&lt;/p>
&lt;ul>
&lt;li>Individuals and interactions over processes and tools&lt;/li>
&lt;li>Working software over comprehensive documentation&lt;/li>
&lt;li>Customer collaboration over contract negotiation&lt;/li>
&lt;li>Responding to change over following a plan&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>While there is value in the items on the right, we value the items on the left more.&lt;/p>
&lt;/blockquote>
&lt;h2 id="scrum-in-a-nutshell">Scrum in a nutshell
&lt;a class="heading-anchor" href="#scrum-in-a-nutshell" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Scrum is a framework for project management emphasizing software development, although it is used in other fields like
sales, marketing, and more. It’s designed for teams of 5 to 9 people (see &lt;a href="/blog/dunbar-number/">Dunbar number&lt;/a>) who are
totally autonomous and responsible for breaking down their work into small chunks that can be completed in a time-boxed
iteration, called sprints, usually 1, 2, or 4 weeks.&lt;/p>
&lt;p>It’s common to find certain ceremonies/meetings like:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Stand-up&lt;/strong>: 15 min (or less) to keep everyone in the team sync and updated about the work and call out for action when
anyone is blocked or needs special attention or help.&lt;/li>
&lt;li>&lt;strong>Refinement&lt;/strong>: 2h? meeting to make sure the tickets are in a good shape before planning them to be worked on in the next
sprint.&lt;/li>
&lt;li>&lt;strong>Planning&lt;/strong>: 2h? meeting to plan the work to be done in the next sprint.&lt;/li>
&lt;li>&lt;strong>Demo/Review&lt;/strong>: 2h? meeting to show the work done for the whole team, stakeholders and other interested people.&lt;/li>
&lt;li>&lt;strong>Retrospective&lt;/strong>: 2h? meeting intended to enable the team to reflect and improve.&lt;/li>
&lt;/ul>
&lt;p>The critical question is how your team organizes these meetings and, most important of all, how effective these are.
These above are just some of the important meetings you have in any “Scrum Team” nowadays.&lt;/p>
&lt;p>Still, apart from those, you might encounter a lot of additional meetings that pile up, and suddenly your entire working
day is gone, and you feel you didn’t produce the value you expected. Unless your job is being in meetings every time,
like coordinating projects and talking to people all the time, it seems something is wrong.&lt;/p>
&lt;h3 id="boring-meetings">Boring meetings
&lt;a class="heading-anchor" href="#boring-meetings" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Have you ever been in any of those meetings and thought, “&lt;em>This is boring, what a waste of time…&lt;/em>”. Well, I’ve
experienced that more than once. Who’s to blame? That would be the very first question that could come to your mind.
Followed by, “&lt;em>My boss, obviously, because he/she organized that meeting, to which I got invited, therefore I am forced
to attend, and this wasting time is their fault.&lt;/em>”&lt;/p>
&lt;p>This is a tricky question, and I don’t think it is an honest answer. However, there is an easy explanation for this
answer: pushing away responsibilities and blaming others rather than yourself is way easier.&lt;/p>
&lt;p>“&lt;em>I am forced to attend, and this wasting time is their fault&lt;/em>” it could be that that’s actually the actual fact.
You were really forced, and you’re wasting your time, and there is no other way… but is there no way to act on it,
really?&lt;/p>
&lt;p>When something doesn’t work the way I expect (e.g., I don’t like the outcome, or I think something is off), before
blaming and pushing away responsibilities to others, I want to reflect on it and identify the root of the issue. What
could I do to make the situation better?&lt;/p>
&lt;hr />
&lt;h2 id="what-can-you-do-about-it">What can you do about it?
&lt;a class="heading-anchor" href="#what-can-you-do-about-it" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Coming back to this context of “many meetings”, if you see yourself in a meeting again that feels off or boring, try
asking yourself:&lt;/p>
&lt;blockquote>
&lt;p>Am I feeling bored? Why so? Is it possible that I am not participating in the desired outcome of the meeting? And if
so, is my presence here in this meeting really necessary? Could I simply ask for a summary afterward and jump outside
the meeting to do something more productive?&lt;/p>
&lt;p>Contrarily, is it OK to feel bored in this meeting? Or should I participate and engage with my peers to
contribute to the outcome of the meeting?&lt;/p>
&lt;/blockquote>
&lt;p>In these situations, I encounter a pattern such as:&lt;/p>
&lt;ul>
&lt;li>If the meeting is not boring, it is productive and will produce a rich outcome for you and, hopefully, all participants.&lt;/li>
&lt;li>If the meeting is boring, then either A) it is OK to be boring, politely ask to leave, and you will get the summary
afterward, or B) it is not OK to be boring. Your participation is necessary for the outcome of the meeting. Try being
more engaging with your peers, and the meeting won’t be boring.&lt;/li>
&lt;/ul>
&lt;p>In the end, there are a lot of strategies, and it’s up to you to act on them whenever you see something that could be
improved.&lt;/p>
&lt;p>It’s OK to point out the “&lt;em>elephant in the room&lt;/em>” and ask for help to improve any situation you think (or feel) is not
working as it should.&lt;/p>
&lt;p>&lt;img src="/images/blog/2022-12-06/footer.webp" alt="blog-footer" />&lt;/p></content></entry><entry xml:lang="en"><title>Working Agile with Non-Agile Teams</title><subtitle>How can you work with other teams that aren't agile?</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><published>2022-11-11T00:00:00+00:00</published><updated>2022-11-11T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/working-agile-with-non-agile-teams/"/><id>https://chemaclass.com/blog/working-agile-with-non-agile-teams/</id><summary type="html">You apply the extreme programming values and practices. So how do you work with the teams around you that are not agile?</summary><content type="html">&lt;p>Let’s assume you already know what the &lt;a href="/readings/clean-agile/">agile manifesto&lt;/a> is. Let’s consider that you apply most of the “extreme
programming” values, principles, and practices. How can you work with other teams that aren’t agile?&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;blockquote>
&lt;ul>
&lt;li>Individuals and interactions over processes and tools&lt;/li>
&lt;li>Working software over comprehensive documentation&lt;/li>
&lt;li>Customer collaboration over contract negotiation&lt;/li>
&lt;li>Responding to change over following a plan&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>You’re using short feedback loops, where things are constantly changing. You can feel that the team is alive and
every one is essential.&lt;/p>
&lt;p>You &lt;strong>embrace the change&lt;/strong> to the point that you &lt;strong>enjoy&lt;/strong> going out of your comfort zone whenever needed. Seeking to
create &lt;strong>value&lt;/strong> for your team and its dynamics, and always considering personal growth.&lt;/p>
&lt;p>But sure, let’s assume all that, and everything else I might have missed regarding “&lt;strong>agility&lt;/strong>,” how could you work
with an external team that is not agile? How could your “perfectly agile team” work with another group of people with
nothing to do with software? For example, a doctor.&lt;/p>
&lt;p>A doctor has no time to learn about your “agile values and principles for software development.” A doctor has no time to
learn about “&lt;a href="/blog/update-your-team-to-be-more-extreme/">extreme programming&lt;/a>.” Similarly, they don’t have time to learn about testing, design, architecture, and
&lt;strong>good practices&lt;/strong> related to software in general.&lt;/p>
&lt;p>How could you create a &lt;strong>bridge&lt;/strong> between that doctor and your software team?&lt;/p>
&lt;h2 id="how-could-you-work-agile-with-that-doctor">How could you work agile with that doctor?
&lt;a class="heading-anchor" href="#how-could-you-work-agile-with-that-doctor" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If you need to work with that doctor is because he/she should be a domain expert. I suggest getting one or two of your
team members to meet with that expert for 30/60 min, so they can talk and share their impressions. And then repeat this
as much as possible to shorten the feedback loop. For example, once a week.&lt;/p>
&lt;p>Collecting those requirements and impressions from the experts and then driving the design of your software according to
that is &lt;a rel="external" href="https://en.wikipedia.org/wiki/Domain-driven_design">Domain-Driven Design&lt;/a>. You can find a lot of documentation
about &lt;em>DDD&lt;/em> in books (like &lt;em>&lt;a href="/readings/domain-driven-design-distilled">Domain-Driven Design Distilled&lt;/a>&lt;/em>) or in many
blogs on the Internet.&lt;/p>
&lt;p>However, the critical aspect here is not what requirements or impressions are &lt;em>being resolved&lt;/em> but &lt;strong>how&lt;/strong>.
How could you work agile with that doctor?&lt;/p>
&lt;p>&lt;img src="/images/blog/2022-11-11/middle.webp" alt="blog-middle" />&lt;/p>
&lt;blockquote>
&lt;p>Agile is about quick feedback. It’s about effective communication and reducing waste while aiming for simplicity.&lt;/p>
&lt;/blockquote>
&lt;h3 id="by-truly-applying-these-five-values-you-re-already-acting-agile">By truly applying these five values, you’re already acting agile
&lt;a class="heading-anchor" href="#by-truly-applying-these-five-values-you-re-already-acting-agile" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Communication&lt;/li>
&lt;li>Feedback&lt;/li>
&lt;li>Simplicity&lt;/li>
&lt;li>Courage&lt;/li>
&lt;li>Respect&lt;/li>
&lt;/ul>
&lt;p>These &lt;strong>abstract goals&lt;/strong> apply to any profession, and even life, not just software.&lt;/p>
&lt;blockquote>
&lt;p>Continuous communication helps shorten the feedback loop, which simplifies the tasks. Always with the courage to
address the truth and respect for each other.&lt;/p>
&lt;/blockquote>
&lt;h3 id="practices-are-the-things-that-you-do">Practices are the things that you do
&lt;a class="heading-anchor" href="#practices-are-the-things-that-you-do" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Sit Together&lt;/li>
&lt;li>Pair Programming&lt;/li>
&lt;li>Test First&lt;/li>
&lt;li>Incremental Design&lt;/li>
&lt;li>and many more&lt;/li>
&lt;/ul>
&lt;p>And despite having a technical name, they might apply to any profession:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>Sit Together &amp;amp; Pair Programming: &lt;strong>think and do&lt;/strong> with other peers&lt;/li>
&lt;li>Test First: &lt;strong>verify your assumptions&lt;/strong> first, then solve the problem&lt;/li>
&lt;li>Incremental Design: whatever you do, &lt;strong>make it better&lt;/strong> incrementally&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;h3 id="principles-guide-and-motivate-the-practices-to-the-values">Principles guide and motivate the practices to the values
&lt;a class="heading-anchor" href="#principles-guide-and-motivate-the-practices-to-the-values" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Mutual Benefit&lt;/li>
&lt;li>Diversity&lt;/li>
&lt;li>Failure&lt;/li>
&lt;li>Opportunity&lt;/li>
&lt;li>Baby Steps&lt;/li>
&lt;li>Quality&lt;/li>
&lt;li>and many more&lt;/li>
&lt;/ul>
&lt;p>Mutual benefit is the most important because it’s about finding practices that benefit us now, us later, and the
customer too.&lt;/p>
&lt;blockquote>
&lt;p>Other principles include the diversity of ideas. Don’t be afraid of failure. Look at everything you do as
an opportunity for learning. Avoid giant steps because they have a higher risk of failing. Aim for a high-quality system
because they are more predictable and easier to change.&lt;/p>
&lt;/blockquote>
&lt;h2 id="the-question-remains-are-you-agile">The question remains: are you agile?
&lt;a class="heading-anchor" href="#the-question-remains-are-you-agile" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>I truly believe an agile team is the one who can cope with change at team level. Therefore, you must first master
agile within your team, and then you can collaborate with other teams in an “agile way”.&lt;/p>
&lt;p>Once you have internalized these points above, you can apply them while working with anyone from any team.&lt;/p>
&lt;p>While these isolated ideas are good, they are even more powerful when combined. They create an atmosphere of curiosity
and active learning. It might even wake up some &lt;strong>passion&lt;/strong> for your profession that builds an aura of team cohesion, and
just like that, the team breathes on its own.&lt;/p>
&lt;p>Everyone cares and takes full responsibility for keeping the team healthy by building &lt;strong>trust&lt;/strong>. There is no fear of healthy
&lt;strong>conflicts&lt;/strong>. They feel empowered and &lt;strong>accountable&lt;/strong> to their commitments. The team &lt;strong>celebrates&lt;/strong> their results and
learns from their &lt;strong>mistakes&lt;/strong>; there is no need for masks anymore.&lt;/p>
&lt;p>That’s when the magic starts to happen, and suddenly you can work agile with any team, especially yours.&lt;/p>
&lt;p>&lt;img src="/images/blog/2022-11-11/footer.webp" alt="blog-footer" />&lt;/p></content></entry><entry xml:lang="en"><title>Different Beliefs About Software Quality</title><subtitle>Some thoughts about software quality among your team</subtitle><category term="clean-code" scheme="https://chemaclass.com/tags/clean-code/" label="Clean Code"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><category term="career" scheme="https://chemaclass.com/tags/career/" label="Career"/><published>2022-10-08T00:00:00+00:00</published><updated>2022-10-08T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/different-beliefs-about-software-quality/"/><id>https://chemaclass.com/blog/different-beliefs-about-software-quality/</id><summary type="html">What to do when working on "bad software" and you can't improve it because it is against the beliefs of your peers? Should you change the company?</summary><content type="html">&lt;p>I recently got a great question on Twitter which got me thinking for a while and I decided to share my thoughts about it.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;hr />
&lt;h2 id="the-tweet-that-started-this">The tweet that started this
&lt;a class="heading-anchor" href="#the-tweet-that-started-this" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>But first, some context: I am feeling great because the codebase where I work is getting better and better, so I am tweeting this:&lt;/p>
&lt;blockquote>
&lt;p>“As software improves with time, you can feel you’re doing right.”&lt;/p>
&lt;/blockquote>
&lt;p>And then I got a question asking for suggestions:&lt;/p>
&lt;p>&lt;img src="/images/blog/2022-10-08/tweet.webp" alt="blog-tweet" />&lt;/p>
&lt;p>So there we go…&lt;/p>
&lt;hr />
&lt;h2 id="my-answer">My answer
&lt;a class="heading-anchor" href="#my-answer" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="create-agreements">Create agreements
&lt;a class="heading-anchor" href="#create-agreements" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The first thing is to create agreements about what quality software means for your team and yourself. This helps clarify
what software culture you want to establish and work towards that direction. Leaving your company should be the &lt;em>last
resort&lt;/em> once you have no other option.&lt;/p>
&lt;p>Before thinking about leaving your company, I would ask you:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Why do you think&lt;/strong> you cannot improve the working codebase of your company?&lt;/li>
&lt;li>&lt;strong>What can you do&lt;/strong> to reduce the friction between your different beliefs regarding what quality means for software?&lt;/li>
&lt;/ul>
&lt;p>There is no perfect codebase to work on because software is a living entity and constantly changes. So, at least for me,
quality software is the one that can cope with change smoothly.&lt;/p>
&lt;p>Once you have agreed on that goal, and while there are multiple ways to achieve that result, my favorite way of working
is keeping an &lt;strong>&lt;a href="/blog/what-kills-agility/">agile&lt;/a> mindset&lt;/strong> with doses of &lt;strong>&lt;a href="/blog/update-your-team-to-be-more-extreme/">extreme programming&lt;/a>&lt;/strong> values, principles, and practices in mind.&lt;/p>
&lt;h3 id="software-is-about-people">Software is about people
&lt;a class="heading-anchor" href="#software-is-about-people" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Software is not just about writing &lt;em>clean and solid code&lt;/em>. This is indeed desired, and we should aim for that, but we must
first understand why we want that. The “&lt;em>why&lt;/em>” is based on the &lt;strong>values&lt;/strong> that you have as a team.&lt;/p>
&lt;p>If you don’t share the same purpose, the same “why,” then you won’t &lt;em>enjoy&lt;/em> working together, and in such a case, I would
advise looking for another company that shares your values. But, before that, I would strongly suggest fixing the deeper
issue and helping your team improve.&lt;/p>
&lt;h3 id="understanding-your-why">Understanding your why
&lt;a class="heading-anchor" href="#understanding-your-why" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>You first need to deeply understand your “&lt;em>why&lt;/em>” so you can transmit this to your peers and the people around you. Have
you tried all you can to create awareness about your “&lt;em>why&lt;/em>”?&lt;/p>
&lt;p>Some ideas include encouraging collaborative programming (pair/mob), presenting some internal tech talks, creating a
culture of sharing knowledge on a regular daily basis, creating awareness about the current status quo, and looking for
opportunities to improve everywhere.&lt;/p>
&lt;h3 id="your-career-path">Your career path
&lt;a class="heading-anchor" href="#your-career-path" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>If, after several months of (really) trying these ideas, none of them work, look for a new company that shares your
beliefs. After all, you’re the first and primary responsible person for taking care of your career path.&lt;/p>
&lt;blockquote>
&lt;p>Original &lt;a rel="external" href="https://x.com/Chemaclass/status/1578425454562021376">twitter thread&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;hr />
&lt;p>&lt;img src="/images/blog/2022-10-08/footer.webp" alt="blog-footer" />&lt;/p>
&lt;h2 id="extra-thoughts">Extra thoughts
&lt;a class="heading-anchor" href="#extra-thoughts" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>If &lt;strong>you want something to be different&lt;/strong>, don’t wait till it’s changed automatically. Try to &lt;strong>change it&lt;/strong>; if it’s not
working, leave it. Maybe you don’t belong in that place.&lt;/p>
&lt;p>On the other hand, it’s crucial to reflect if you see that pattern often repeating (changing companies too quickly). In
such a case, maybe the problem isn’t the companies but yourself.&lt;/p>
&lt;p>Software development is not just about code but &lt;strong>business&lt;/strong>. It’s essential to be aware of finding a fair &lt;em>trade-off&lt;/em>
between speed, costs, and quality, depending on the situation. You might want to use some &lt;em>tech debt&lt;/em> to conquer the
market as soon as possible.&lt;/p>
&lt;p>It doesn’t make sense to have “low quality” as part of the identity of any team. Every team has certain quality
expectations. Therefore, the &lt;strong>key&lt;/strong> here is to &lt;strong>agree on what good quality is&lt;/strong>.&lt;/p>
&lt;aside class="kudos">
&lt;span class="kudos__icon" aria-hidden="true">🧠&lt;/span>
&lt;div class="kudos__content">
&lt;p>Thanks to my former Engineer Manager, Evgenii Sokolov, who inspired me to write these extra lines after sharing the original post.&lt;/p>
&lt;/div>
&lt;/aside></content></entry><entry xml:lang="en"><title>Continuous Discovery Habits</title><subtitle>Discover Products that Create Customer Value and Business Value</subtitle><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2022-08-21T00:00:00+00:00</published><updated>2022-08-21T00:00:00+00:00</updated><author><name>
Teresa Torres</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/continuous-discovery-habits/"/><id>https://chemaclass.com/readings/continuous-discovery-habits/</id><summary type="html">Teresa Torres on a decision-making process that keeps product teams in touch with customers and improving what they ship.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>This book explores how product managers and designers can keep making a positive impact on their customers’ lives.
It explores an optimal decision-making process for product teams, so that they can continue to improve their offerings.&lt;/p>
&lt;h4 id="part-1-what-is-continuous-discovery">Part 1: What is continuous discovery?
&lt;a class="heading-anchor" href="#part-1-what-is-continuous-discovery" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ol>
&lt;li>The What and Why of Continuous Discovery&lt;/li>
&lt;li>A Common Framework for Continuous Discovery&lt;/li>
&lt;/ol>
&lt;h4 id="part-2-the-continuous-discovery-habits">Part 2: The continuous discovery habits
&lt;a class="heading-anchor" href="#part-2-the-continuous-discovery-habits" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ol start="3">
&lt;li>Focusing on Outcomes Over Outputs&lt;/li>
&lt;li>Visualizing What You Know&lt;/li>
&lt;li>Continuous Interviewing&lt;/li>
&lt;li>Mapping the Opportunity Space&lt;/li>
&lt;li>Prioritizing Opportunities, Not Solutions&lt;/li>
&lt;li>Supercharged Ideation&lt;/li>
&lt;li>Identifying Hidden Assumptions&lt;/li>
&lt;li>&lt;a href="/blog/the-art-of-testing/">Testing&lt;/a> Assumptions, Not Ideas&lt;/li>
&lt;li>Measuring Impact&lt;/li>
&lt;li>Managing the Cycles&lt;/li>
&lt;li>Show Your Work&lt;/li>
&lt;/ol>
&lt;h4 id="part-3-developing-your-continuous-discovery-habits">Part 3: Developing your continuous discovery habits
&lt;a class="heading-anchor" href="#part-3-developing-your-continuous-discovery-habits" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ol start="14">
&lt;li>Start Small, and Iterate&lt;/li>
&lt;li>What’s Next?&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Focusing on outcomes over outputs will help you create the right products for your customers.&lt;/p>
&lt;/blockquote>
&lt;hr />
&lt;h3 id="the-what-why-of-continuous-discovery">The What &amp;amp; Why of Continuous Discovery
&lt;a class="heading-anchor" href="#the-what-why-of-continuous-discovery" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/yNCcQODWYh0"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>The Project Management Triangle</title><subtitle>The Iron Triangle</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2022-07-25T00:00:00+00:00</published><updated>2022-07-25T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/the-project-management-triangle/"/><id>https://chemaclass.com/blog/the-project-management-triangle/</id><summary type="html">A triangle of time, quality and cost. it's an indicator that these three parameters are interconnected. You can fix one or two of them, but not three.</summary><content type="html">&lt;p>A triangle of time, quality and cost. It’s an indicator that these three parameters are interconnected.
You can fix one or two of them, but not three.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h3 id="the-triple-constraint">The triple constraint
&lt;a class="heading-anchor" href="#the-triple-constraint" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Cheap and fast: the quality will suffer.&lt;/li>
&lt;li>Cheap and good: it will take more time.&lt;/li>
&lt;li>Fast and good: it will push the price up.&lt;/li>
&lt;/ul>
&lt;h2 id="waterfall-vs-agile">Waterfall vs Agile
&lt;a class="heading-anchor" href="#waterfall-vs-agile" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>In software methodologies, you can adapt this idea by changing &lt;strong>quality&lt;/strong> to &lt;strong>scope&lt;/strong>:&lt;/p>
&lt;p>&lt;img src="/images/blog/2022-07-25/middle.webp" alt="triangle with scope replacing quality" />&lt;/p>
&lt;h3 id="waterfall">Waterfall
&lt;a class="heading-anchor" href="#waterfall" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>In &lt;a href="/blog/what-is-waterfall/">waterfall&lt;/a> projects, the scope is fixed, while the time and money will be more variable. Depending if it’s more
important finishing on time or on budget.&lt;/p>
&lt;h3 id="agile">Agile
&lt;a class="heading-anchor" href="#agile" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>On the other hand, in an &lt;a href="/blog/what-kills-agility/">agile&lt;/a> environment we usually work on a few weeks’ iterations, so this is the fix part: the
time, in order to deliver value as soon as possible, and so get &lt;a href="/blog/ship-show-ask/">feedback&lt;/a> and recalibrate again and again.&lt;/p>
&lt;p>The costs in a software team are also fixed by the people that belong to it.&lt;/p>
&lt;blockquote>
&lt;p>Time is fixed, cost is fixed, so by the rule of the iron triangle, the scope must be variable.&lt;/p>
&lt;/blockquote>
&lt;p>An agile team cannot predict the scope of their work in one-year project, however, they don’t need to. Their &lt;strong>focus
should be on deliver constantly value as much as possible&lt;/strong>, or at least at the end of every iteration, reflecting their
learnings and recalibrating their priorities again and again.&lt;/p>
&lt;p>As you can see, one funny fact is that the waterfall and agile share an inverted triangle with their fixed and variables
parameters. Really interesting indeed.&lt;/p>
&lt;p>&lt;img src="/images/blog/2022-07-25/footer.webp" alt="inverted triangles for waterfall and agile" />&lt;/p>
&lt;h2 id="reference">Reference
&lt;a class="heading-anchor" href="#reference" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/MKEyF2dmGaM"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Modern Software Engineering</title><subtitle>Doing What Works to Build Better Software Faster</subtitle><category term="software-design" scheme="https://chemaclass.com/tags/software-design/" label="Software Design"/><category term="testing" scheme="https://chemaclass.com/tags/testing/" label="Testing"/><category term="architecture" scheme="https://chemaclass.com/tags/architecture/" label="Architecture"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><published>2022-06-29T00:00:00+00:00</published><updated>2022-06-29T00:00:00+00:00</updated><author><name>
David Farley</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/modern-software-engineering/"/><id>https://chemaclass.com/readings/modern-software-engineering/</id><summary type="html">Dave Farley presents software development as engineering at every level: becoming expert at learning and managing complexity.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>This book presents software development as an engineering practice at every level.
To master software engineering, we must become experts at learning and managing complexity.&lt;/p>
&lt;h3 id="optimize-for-learning">Optimize for learning
&lt;a class="heading-anchor" href="#optimize-for-learning" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>To optimize for learning, the book presents five behaviors to consider:&lt;/p>
&lt;ul>
&lt;li>Working iteratively&lt;/li>
&lt;li>Feedback&lt;/li>
&lt;li>Incrementalism&lt;/li>
&lt;li>Empiricism&lt;/li>
&lt;li>Being Experimental&lt;/li>
&lt;/ul>
&lt;p>The main idea is to work on small steps, collect &lt;a href="/blog/ship-show-ask/">feedback&lt;/a>, and adjust.&lt;/p>
&lt;h3 id="optimize-for-managing-complexity">Optimize for managing complexity
&lt;a class="heading-anchor" href="#optimize-for-managing-complexity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The book presents other five ideas to manage complexity:&lt;/p>
&lt;ul>
&lt;li>Modularity&lt;/li>
&lt;li>Cohesion&lt;/li>
&lt;li>Separation of Concerns&lt;/li>
&lt;li>Information Hiding and Abstraction&lt;/li>
&lt;li>Managing Coupling&lt;/li>
&lt;/ul>
&lt;p>We need to manage the complexity of our systems.&lt;/p>
&lt;h3 id="tools-to-support-engineering-in-software">Tools to support engineering in software
&lt;a class="heading-anchor" href="#tools-to-support-engineering-in-software" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Going deeper into some ideas that were already discussed in the book, like:&lt;/p>
&lt;ul>
&lt;li>Testability&lt;/li>
&lt;li>Deployability&lt;/li>
&lt;li>Controlling the variables&lt;/li>
&lt;li>Continuous Delivery&lt;/li>
&lt;/ul>
&lt;hr />
&lt;p>A great video explaining the core ideas behind this book by his author:&lt;/p>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/TRqYQnCfgH8"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Team Topologies</title><subtitle>Organizing Business and Technology Teams for Fast Flow</subtitle><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="architecture" scheme="https://chemaclass.com/tags/architecture/" label="Architecture"/><category term="devops" scheme="https://chemaclass.com/tags/devops/" label="Devops"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><published>2022-03-31T00:00:00+00:00</published><updated>2022-03-31T00:00:00+00:00</updated><author><name>
Matthew Skelton</name></author><author><name>
Manuel Pais</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/team-topologies/"/><id>https://chemaclass.com/readings/team-topologies/</id><summary type="html">Team structures and interaction modes that let teams adapt quickly and keep software delivery both fast and safe.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>Team Topologies focuses on how to set up dynamic team structures and interaction modes that can help teams adapt quickly to new conditions, and achieve fast and safe software delivery.&lt;/p>
&lt;h2 id="team-structure">Team structure
&lt;a class="heading-anchor" href="#team-structure" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>High cohesion: Group related things together.&lt;/li>
&lt;li>Loose &lt;a href="/readings/recipes-for-decoupling/">coupling&lt;/a>: There must be clear boundaries between the teams.&lt;/li>
&lt;li>Cognitive load: It’s like the RAM of the team. The team can burn down if you load with more than the team can handle.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>In order to avoid bottleneck teams, you need to make sure their cognitive load is not very high.&lt;/p>
&lt;/blockquote>
&lt;h2 id="conway-s-law">Conway’s Law
&lt;a class="heading-anchor" href="#conway-s-law" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>The organization structure will influence the architecture of the team.&lt;/li>
&lt;li>Conway’s Law says that organizations will design systems that copy their communication structure.&lt;/li>
&lt;li>In other words, there will be no focus on the optimal architecture for the project.&lt;/li>
&lt;li>First you need to define the architecture of the project, and then form the teams.&lt;/li>
&lt;/ul>
&lt;h2 id="team-first-thinking">Team-First Thinking
&lt;a class="heading-anchor" href="#team-first-thinking" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Who is in the team matters less than the team dynamics.&lt;/li>
&lt;li>When measuring performance, teams matter more than individuals.&lt;/li>
&lt;li>Team = group of 5-9 who work towards a shared goals as a unit.
&lt;ul>
&lt;li>Check &lt;a href="/blog/dunbar-number/">Dunbar number&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Forming a team takes from 2 weeks to 3 months.&lt;/li>
&lt;li>Cognitive load is the total amount of mental effort being used in the working memory.&lt;/li>
&lt;li>3 Types of cognitive load:
&lt;ul>
&lt;li>Intrinsic: Fundamentals of the problem space. Example: programming language.&lt;/li>
&lt;li>Extraneous: Environment related. Example: how to deploy.&lt;/li>
&lt;li>Germane: Special &lt;a href="/readings/digital-minimalism/">attention&lt;/a> is required. Example: business domain.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Heuristics:
&lt;ul>
&lt;li>3 types of domain: Simple, complicated, complex.&lt;/li>
&lt;li>If the domain is too big, split it into subdomains.&lt;/li>
&lt;li>One team, either:
&lt;ul>
&lt;li>2-3 simple domains.&lt;/li>
&lt;li>1 complex domain.&lt;/li>
&lt;li>Avoid 2 complicated domains, better split the team.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Define a Team API:
&lt;ul>
&lt;li>Code: endpoints, libraries, clients, …&lt;/li>
&lt;li>Versioning.&lt;/li>
&lt;li>Documentation.&lt;/li>
&lt;li>Practices and principles.&lt;/li>
&lt;li>Communication tools.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="team-topologies">Team Topologies
&lt;a class="heading-anchor" href="#team-topologies" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;blockquote>
&lt;p>Instead of structuring teams according to know-how or activities, organize teams according to business domain areas.&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>Success of topology depends both on team members and surrounding environment, teams and interactions.&lt;/li>
&lt;li>Split responsibilities to breakdown silos.&lt;/li>
&lt;li>Types of dependencies: Knowledge, task, and resource.&lt;/li>
&lt;li>Four types of teams:
&lt;ul>
&lt;li>Stream-aligned: deliver features, projects, products to the market asap.&lt;/li>
&lt;li>Enabling: grow the capabilities for the Stream-aligned team(s).&lt;/li>
&lt;li>Complicated-subsystem: reduce the cognitive load of the Stream-aligned team(s).&lt;/li>
&lt;li>Platform: make the Stream-aligned team(s) autonomous.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="team-interactions">Team Interactions
&lt;a class="heading-anchor" href="#team-interactions" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Collaboration. Work closely between teams with different skill sets.&lt;/li>
&lt;li>X-as-a-Service. Clear ownership, small cognitive load.&lt;/li>
&lt;li>Facilitation. Helping to clear impediments, focus on quality interactions between other teams.&lt;/li>
&lt;/ul></content></entry><entry xml:lang="en"><title>Update Your Team to Be More Extreme</title><subtitle>How can you help your peers to embrace the change?</subtitle><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="mentoring" scheme="https://chemaclass.com/tags/mentoring/" label="Mentoring"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><published>2022-02-26T00:00:00+00:00</published><updated>2023-03-23T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/update-your-team-to-be-more-extreme/"/><id>https://chemaclass.com/blog/update-your-team-to-be-more-extreme/</id><summary type="html">Software demands non-stop learning. How to create the spaces your team needs to leave the comfort zone and embrace change.</summary><content type="html">&lt;p>Our software profession is constantly evolving; it demands a non-stop learning process. We must embrace the change in our industry.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;p>We need to create spaces to get out of our comfort zone, so our cognitive brain can train and improve how to adapt to our surroundings, which are constantly transforming.&lt;/p>
&lt;h2 id="why-code-katas-tech-talks-or-research-fridays">Why code katas, tech talks or research Fridays?
&lt;a class="heading-anchor" href="#why-code-katas-tech-talks-or-research-fridays" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The goal is to help create an environment that aims for continuous improvement towards looking for learning everywhere, all the time, as the core attitude for the individuals and the group.&lt;/p>
&lt;h3 id="create-learnings-opportunities">Create learnings opportunities
&lt;a class="heading-anchor" href="#create-learnings-opportunities" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Schedule some time every X weeks for practicing together.&lt;/p>
&lt;/blockquote>
&lt;p>At the end of each iteration, or even 2 or 4 weeks, we celebrate and work on katas in pairs/mob for 2 hours. That space is also an opportunity to create an internal tech-talk presentation to share exciting knowledge with the team non-directly-related to our “regular daily business”.&lt;/p>
&lt;p>The goal is to get out of our comfort zone, improving our recognition for change in general while learning other subjects regularly.&lt;/p>
&lt;h2 id="what-is-a-code-kata">What is a code kata?
&lt;a class="heading-anchor" href="#what-is-a-code-kata" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>As a group, software developers don’t practice enough. Most of our learning takes place on the job, so most of our mistakes get made there as well.&lt;/p>
&lt;p>The term “kata” comes from the repetitive movements done in karate that help you improve your fighting skills.&lt;/p>
&lt;p>Code Katas exists to help developers get the same benefits as practicing in any other profession. There are simple, artificial exercises that let you experiment and learn without the pressure in a production environment.&lt;/p>
&lt;blockquote>
&lt;p>There are no right or wrong answers in any software kata: the benefit comes from the process, not the result.&lt;/p>
&lt;/blockquote>
&lt;h3 id="motivation">Motivation
&lt;a class="heading-anchor" href="#motivation" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Work on &lt;a href="/blog/the-art-of-refactoring/">refactoring&lt;/a> techniques.&lt;/li>
&lt;li>Work on TDD examples.&lt;/li>
&lt;li>Work on &lt;a href="/readings/clean-architecture/">SOLID&lt;/a> principles.&lt;/li>
&lt;li>Work on live coding sessions.&lt;/li>
&lt;li>Work on driver-navigator concepts.&lt;/li>
&lt;li>Work on team cohesion.&lt;/li>
&lt;li>Have fun while learning and practicing together.&lt;/li>
&lt;/ul>
&lt;p>If you’re interested in my thoughts about TDD and katas, I wrote a post about it not long ago:
&lt;a href="/blog/test-driven-development/">Test-Driven Development&lt;/a>.&lt;/p>
&lt;h2 id="what-is-a-tech-talk">What is a tech-talk?
&lt;a class="heading-anchor" href="#what-is-a-tech-talk" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Tech talks allow us to share some knowledge related to our tech industry with our team members.&lt;/p>
&lt;p>It can be any FrontEnd, BackEnd, DevOps related. But I encourage also:&lt;/p>
&lt;ul>
&lt;li>a new programming language that you are learning,&lt;/li>
&lt;li>a summary of one book that you finished,&lt;/li>
&lt;li>a new technology that you are studying or feeling curious about,&lt;/li>
&lt;li>a piece of software that you would like to share and present thoughts about it,&lt;/li>
&lt;li>a new tool that helps you to improve your productivity,&lt;/li>
&lt;li>really: &lt;u>anything related to creating value or knowledge.&lt;/u>&lt;/li>
&lt;/ul>
&lt;h3 id="how-can-i-present-a-tech-talk">How can I present a tech talk?
&lt;a class="heading-anchor" href="#how-can-i-present-a-tech-talk" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>I wrote this article with some tips about &lt;a href="/blog/improve-your-tech-talk/">how to improve your tech-talk&lt;/a>. Some key
questions that might help you to find something on your own:&lt;/p>
&lt;ul>
&lt;li>What have you learned recently (in the last X months)?&lt;/li>
&lt;li>What knowledge might be interesting to be shared with your peers?&lt;/li>
&lt;li>Which aspect of yourself you’d like to improve professionally and/or personally?&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Just one rule: Be curious and “&lt;a href="/blog/embrace-the-change/">embrace the change&lt;/a>.”&lt;/p>
&lt;/blockquote>
&lt;h2 id="research-and-learning-fridays">Research and learning Fridays
&lt;a class="heading-anchor" href="#research-and-learning-fridays" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Block the last Friday of the month for research and learning purposes.
The whole team will have a dedicated space for growth and experiment.&lt;/p>
&lt;p>It’s crucial to build trust with your team, so you all know everyone will use this time as good as possible. Don’t micromanage this time forcing keeping a record in a wikipage with what everyone does in detail.&lt;/p>
&lt;p>Although, it would be nice that the team shares what they do during this time, mostly to create transparency among themselves. A verbal announcement to the peers the day before, with their intentions. Even the day after with the learnings key-takeaways.&lt;/p>
&lt;h3 id="summary">Summary
&lt;a class="heading-anchor" href="#summary" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>You can help your team to be more extreme by helping with a dedicated team space for growth and experimentation.&lt;/p>
&lt;ul>
&lt;li>Provide flexibility to experiment with these ideas as they see fit.&lt;/li>
&lt;li>It is an opportunity for self-growth and learning at the same time.&lt;/li>
&lt;li>It is, ultimately, up to the person and the team.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Do not micromanage this dedicated time. Focus on the outcome. Help your team to grow, and they will enjoy growing with you.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="/images/blog/2022-02-26/footer.webp" alt="blog-footer" />&lt;/p>
&lt;h2 id="tech-talk">Tech Talk
&lt;a class="heading-anchor" href="#tech-talk" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>After writing this blog post (originally in Feb, 2022), I was invited to do
a &lt;a href="/talks/update-your-team-to-be-more-extreme">tech talk&lt;/a> in different conferences about this topic.&lt;/p></content></entry><entry xml:lang="en"><title>Red Work vs Blue Work</title><subtitle>Managing the two kinds of work</subtitle><category term="leadership" scheme="https://chemaclass.com/tags/leadership/" label="Leadership"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><published>2021-10-21T00:00:00+00:00</published><updated>2021-10-21T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/red-work-blue-work/"/><id>https://chemaclass.com/blog/red-work-blue-work/</id><summary type="html">Blue Work and Red Work, the two modes David Marquet describes in Leadership is Language. Different mindsets, and different languages.</summary><content type="html">&lt;p>“Blue Work” and “Red Work” are concepts that &lt;a rel="external" href="https://davidmarquet.com/">David Marquet&lt;/a>
describes in his book &lt;a href="/readings/leadership-is-language/">Leadership is Language&lt;/a>. Both require different mindsets and
have different languages.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;blockquote>
&lt;p>“Doing” in our traditional &lt;a href="/blog/the-beauty-of-leadership/">leadership&lt;/a> style will not take us to where we need to be in the future.&lt;/p>
&lt;/blockquote>
&lt;h2 id="what-is-red-work">What is “Red Work”?
&lt;a class="heading-anchor" href="#what-is-red-work" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Red Work is about &lt;strong>doing and reducing variability&lt;/strong>. Red Work focuses on a proving mindset and a performance mindset.&lt;/p>
&lt;p>In Red Work, you seek to complete a task without a lot of need for deciding what or how. Red Work is being in control
and taking control. Such as:&lt;/p>
&lt;ul>
&lt;li>Process work and avoid errors.&lt;/li>
&lt;li>Having predictability and controllability.&lt;/li>
&lt;/ul>
&lt;p>We need a mechanism to stop Red Work and ask: &lt;strong>are we doing the right thing?&lt;/strong>&lt;/p>
&lt;h2 id="what-is-blue-work">What is “Blue Work”?
&lt;a class="heading-anchor" href="#what-is-blue-work" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Blue Work is about &lt;strong>deciding, thinking, planning&lt;/strong>. Blue Work focuses on improving with an embarrassing mindset.&lt;/p>
&lt;blockquote>
&lt;p>The correct place to do Blue Work is at the beginning and at the end of a decision point.&lt;/p>
&lt;/blockquote>
&lt;p>Blue Work is crucial for a good starting point, allowing us to decide the best way to do something with the information
that we have right now.&lt;/p>
&lt;p>It’s also important to establish short iterations between the different actions or activities that we want to complete,
so we can have some “Blue Work time” and reflect again. Blue Work is perfect to do retrospectives and see what could be
improved.&lt;/p>
&lt;p>It’s the time to stop and “control the clock”, collaborate and make a commitment for the next iteration. Blue Work is
also about:&lt;/p>
&lt;ul>
&lt;li>Thinking work.&lt;/li>
&lt;li>Decision-making.&lt;/li>
&lt;li>Looking to achieve excellence.&lt;/li>
&lt;li>Getting more people to do independent thinking answers.&lt;/li>
&lt;li>Embracing variability and looking for different inputs.&lt;/li>
&lt;/ul>
&lt;p>Blue Work in isolation is useless. The job of Blue Work is to make Red Work better. Endless Blue Work, planning without
outcome doesn’t bring any real benefits.&lt;/p>
&lt;hr />
&lt;blockquote>
&lt;p>Nowadays, especially in our modern software industry, there is no room for the old school of “Red-Workers” and
“Blue-Workers”, but “Red Work” and “Blue Work”, and everyone should be involved in both.&lt;/p>
&lt;/blockquote>
&lt;p>It is, therefore, everyone’s responsibility to be aware of these different types of work and find a good balance between
them. Leaders involve everyone in both Red Work and Blue Work.&lt;/p>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/OEX1EVc-zjk"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr />
&lt;h3 id="references">References
&lt;a class="heading-anchor" href="#references" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="/readings/leadership-is-language/">Leadership is Language&lt;/a> Book&lt;/li>
&lt;li>&lt;a rel="external" href="https://www.infoq.com/podcasts/david-marquet/">https://www.infoq.com/podcasts/david-marquet/&lt;/a>&lt;/li>
&lt;/ul></content></entry><entry xml:lang="en"><title>Pull Requests vs Pair Programming</title><subtitle>Why choosing when you can have both?</subtitle><category term="pair-programming" scheme="https://chemaclass.com/tags/pair-programming/" label="Pair Programming"/><category term="code-review" scheme="https://chemaclass.com/tags/code-review/" label="Code Review"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2021-04-01T00:00:00+00:00</published><updated>2021-04-01T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/blog/pull-request-vs-pair-prog/"/><id>https://chemaclass.com/blog/pull-request-vs-pair-prog/</id><summary type="html">Let's talk about the benefits of Pull Requests and Pair Programming, and my thoughts on these after some years of experience with them.</summary><content type="html">&lt;p>Let’s talk about the benefits of Pull Requests and Pair Programming, and my thoughts on these after some years of experience with them.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="pull-requests">Pull Requests
&lt;a class="heading-anchor" href="#pull-requests" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>A Pull Request (PR) is basically a way of showing your suggested code changes such that they are easily comparable with the existing source code. This is part of a workflow that helps developers to share knowledge about the changes that are being done within the system.&lt;/p>
&lt;blockquote>
&lt;p>A Pull Request is the moment where you ask your peers to review and check out your code changes.&lt;/p>
&lt;/blockquote>
&lt;p>Usually, it’s also used:&lt;/p>
&lt;ol>
&lt;li>For discussions about code style.&lt;/li>
&lt;li>To spot potential bugs.&lt;/li>
&lt;li>For architectural or design discussions once the solution is done.&lt;/li>
&lt;/ol>
&lt;h3 id="pull-requests-aren-t-the-best-tool-for-everything">Pull Requests aren’t the best tool for everything
&lt;a class="heading-anchor" href="#pull-requests-aren-t-the-best-tool-for-everything" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The main problem with these topics above is that PR’s are usually ready when the feature/bug is already being worked on and in the last stage of its development process.
It [a PR] is an “already changed proposal [I have already worked on this change, here’s the code] to be merged into the current system [someone please look it over]”.&lt;/p>
&lt;p>The concept of “Draft PR” exists to make explicit that a PR is not ready to be merged, so it’s still a “work in progress thing”, but that’s another topic.&lt;/p>
&lt;p>Pull Requests are, indeed, one of the best tools that we have in our industry to share knowledge about the changes that we are doing in the system, but sometimes they might be misused, as for example:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Discussions about code style&lt;/strong>. Code style shouldn’t be discussed in a PR. There should be already a CI running a code style checker, that’s all. If you want to talk about code style, request a change in your code style checker, but not in a random PR.&lt;/li>
&lt;li>&lt;strong>Spot bugs&lt;/strong>. Bugs and desired behavior should be covered by automated tests. The developer is the first responsible person for this topic.&lt;/li>
&lt;li>&lt;strong>Architectural or design discussions&lt;/strong>. Once a particular solution is developed and ready for review, it is usually really hard to “rollback” that idea and rewrite it again. Because “why would you do that? For some subjective opinion? It’s done already. And it seems to work just fine.”&lt;/li>
&lt;/ol>
&lt;p>Having an extra person looking at the changes that we have done for “designing decisions” might be beneficial, but we could have addressed “potential disagreements” in a sooner stage.&lt;/p>
&lt;h3 id="what-should-the-purpose-of-a-pull-request-be">What should the purpose of a Pull Request be?
&lt;a class="heading-anchor" href="#what-should-the-purpose-of-a-pull-request-be" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ol>
&lt;li>Sharing knowledge about the proposed changes with the team.&lt;/li>
&lt;li>Ensuring the team aligns and agrees across the multiples changes that are getting submitted every day in order to keep a healthy direction for the project. Yes, this might include double-checking the outcome design, but… What if that is now too late? How could we solve all those issues?&lt;/li>
&lt;/ol>
&lt;h2 id="pair-programming">Pair Programming
&lt;a class="heading-anchor" href="#pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The concept of “Pair Programming” can be understood from different points of view. Pair thinking and &lt;a href="/blog/effective-pair-programming/">pair programming&lt;/a>, driver-navigator roles concepts, or pure live coding from one side. Actually, this is way easier than it looks like at first instance:&lt;/p>
&lt;ul>
&lt;li>Either you watch and help the other person to write code,&lt;/li>
&lt;li>Or you type while getting another pair of eyes watching and helping you.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Pair Programming helps the team to work together.&lt;/p>
&lt;/blockquote>
&lt;p>Pair programming is the joy of working with an extra brain and another pair of eyes, where the key is to &lt;strong>build a context&lt;/strong> where you two &lt;strong>share the same goal&lt;/strong> in order to find the &lt;strong>best possible solution&lt;/strong>. All of this while learning from each other every single second.
Pair Programming is not about developing the best solution at the very beginning. It’s about making it work, sharing ideas, and finding a better solution together. After that, you can refactor and clean the code.&lt;/p>
&lt;h3 id="pair-programming-is-a-continuous-code-review">Pair Programming is a continuous code review
&lt;a class="heading-anchor" href="#pair-programming-is-a-continuous-code-review" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Pull Requests are an asynchronous way to share code changes, while Pair Programming is totally &lt;strong>synchronous&lt;/strong> because it happens at the same time.&lt;/p>
&lt;p>That said, Pull Requests and Pair Programming aren’t mutually exclusive, they can coexist. They are tools, and we should wisely choose them in order to achieve our objectives.&lt;/p>
&lt;p>The most common fear that I saw while encouraging to do Pair Programming is that some people are shy and they don’t like to have other eyes around them while they are coding because of:&lt;/p>
&lt;ul>
&lt;li>Fear that they don’t know what to code or where to start.&lt;/li>
&lt;li>Fear that others will laugh at their solutions.&lt;/li>
&lt;li>Fear to not succeed in public.&lt;/li>
&lt;li>Fear to not be able to develop the expected solution for multiple reasons: misunderstanding the task or lack of knowledge.&lt;/li>
&lt;li>Fear to change your mind in front of others.&lt;/li>
&lt;li>Fear to discuss and make decisions loud.&lt;/li>
&lt;li>Fear of disagreeing with others.&lt;/li>
&lt;/ul>
&lt;h2 id="after-several-years-of-experience-on-this-topic">After several years of experience on this topic
&lt;a class="heading-anchor" href="#after-several-years-of-experience-on-this-topic" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The pattern which rejects Pair Programing is basically “fear”, and being out of your comfort zone. And this is due to the misunderstanding of the roots of the actual Pair Programming concept.&lt;/p>
&lt;p>Pair Programming is not “to show off in front of your colleagues” or “to be screwed by your peers”, but to be transparent (showing your skills as they really are) and improve as a team lifting up each other.&lt;/p>
&lt;p>Programming is an iterative process that needs a continuous &lt;a href="/blog/the-art-of-refactoring/">refactoring&lt;/a> of our way of thinking in order to achieve better solutions, day by day. Therefore, programming with another person next to you (with a different way of thinking) will help the team to get the best from each other while discarding the waste or bad habits if necessary.&lt;/p>
&lt;p>Pair Programming doesn’t need to be always set for everything. As a tool, it’s flexible, and we can choose how, when and for what reason.&lt;/p>
&lt;p>A personal rule of thumb, before starting tasks that might involve touching multiple modules or complex business rules, think about a quick Pair Thinking/Programming with another more experienced colleague in that field.&lt;/p>
&lt;blockquote>
&lt;p>Everything depends on a particular context and people: the developers, the pairs, the tasks, the mood.&lt;/p>
&lt;/blockquote>
&lt;h3 id="still-uncomfortable-with-pair-programming">Still uncomfortable with Pair Programming?
&lt;a class="heading-anchor" href="#still-uncomfortable-with-pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>If you still feel uncomfortable having another person next to you while you write code, it might be because you aren’t particularly happy with your own code, or the process that you follow in order to achieve some result. My favorite way to work on this is by exercising on your own and working on improving your skills as a software developer.&lt;/p>
&lt;ul>
&lt;li>Create and play around with your own pet projects.&lt;/li>
&lt;li>Work on &lt;a href="/blog/update-your-team-to-be-more-extreme/">code katas&lt;/a> on your own and with others.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Practice makes the master.&lt;/p>
&lt;/blockquote>
&lt;h2 id="keep-pull-requests-add-pair-programming">Keep pull requests, add pair programming
&lt;a class="heading-anchor" href="#keep-pull-requests-add-pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>Don’t get me wrong, Pull Requests are great. Keep doing them.&lt;/li>
&lt;li>Team collaboration is essential. Pair Programming aims for this.&lt;/li>
&lt;li>Pair Programming encourages the team to proactively work together.&lt;/li>
&lt;li>Don’t be afraid of coding while having eyes around you. Ask questions when something is unclear. Ask for help when you don’t know how to solve something.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>It’s totally ok not knowing everything. The most important thing is to know how to work together.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="/images/blog/2021-04-01/footer.webp" alt="two developers pair programming" />&lt;/p></content></entry><entry xml:lang="en"><title>Zombie Scrum Survival Guide</title><subtitle>A Journey to Recovery</subtitle><category term="scrum" scheme="https://chemaclass.com/tags/scrum/" label="Scrum"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2021-03-01T00:00:00+00:00</published><updated>2021-03-01T00:00:00+00:00</updated><author><name>
Christiaan Verwijs</name></author><author><name>
Johannes Schartau</name></author><author><name>
Barry Overeem</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/zombie-scrum-survival-guide/"/><id>https://chemaclass.com/readings/zombie-scrum-survival-guide/</id><summary type="html">Zombie Scrum Survival Guide reveals why Scrum runs aground and shows how to supercharge your Scrum outcomes, while having a lot more fun along the way.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>I really enjoy the ideas and experiments presented in the book. It points out a lot of “big elephants in many rooms” for
a lot of teams claiming to do &lt;a href="/blog/ignoring-scrum-to-get-more-agile/">Scrum&lt;/a> or &lt;a href="/blog/what-kills-agility/">Agile&lt;/a> in a really questionable way, aka: Zombie Scrum.&lt;/p>
&lt;h3 id="summary">Summary
&lt;a class="heading-anchor" href="#summary" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Zombie Scrum Survival Guide reveals why Scrum runs aground and shows how to supercharge your Scrum outcomes, while
having a lot more fun along the way. Humorous, visual, and extremely relatable, it offers practical approaches,
exercises, and tools for escaping Zombie Scrum. Even if you’re surrounded by skeptics, this book will be the antidote to
help you build more of what users need, ship faster, improve more continuously, interact more successfully in any team,
and feel a lot better about what you’re doing. Suddenly, one day soon, you’ll remember: that’s why we adopted Scrum in
the first place!&lt;/p>
&lt;ul>
&lt;li>Learn how Zombie Scrum infects you, why it spreads, and how to inoculate yourself.&lt;/li>
&lt;li>Get closer to your stakeholders, and wake up to their understanding of value.&lt;/li>
&lt;li>Discover why Zombie teams can’t learn, and what to do about it.&lt;/li>
&lt;li>Clear away the specific obstacles to real continuous improvement.&lt;/li>
&lt;li>Make self-managed teams real so people can behave like humans, not Zombies.&lt;/li>
&lt;/ul>
&lt;hr />
&lt;p>This is a nice webinar, when they offer a fresh perspective on Zombie Scrum, share key insights from the book, and
discuss their latest findings on the relentless ongoing research.&lt;/p>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/ylGfrsXXQMs"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Agile Product Management with Scrum</title><subtitle>Creating Products that Customers Love</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="scrum" scheme="https://chemaclass.com/tags/scrum/" label="Scrum"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><published>2021-02-22T00:00:00+00:00</published><updated>2021-02-22T00:00:00+00:00</updated><author><name>
Roman Pichler</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/agile-product-management-with-scrum/"/><id>https://chemaclass.com/readings/agile-product-management-with-scrum/</id><summary type="html">Understanding the product owner’s role and envisioning the product.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>&lt;h3 id="coverage-includes">Coverage includes
&lt;a class="heading-anchor" href="#coverage-includes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>Understanding the product owner’s role&lt;/li>
&lt;li>Envisioning the product&lt;/li>
&lt;li>Grooming the product backlog&lt;/li>
&lt;li>Planning the &lt;a href="/readings/scrum-the-art-of-doing-twice/">release&lt;/a>&lt;/li>
&lt;li>Collaborating in &lt;a href="/readings/zombie-scrum-survival-guide/">sprint meetings&lt;/a>&lt;/li>
&lt;li>Transitioning into product ownership&lt;/li>
&lt;/ul></content></entry><entry xml:lang="en"><title>Scrum</title><subtitle>The Art of Doing Twice the Work in Half the Time</subtitle><category term="scrum" scheme="https://chemaclass.com/tags/scrum/" label="Scrum"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2020-06-10T00:00:00+00:00</published><updated>2020-06-10T00:00:00+00:00</updated><author><name>
Jeff Sutherland</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/scrum-the-art-of-doing-twice/"/><id>https://chemaclass.com/readings/scrum-the-art-of-doing-twice/</id><summary type="html">Sutherland on Scrum: how to define what you are trying to achieve, set up the team for it, and track progress to done.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>Every organisation, whatever its size, constantly has to come to grips with delivering a product or service on time and
on budget. &lt;a href="/blog/ignoring-scrum-to-get-more-agile/">Scrum&lt;/a> shows you how. It explains how to define precisely what it is that you are seeking to achieve, how to
set up the team to achieve it, and how to monitor progress until the project is successfully completed.&lt;/p></content></entry><entry xml:lang="en"><title>Clean Agile</title><subtitle>Back to Basics</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><category term="software-design" scheme="https://chemaclass.com/tags/software-design/" label="Software Design"/><published>2020-03-12T00:00:00+00:00</published><updated>2020-03-12T00:00:00+00:00</updated><author><name>
Robert C. Martin</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/clean-agile/"/><id>https://chemaclass.com/readings/clean-agile/</id><summary type="html">Back to basics on Agile: what it was, what motivated it, and what has happened to it since. Uncle Bob's account.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>Clean &lt;a href="/blog/what-kills-agility/">Agile&lt;/a> comes from Uncle Bob, one of the founding fathers of Agile, one of the seventeen people who authored the
&lt;a rel="external" href="https://agilemanifesto.org/">Agile Manifesto&lt;/a> back in 2001.&lt;/p>
&lt;hr />
&lt;p>This talk is about Agile. What it was, what it is, and what it will be. This is a back-to-basics talk that covers the
history of Agile, what motivated it, and what has happened to it since. The talk covers the basic practices of Agile,
and compares and contrasts those practices with the current menagerie of Agile processes.&lt;/p>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/FedQ2NlgxMI"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Extreme Programming Explained</title><subtitle>Embrace Change</subtitle><category term="xp" scheme="https://chemaclass.com/tags/xp/" label="Xp"/><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="tdd" scheme="https://chemaclass.com/tags/tdd/" label="Tdd"/><category term="pair-programming" scheme="https://chemaclass.com/tags/pair-programming/" label="Pair Programming"/><category term="communication" scheme="https://chemaclass.com/tags/communication/" label="Communication"/><published>2020-03-05T00:00:00+00:00</published><updated>2020-03-05T00:00:00+00:00</updated><author><name>
Kent Beck</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/extreme-programming-explained/"/><id>https://chemaclass.com/readings/extreme-programming-explained/</id><summary type="html">Kent Beck on XP, the most specific agile framework about engineering practice, and how it raises software and team quality.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>&lt;h2 id="definition">Definition
&lt;a class="heading-anchor" href="#definition" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;a href="/blog/update-your-team-to-be-more-extreme/">Extreme Programming&lt;/a> (XP) is an agile software development framework that aims to produce higher quality software, and
higher quality of life for the development team. XP is the most specific of the agile frameworks regarding appropriate
engineering practices for software development.&lt;/p>
&lt;hr />
&lt;h2 id="values">Values
&lt;a class="heading-anchor" href="#values" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>The five values of XP are communication, simplicity, feedback, courage, and respect and are described in more detail
below.&lt;/p>
&lt;h3 id="communication">Communication
&lt;a class="heading-anchor" href="#communication" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Software development is inherently a team sport that relies on communication to transfer knowledge from one team member
to everyone else on the team. XP stresses the importance of the appropriate kind of communication: face to face
discussion with the aid of a white board or other drawing mechanism.&lt;/p>
&lt;h3 id="simplicity">Simplicity
&lt;a class="heading-anchor" href="#simplicity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Simplicity means “what is the simplest thing that will work?” The purpose of this is to avoid waste and do only
absolutely necessary things such as keep the design of the system as simple as possible so that it is easier to
maintain, support, and revise. Simplicity also means address only the requirements that you know about; don’t try to
predict the future.&lt;/p>
&lt;h3 id="feedback">Feedback
&lt;a class="heading-anchor" href="#feedback" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Through constant feedback about their previous efforts, teams can identify areas for improvement and revise their
practices. Feedback also supports simple design. Your team builds something, gathers feedback on your design and
implementation, and then adjust your product going forward.&lt;/p>
&lt;h3 id="courage">Courage
&lt;a class="heading-anchor" href="#courage" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Kent Beck defined courage as “effective action in the face of fear”. This definition shows a preference for action based
on other principles so that the results aren’t harmful to the team. You need courage…&lt;/p>
&lt;ul>
&lt;li>to raise organizational issues that reduce your team’s effectiveness.&lt;/li>
&lt;li>to stop doing something that doesn’t work and try something else.&lt;/li>
&lt;li>to accept and act on feedback, even when it’s difficult to accept.&lt;/li>
&lt;/ul>
&lt;h3 id="respect">Respect
&lt;a class="heading-anchor" href="#respect" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The members of your team need to respect each other in order to communicate with each other, provide and accept feedback
that honors your relationship, and to work together to identify simple designs and solutions.&lt;/p>
&lt;hr />
&lt;h2 id="principles">Principles
&lt;a class="heading-anchor" href="#principles" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="humanity">Humanity
&lt;a class="heading-anchor" href="#humanity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Human beings are the ones developing software. It is a fact. The book mentions 5 points that are needed for developers
to become good: basic safety, accomplishment, belonging, growth, and intimacy.&lt;/p>
&lt;p>The magic of great teams is that after the team members develop trust they find that they are free to be more themselves
as a result of their work together.&lt;/p>
&lt;h3 id="economics">Economics
&lt;a class="heading-anchor" href="#economics" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Software costs. Someone or multiple people paid or invested in it.&lt;/p>
&lt;p>Make sure what you are doing has business value, meets business goals, and serves business needs. For example, solving
the highest priority business need first maximizes the value of the project.&lt;/p>
&lt;p>The earlier software makes money, the sooner the development is valuable.&lt;/p>
&lt;h3 id="mutual-benefit">Mutual Benefit
&lt;a class="heading-anchor" href="#mutual-benefit" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Mutual benefit in XP is about activities benefitting all concerned. This principle is about finding practices that
benefit me now, me later, and the customers as well.&lt;/p>
&lt;p>The book brings up 3 points how XP mutually deals with communication-with-the-future problems:&lt;/p>
&lt;ul>
&lt;li>I write automated tests that help me design and implement better today. I leave these tests for future programmers to
use as well. This practice benefits me now and maintainers down the road.&lt;/li>
&lt;li>I carefully refactor to remove accidental complexity, giving me both satisfaction and fewer defects and making the
code easier to understand for those who encounter it later.&lt;/li>
&lt;li>I choose names from a coherent and explicit set of metaphors which speeds my development and makes the code clearer to
new programmers.&lt;/li>
&lt;/ul>
&lt;h3 id="self-similarity">Self-Similarity
&lt;a class="heading-anchor" href="#self-similarity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>This principle is about copying the structure of one solution into a new context.&lt;/p>
&lt;p>For example, the basic structure of development is that you write a failing test and then make it work. This structure
operates at all different scales. Take into account, this principle is a good start, but it may not always work.&lt;/p>
&lt;h3 id="improvement">Improvement
&lt;a class="heading-anchor" href="#improvement" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Do your best today but strive to do better tomorrow, strive to have a deeper understanding tomorrow. XP shines in this
aspect, it is about always improving.&lt;/p>
&lt;blockquote>
&lt;p>Put improvement to work by not waiting for perfection. Find a starting place, get started, and improve from there.&lt;/p>
&lt;/blockquote>
&lt;h3 id="diversity">Diversity
&lt;a class="heading-anchor" href="#diversity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Teams need to bring in people from different backgrounds, with different experiences, attitudes, etc. In order for the
team to have different ways of thinking and solving a problem.&lt;/p>
&lt;p>The principle of diversity suggests that the programmers should work together on the problem and both opinions should be valued.&lt;/p>
&lt;h3 id="reflection">Reflection
&lt;a class="heading-anchor" href="#reflection" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Good teams reflect after action, regularly. They think about why and how they are working.&lt;/p>
&lt;ul>
&lt;li>Why did we succeed? What should we continue doing?&lt;/li>
&lt;li>Why did we fail? What can we do better or differently?&lt;/li>
&lt;/ul>
&lt;p>Reflect and strive to improve. Even if everything seems perfect, know that there is always room for improvement and
throw in the question:&lt;/p>
&lt;ul>
&lt;li>Why do things seem perfect? What are we doing well? What can we do better in order to succeed even more?&lt;/li>
&lt;/ul>
&lt;h3 id="flow">Flow
&lt;a class="heading-anchor" href="#flow" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Flow in software development is delivering a steady flow of valuable software by engaging in all the activities of
development simultaneously. Don’t deliver software in big portions. Deploy smaller increments of value more frequently.&lt;/p>
&lt;h3 id="opportunity">Opportunity
&lt;a class="heading-anchor" href="#opportunity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Learn to see problems as opportunities for learning and improving.&lt;/p>
&lt;blockquote>
&lt;p>Part of being extreme is consciously choosing to transform each problem into an opportunity:
an opportunity for personal growth, deepening relationships, and improved software.&lt;/p>
&lt;/blockquote>
&lt;h3 id="redundancy">Redundancy
&lt;a class="heading-anchor" href="#redundancy" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The difficult problems in software development should be solved in multiple ways.&lt;/p>
&lt;blockquote>
&lt;p>The cost of the redundancy is more than paid for by the savings from not having a disaster.&lt;/p>
&lt;/blockquote>
&lt;h3 id="failure">Failure
&lt;a class="heading-anchor" href="#failure" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Sometimes it is extremely difficult to implement something, we don’t know which way or approach to take, try the ideas
you have, even if they fail! Failure isn’t a waste, rather a learning experience.&lt;/p>
&lt;p>Be aware of falling into the trap of discussing or thinking forever and not getting things done.&lt;/p>
&lt;blockquote>
&lt;p>When you don’t know what to do though, risking failure can be the shortest, surest road to success.&lt;/p>
&lt;/blockquote>
&lt;h3 id="quality">Quality
&lt;a class="heading-anchor" href="#quality" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Projects don’t go faster by lowering the quality. Actually it’s often the other way around (if not always). It results
in later and less predictable delivery, especially due to the amount of time spent on fixing bugs for example.&lt;/p>
&lt;p>Pushing quality higher often results in faster delivery.&lt;/p>
&lt;blockquote>
&lt;p>A concern for quality is no excuse for inaction. If you don’t know a clean way to do a job that has to be done,
do it the best way you can. If you know a clean way but it would take too long, do the job as well as you have time
for now. Resolve to finish doing it the clean way later.&lt;/p>
&lt;/blockquote>
&lt;h3 id="baby-steps">Baby Steps
&lt;a class="heading-anchor" href="#baby-steps" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Take baby steps. Making big changes in big steps is dangerous. People and teams can take many small steps so they appear
to be moving forward rapidly.&lt;/p>
&lt;blockquote>
&lt;p>Baby steps acknowledge that the overhead of small steps is much less than when a team wastefully recoils from aborted big changes.&lt;/p>
&lt;/blockquote>
&lt;h3 id="accepted-responsibility">Accepted Responsibility
&lt;a class="heading-anchor" href="#accepted-responsibility" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Responsibility cannot be assigned; it can only be accepted. If someone tries to give you responsibility, only you can decide if you are responsible or if you aren’t.&lt;/p>
&lt;/blockquote>
&lt;hr />
&lt;h2 id="practices">Practices
&lt;a class="heading-anchor" href="#practices" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>While it is possible to do these practices in isolation, many teams have found some practices reinforce the others and
should be done in conjunction to fully eliminate the risks you often face in software development.&lt;/p>
&lt;h3 id="sit-together">Sit Together
&lt;a class="heading-anchor" href="#sit-together" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Since communication is one of the five values of XP, have your team sit together in the same space without barriers to
communication, such as cubicle walls.&lt;/p>
&lt;h3 id="whole-team">Whole Team
&lt;a class="heading-anchor" href="#whole-team" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Include on the team people with all the skills and perspectives necessary for the project to succeed.&lt;/p>
&lt;h3 id="informative-workspace">Informative Workspace
&lt;a class="heading-anchor" href="#informative-workspace" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Set up your team space to facilitate face to face communication, allow people to have some privacy when they need it,
and make the work of the team transparent to each other and to interested parties outside the team.&lt;/p>
&lt;h3 id="energized-work">Energized Work
&lt;a class="heading-anchor" href="#energized-work" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>You are most effective at software development and all knowledge work when you are focused and free from distractions.&lt;/p>
&lt;h3 id="pair-programming">Pair Programming
&lt;a class="heading-anchor" href="#pair-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Pair Programming means all production software is developed by two people sitting at the same machine. The idea behind
this practice is that two brains and four eyes are better than one brain and two eyes. You effectively get a continuous
&lt;a href="/blog/pull-request-vs-pair-prog/">code review&lt;/a> and quicker response to nagging problems that may stop one person dead in their tracks.&lt;/p>
&lt;p>Teams that have used &lt;a href="/blog/effective-pair-programming/">pair programming&lt;/a> have found that it improves quality and does not actually take twice as long
because they are able to work through problems quicker, and they stay more focused on the task at hand, thereby creating
less code to accomplish the same thing.&lt;/p>
&lt;p>Pair programmers:&lt;/p>
&lt;ul>
&lt;li>Keep each other on task.&lt;/li>
&lt;li>Brainstorm refinements to the system.&lt;/li>
&lt;li>Clarify ideas.&lt;/li>
&lt;li>Take initiative when their partner is stuck, thus lowering frustration.&lt;/li>
&lt;li>Hold each other accountable to the team’s practices.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Pair programming is a dialog between two people simultaneously programming (and analyzing and designing and testing)
and trying to program better.&lt;/p>
&lt;/blockquote>
&lt;p>Though, if you need privacy and time to work on an idea, go ahead and do it. We need both companionship and privacy.
Make sure to rotate pairs frequently and take frequent breaks, pairing can be tiring, but surely is rewarding.&lt;/p>
&lt;h3 id="stories">Stories
&lt;a class="heading-anchor" href="#stories" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Describe what the product should do in terms meaningful to customers and users. These stories are intended to be short
descriptions of things users want to be able to do with the product that can be used for planning and serve as reminders
for more detailed conversations when the team gets around to realizing that particular story.&lt;/p>
&lt;p>Give the stories a short title and a description. Write them on cards and put them on a wall that is often being passed.&lt;/p>
&lt;p>In XP stories are estimated extremely early, which gets the team thinking about how to get the largest return from the
tiny investment.&lt;/p>
&lt;h3 id="weekly-cycle">Weekly Cycle
&lt;a class="heading-anchor" href="#weekly-cycle" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The Weekly Cycle is synonymous to an iteration. In the case of XP, the team meets on the first day of the week to
reflect on progress to date, the customer picks the stories they would like delivered in that week, and the team
determines how they will approach those stories.&lt;/p>
&lt;p>The intent behind the time boxed delivery period is to produce something to show to the customer for feedback.&lt;/p>
&lt;h3 id="ten-minute-build">Ten-Minute Build
&lt;a class="heading-anchor" href="#ten-minute-build" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The goal with the Ten-Minute Build is to automatically build the whole system and run all of the tests in ten minutes.&lt;/p>
&lt;h3 id="continuous-integration">Continuous Integration
&lt;a class="heading-anchor" href="#continuous-integration" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Continuous Integration is a practice where code changes are immediately tested when they are added to a larger code
base. The benefit of this practice is you can catch and fix integration issues sooner.&lt;/p>
&lt;p>This practice requires some extra discipline and is highly dependent on Ten Minute Build and Test First Development.&lt;/p>
&lt;h3 id="test-first-programming">Test-First Programming
&lt;a class="heading-anchor" href="#test-first-programming" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Write a failing automated test before changing any code.&lt;/p>
&lt;/blockquote>
&lt;p>The book mentions 4 problem Test-First Programming addresses at once:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Scope creep: It’s easy to get carried away programming and put in code “just in case.” By stating explicitly and
objectively what the program is supposed to do, you give yourself a focus for your coding. If you really want to put
that other code in, write another test after you’ve made this one work.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Coupling and cohesion: If it’s hard to write a test, it’s a signal that you have a design problem, not a testing
problem. Loosely coupled, highly cohesive code is easy to test.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Trust: It’s hard to trust the author of code that doesn’t work. By writing clean code that works and demonstrating
your intentions with automated tests, you give your teammates a reason to trust you.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Rhythm: It’s easy to get lost for hours when you are coding. When programming test-first, it’s clearer what to do
next: either write another test or make the broken test work. Soon this develops into a natural and efficient rhythm:
test, code, refactor, test, code, refactor.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="incremental-design">Incremental Design
&lt;a class="heading-anchor" href="#incremental-design" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;blockquote>
&lt;p>Invest in the design of the system every day.&lt;/p>
&lt;/blockquote>
&lt;p>You do a little bit of work up front to understand the proper breadth-wise perspective of the system design, and then
dive into the details of a particular aspect of that design when you deliver specific features.&lt;/p>
&lt;p>This approach reduces the cost of changes and allows you to make design decisions when necessary based on the most
current information available.&lt;/p>
&lt;hr />
&lt;h2 id="roles">Roles
&lt;a class="heading-anchor" href="#roles" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Although XP specifies particular practices for your team to follow, it doesn’t really establish specific roles for the
people on your team.&lt;/p>
&lt;p>Depending on which source you read, there is either no guidance, or there is a description of how roles typically found
in more traditional projects behave on XP projects.&lt;/p>
&lt;h3 id="the-customer">The Customer
&lt;a class="heading-anchor" href="#the-customer" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The Customer role is responsible for making all of the business decisions regarding the project including:&lt;/p>
&lt;p>The XP Customer is assumed to be a single person, however experience has shown that one person cannot adequately provide
all of the business related information about a project.&lt;/p>
&lt;h3 id="the-developer">The Developer
&lt;a class="heading-anchor" href="#the-developer" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Because XP does not have much need for role definition, everyone on the team (with the exception of the customer and a
couple of secondary roles listed below) is labeled a developer. Developers are responsible for realizing the stories
identified by the Customer.&lt;/p>
&lt;h3 id="the-tracker">The Tracker
&lt;a class="heading-anchor" href="#the-tracker" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>The main purpose of this role is to keep track of relevant metrics that the team feels necessary to track their progress
and to identify areas for improvement.&lt;/p>
&lt;h3 id="the-coach">The Coach
&lt;a class="heading-anchor" href="#the-coach" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>This is usually an outside consultant (or someone from elsewhere in your organization) who has used XP before and is
included in your team to help mentor the other team members on the XP Practices and to help your team maintain your
self-discipline.&lt;/p>
&lt;hr />
&lt;h4 id="what-is-xp-in-2-min">What is XP? (in 2 min)
&lt;a class="heading-anchor" href="#what-is-xp-in-2-min" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/hbFOwqYIOcU"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;h4 id="tech-talk-by-kent-beck-xp-20-years-later">Tech Talk by kent Beck: XP 20 years later
&lt;a class="heading-anchor" href="#tech-talk-by-kent-beck-xp-20-years-later" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/cGuTmOUdFbo"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="en"><title>Sprint</title><subtitle>How to Solve Big Problems and Test New Ideas in Just Five Days</subtitle><category term="agile" scheme="https://chemaclass.com/tags/agile/" label="Agile"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><category term="team-management" scheme="https://chemaclass.com/tags/team-management/" label="Team Management"/><published>2016-09-01T00:00:00+00:00</published><updated>2016-09-01T00:00:00+00:00</updated><author><name>
Jake Knapp</name></author><author><name>
John Zeratsky</name></author><author><name>
Braden Kowitz</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/readings/sprint/"/><id>https://chemaclass.com/readings/sprint/</id><summary type="html">A five-day formula for going from idea to prototype to decision, saving your team weeks of building the wrong thing.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>
&lt;p>“Sprint offers a transformative formula for &lt;a href="/blog/the-art-of-testing/">testing&lt;/a> ideas that works whether you’re at a startup or a large
organization. Within five days, you’ll move from idea to prototype to decision, saving you and your team countless hours
and countless dollars. A must read for entrepreneurs of all stripes.” - Eric Ries, author of &lt;a href="/readings/the-lean-startup/">The Lean Startup&lt;/a>&lt;/p>
&lt;p>From three partners at Google Ventures, a unique five-day process for solving tough problems, proven at more than a
hundred companies.&lt;/p>
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/AuktI4lBj6M"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry></feed>