We are our own best resource. By pairing and mobbing, we can disseminate skills and knowledge across a team rapidly.

Collaborate

Spike on Unknowns

As an Agile developer, I often start projects without a clear sense of exactly what I’m building. This used to be very difficult for me. I wanted to start with a complete specification for what I was to build, but today I know that it’s more efficient and effective to discover exactly what needs to …

Read More
Collaborate

Buddy Programming

Sometimes the practices of Extreme Programming can be a bit too extreme when first introducing them to a team. This is especially true with pair programming. Of all the practices that I teach software developers, I get the most resistance from pair programming, Both developers and their managers are skeptical about pair programming, although each …

Read More
Collaborate

Strong-Style Pairing

Pair programming is not about taking turns using the computer or being someone else’s typist. It’s about engaging two minds on the same problem so that a solution can be developed more quickly and with higher quality than if one person was working on it alone. The two roles in pair programming are referred to …

Read More
Collaborate

Ping-Pong Pairing

Another pair programming configuration I like is called ping-pong pairing. In ping-pong pairing the driver writes a test for a behavior then asks the navigator to implement the behavior and make the test pass. Once completed, the keyboard is passed from driver to navigator and the new driver writes the next test for the new …

Read More
Collaborate

Pairing versus Mobbing

I was talking to some friends at Agile 2016 about which they thought was more effective, pair programming done well or mob programming done well, but we ended up deciding that the jury is still out on this question, at least for the time being. In terms of learning and spreading knowledge across a team …

Read More
Collaborate

Practices We Aren’t Taught

As a software developer I resonate with the technical practices of Extreme Programming. Software engineering, like other forms of engineering, should have common standards and practices, but we really don’t. Yes we all learn programming languages in school but we’re rarely taught how to apply them in ways needed to build enterprise systems. This is …

Read More
Collaborate

Collaborate

Collaboration requires a set of skills that must be practiced and mastered. Most software development projects involve collaboration among many developers so being able to work as part of a team, and to communicate complex ideas effectively, are important skills to have. Pair programming is one approach to collaborative development. Pair programming is not about …

Read More
Collaborate

Seven Strategies for Effective Retrospectives

Scrum is all about inspecting and adapting so it’s important to make time to reflect with the team and gain insights on what can be improved. Regular retrospectives are a good way to get the team in the habit of looking at what they did and how they can improve. Here are seven strategies for …

Read More
Collaborate

Seven Strategies for Better Code Reviews

Code reviews are an important way for the team to learn and understand the parts of a system they aren’t working on. Code reviews also give developers feedback on their work. They help the team provide consistency in the code they write and help propagate good development practices throughout the team. Here are seven strategies …

Read More
Collaborate

Seven Strategies for Team Agreements

One of the most valuable documents teams can create is a Team Agreement. Team Agreements for software development can range from very detailed specifications of coding standards and practices to a general statement of moral and ethical conduct, or anywhere in between. Team agreements help set the context for team member expectations and provide a …

Read More
Collaborate

Seven Strategies for Remote Teams

It used to be thought that if only we could write a good specification that accurately described what was to be built, we could take advantage of the cheap labor overseas to cut costs and get software built faster. Unfortunately, reality often shatters such naive hopes. However, outsourcing overseas can help for many tasks and …

Read More
Collaborate

Seven Strategies for Working with an Onsite Customer

One important characteristic of agile development over non-agile processes, such as waterfall, is the presence of an onsite customer. Unlike the Project Manager or ScrumMaster, whose job it is to keep the team healthy, the Product Owner or onsite customer representative’s job is to be a proxy for the real customer and ensure development is …

Read More
Collaborate

Seven Strategies for Customer Collaboration

My wife is a video producer. Her job is not very different from our jobs as software developers. Both jobs demand lots of creative problem-solving where we face different challenges every day, and both jobs often involve close collaboration with our customer or a subject matter expert. My wife, Staci, is great at creating videos …

Read More
Collaborate

Seven Strategies for Team Swarming

I don’t see a lot of talk about team swarming (sometimes referred to as mobbing) yet it can be one of the most powerful problem-solving techniques for breaking through really difficult challenges. A swarm is where you get the whole team together to focus on solving a single problem. You can also focus on multiple …

Read More
Collaborate

Seven Strategies for Pair Programming

Of all the agile developer practices I teach, pair programming gets the most resistance from management. Managers often ask me how putting two developers on the same task can possible be more efficient than having them work independently on different tasks…but it most definitely is. Well, you may not find a huge increase in the …

Read More
Collaborate

Seven Strategies to Foster Hyper-Performing Teams

Hyper-performing teams do exist. I know teams that are an order of magnitude more productive than average teams. Achieving hyper-performance is possible if everyone on the team has the skills and a burning passion to do their best. Here are seven tips that can help your team become high performing, if not hyper-performing: 1. Know …

Read More