Extreme Programming in a Nutshell – Rachel Davies and Vikki Read

AngularConnect
20 Oct 201524:33

Summary

TLDRIn this talk, Rachel Davies and Vikki Read from Unruly discuss the application of Extreme Programming (XP) in software development. They clarify misconceptions about XP, emphasizing practices like pair programming, test-first approach, and continuous delivery. They share their experiences with 'mob programming' and how it aids in complex problem-solving. The speakers also highlight the importance of monitoring for continuous delivery and suggest practical tips like utilizing pair programming during code reviews and writing tests when fixing bugs to improve software development processes.

Takeaways

  • 😀 Extreme Programming (XP) is a software development methodology focused on delivering solutions quickly and safely, with practices like pair programming, test-first, and continuous delivery.
  • 👥 Pair programming involves two developers working together at one computer, with roles of 'driver' and 'navigator' that can be fluidly switched.
  • 🔄 The practice of switching pairs daily at Unruly helps in sharing knowledge across the team and ensures broader understanding of the codebase.
  • 👪 'Mob programming' is an XP practice where the entire team works together at one workstation, taking turns at the keyboard, which is particularly useful for complex tasks.
  • 🕒 Regularly switching between roles and pairs helps maintain engagement and prevents distractions, optimizing the benefits of collaborative programming.
  • 🛠️ Spikes are solo investigative works done to explore and prove out architectural design ideas before full implementation.
  • 💥 Writing tests first is a core XP practice that helps in incrementally building code, ensuring that each new piece of functionality is covered by an automated test.
  • 🔄 Continuous delivery is achieved by committing to the main branch frequently and deploying several times a day, ensuring that code is always production-ready.
  • 🚦 Feature toggles allow releasing code directly into production without exposing it to end-users, enabling gradual feature rollouts and controlled testing.
  • 🐻 A 'mutex' or deployment token, like Paddington the bear, is used at Unruly to manage concurrent deployments in a fun and effective way.

Q & A

  • What is the main topic of the talk given by Rachel Davies and Vikki Read?

    -The main topic of the talk is extreme programming (XP), specifically how it is applied at Unruly, a video advertising company, and the benefits and practices associated with it.

  • How does Unruly utilize extreme programming in its operations?

    -Unruly uses extreme programming as the core of its operations, with practices like pair programming, test-first, and continuous delivery. They also rotate pairs daily to ensure knowledge sharing and comprehensive understanding of the codebase.

  • What is the significance of the 'drifting' reference from the movie 'Pacific Rim' in the context of pair programming?

    -The 'drifting' reference is used to illustrate the collaborative nature of pair programming, where two people work together at one computer, similar to how pilots in 'Pacific Rim' operate a mech together.

  • What roles do the 'navigator' and 'driver' play in pair programming?

    -In pair programming, the 'driver' is the person at the keyboard who types the code, while the 'navigator' thinks about the next steps and provides guidance. These roles are fluid, and partners often switch between them.

  • Why does Unruly switch pairs every day during pair programming?

    -Unruly switches pairs daily to ensure that everyone is exposed to different parts of the codebase, which promotes knowledge sharing and prevents any single point of failure within the team.

  • What is 'mob programming' and how does it differ from traditional pair programming?

    -Mob programming is an extreme programming practice where the entire team works together at one workstation, with one person typing (the driver) and the rest of the team navigating. It differs from pair programming by involving the entire team in the development process.

  • How does Unruly decide when to use mob programming?

    -Unruly uses mob programming for particularly complex tasks or when there are cross-team dependencies that require immediate resolution of misunderstandings. It's also useful for maintaining continuity when team members have to attend meetings.

  • What is a 'spike' in the context of extreme programming?

    -A 'spike' is a time-limited effort to explore a particular technical problem or architectural design idea. It's a form of investigative work done solo or in a split team before committing to full-scale implementation.

  • Why does Unruly avoid using code reviews in favor of pair programming?

    -Unruly avoids code reviews to reduce the delay between code writing and release. They believe that pair programming inherently includes the benefits of code review, as two people are already working together on the code.

  • What is the significance of writing tests first in extreme programming?

    -Writing tests first ensures that tests are written for every feature and helps maintain focus on the current task. It also provides a safety net for deploying and refactoring, as well as avoiding manual mistakes.

  • How does continuous delivery work at Unruly, and what practices support it?

    -Continuous delivery at Unruly means that code is always ready for deployment. They commit and deploy several times a day, use automated tests for confidence in deployments, and employ feature toggles to manage the release of new features.

  • What role does monitoring play in Unruly's continuous delivery process?

    -Monitoring is crucial for identifying and alerting the team to any unforeseen issues or deviations in the production environment, ensuring that the system's health is constantly checked even outside regular working hours.

  • How does Unruly handle the potential for team members to get in each other's way during continuous deployment?

    -Unruly uses a 'mutex' or deployment token, humorously named Paddington, to ensure that only one team member can deploy at a time. This lo-fi solution helps manage the deployment process and prevent conflicts.

  • What are the top-three tips given by Rachel and Vikki for adopting some extreme programming practices?

    -The top-three tips are: 1) Implement monitoring for better system health insights, 2) Write tests when fixing bugs to ensure the issue is captured and prevent regression, and 3) Try pair programming during code reviews to enhance collaboration and code quality.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
Extreme ProgrammingAgile CoachingPair ProgrammingTest-First ApproachContinuous DeliveryCode RefactoringFeature TogglesAutomated TestingMonitoring SystemsTeam Collaboration