Discovery

We first started Mob Programming in 2011. It was either late September, or early October. I have some records about that somewhere, and hopefully I’ll find them someday. This is essentially our eighth anniversary of when we began.

Our path from where we were to where we would be wasn’t an accident, as such, but where we were to end up was not a known destination. And more wonderful to me, it is still a path we are on. Where we are is merely on the way to where we will someday be.

As I look back on that beginning one thing strikes me as being an important aspect of the approach we were following for making the improvements we felt we wanted: We didn’t know what improvements we wanted.

That is, understanding we want improvements is good. Believing we know what those improvements must be, isn’t. We clog our thinking and limit the possibilities when we think we know what those improvements should be.

Discovery is such a powerful thing.

My way of thinking: We can make it possible for us to find the improvements we need, or at least recognize them when we stumble upon them, and that is better than believing we know what those improvements must be. Sometimes this can be rather straightforward, sometimes not so much.

However, this is a bit of a paradox I suppose, and I also suppose there is a bit of a trick to it. Sometime I might gather my thoughts about what that means and share it here. For now, this is enough.

Practical Refactoring Workshop – Austin

Practical Refactoring – Tiny Steps to Better Code

2-Day Lab, Austin, Texas, USA

May 3-4, 2018 

With Llewellyn Falco and Woody Zuill

Eventbrite registration: https://www.eventbrite.com/e/2-day-practical-refactoring-lab-austin-tickets-40431719361

The goal: “Clean Code That Works” (Ron Jeffries) , and getting there is half the fun.  Working with a legacy mess can be frustrating, boring, dangerous, and time-consuming.  When FIBS occur (FIBs = Fixes that Introduce Bugs) you often enter an endless Test and Fix cycle that can quickly escalate into a nightmare.  I’ve been there, you’ve been there.  How do we return to pleasant dreams?

In this code-centric workshop we’ll look at ways to introduce sanity and calmness into the process of maintaining and improving buggy, poorly written, poorly designed code.  Few slides, mostly code. We’ve been fighting the good fight for a long time and we are going to show you how to turn any project around and have fun doing it.  It is our opinion that we can fix and enhance any code.

We’ll be working on an example project, and learn the steps of making changes to code in tiny steps. We’ll explore ways to introduce tests to legacy code, and find ways to clean up the most common problems of duplication, clutter, complexity, and cleverness, as well as identifying and removing duplication.

Our approach will have us using Solo, Pair, and Mob Programming to do exercises and work with others as we experiment with many simple techniques that combine together to make a big impact on the quality and cleanliness of our code.

Learning Goals

  • The basic goal is to learn enough about refactoring in baby steps so you can begin doing this immediately.  We’ll be covering a number of basic refactoring techniques that provide a wide range of easy to implement improvements, and learn how to identify some common code “smells” (symptoms of potential problems)

Instruction Approach

  • Hands-on Exercises
  • Interactive Dialogues
  • Simulations, Videos

Agenda

Day 1 – Cleaning the code

  • 8:30-9:00 –  We’ll alternate between instructional demonstrations and hands-on coding exercises.
  • 9:00-10:30 – Basic theory of our approach to working with legacy code
  • 10:30-10:45 – Break
  • 10:45-12:00 – Instruction and hands-on exercises
  • 12:00-12:45 – Lunch
  • 12:45-2:30 – Instruction and hands-on exercises
  • 2:30-2:45 – Break
  • 2:45-4:15 – Instruction and hands-on exercises
  • 4:15-4:30 – Retrospective
  • 4:30-5:00 – Questions, wrap-up of the day

Day 2 – Discovering the emerging architecture

  • 8:30-9:00 –  We’ll alternate between instructional demonstrations and hands-on coding exercises.
  • 9:00-10:30 – Continue with theory of our approach to working with legacy code
  • 10:30-10:45 – Break
  • 10:45-12:00 – Instruction and hands-on exercises
  • 12:00-12:45 – Lunch
  • 12:45-2:30 – Instruction and hands-on exercises
  • 2:30-2:45 – Break
  • 2:45-4:15 – Instruction and hands-on exercises
  • 4:15-4:30 – Retrospective
  • 4:30-5:00 – Questions, wrap-up of the day

We’d love to see you there!!

Eventbrite registration: https://www.eventbrite.com/e/2-day-practical-refactoring-lab-austin-tickets-40431719361

Mob Programming Conference – April 12-13 2018

The third Mob Programming Conference is happening April 12 & 13 at the Microsoft Center in Burlington, MA.

Here are the pertinent links for the conference, and the Eventbrite registraion:

Conference Website:  Click here to go to the Mob Programming Website

Eventbrite Registration: Click here to go to the Mob Programming Eventbrite Page

I’m really excited to be working with Nancy Van Schooenderwoert and Llewellyn Falco to organize this gathering.

Learn by Doing

Mob Programming is a fairly new concept. This conference offers you a good grasp of it with a mix of talks, trying it out, and discussing with your peers. We’ll mostly be doing hands-on Mob Programming sessions at a variety of skill and experience levels, and in several programming languages.

Mob Programming Workshop

Woody Zuill (me) will be facilitating a Mob Programming Workshop that has been shared all over the world over the past 4 years.

Expert Mentors and Coaches

We have invited a number of very capable Mob Programmers who have been innovating with this idea for several years:

They will be facilitating Mob Programming Sessions so you will have expert guidance as you join in with other “Mobbers” to work on interesting exercises.

A Mix of Activites and Sessions

While most of our time will be spent on actual coding and working together, we’ll also have a few talks (a Keynote and an Endnote), some retrospectives, some Open Space style sessions, and some Lean Coffee sessions.  In other words, this will be a powerful, hands-on 2 days of learning and sharing.

This is “immersion training meets powerful questions”. Learn by doing, then have just the right amount of reflection and talk to fuel another round of immersion learning.

We have a track for Managers, Executives, and Leaders as well. This is for people who might not be doing software development directly, but are managing, facilitating, or otherwise influencing the workplace and can help make improvements to the work environment.

Agile Games Conference

The Mob Programming Conference is being done in conjunction with the Agile Games Conference.  Agile Games is on April 9, 10, and 11 at the same location. Both events are hosted by Agile New England – one of the best Agile groups I’ve ever attended.

Here is a link to the Agile Games website: Agile Games Boston

Here’s a link to the Agile New England site: Agile New England

Please Join Us

Join us for two days of workshops and peer learning with talks from the originators and founders of Mob Programming. I hope to see you there!

Let’s get “All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.“

Mob Programming Conference 2017

The second Mob Programming Conference is happening April 6 & 7 at the Microsoft NERD Center at MIT in Cambridge MA.

Here are links to the conference website and Eventbrite:

Conference Website 

Eventbrite Registration

I’m really excited to be working with Nancy Van Schooenderwoert and Llewellyn Falco to organize this gathering.

Learn by Doing

Mob Programming is a fairly new concept. This conference offers you a good grasp of it with a mix of talks, trying it out, and discussing with your peers. We’ll mostly be doing hands-on Mob Programming sessions at a variety of skill and experience levels, and in several programming languages.

Mob Programming Workshop

Woody Zuill (me) will be facilitating a Mob Programming Workshop that has been shared all over the world over the past 3 years.

Expert Mentors and Coaches

We have invited a number of very capable Mob Programmers who have been innovating with this idea for several years:

  • Lennart Fridén (Agical – Sweden)
  • Alex Wilson (Unruly – England)
  • Aaron Griffith (Hunter – USA)
  • Nancy Van Shooenderwoert (Agile-Lean Partners – USA)
  • Llewellyn Falco (Freelancer – Finland and USA)
  • Woody Zuill (Independent Agile Guide – USA).

They will be facilitating Mob Programming Sessions so you will have expert guidance as you join in with other “Mobbers” to work on interesting exercises.

A Mix of Activites and Sessions

While most of our time will be spent on actual coding and working together, we’ll also have a few talks (a Keynote and an Endnote), some retrospectives, some open space style sessions, and some Lean Coffee sessions.  In other words, this will be a powerful, hands-on 2 days of learning and sharing.

This is “immersion training meets powerful questions”. Learn by doing, then have just the right amount of reflection and talk to fuel another round of immersion learning.

Agile Games Conference

The Mob Programming Conference is being done in conjunction with the Agile Games Conference.  Agile Games is on April 3, 4, and 5 at the same location. Both events are hosted by Agile New England – one of the best Agile groups I’ve ever attended.

Here is a link to the Agile Games website: Agile Games Boston

Here’s a link to the Agile New England site: Agile New England

Please Join Us

Join us for two days of workshops and peer learning with talks from the founders of Mob Programming. I hope to see you there!

Let’s get “All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.“

Mob Programming Conference – May 1 and 2, 2016

The first Mob Programming Conference is happening May 1 & 2 at the Microsoft NERD Center at MIT in Cambridge MA.

Here are links to the conference website and Eventbrite: Conference Website – Eventbrite Registration

I’m really excited to be working with Nancy Van Schooenderwoert and Llewellyn Falco to organize this gathering.

Learn by Doing

Mob Programming is a fairly new concept. This conference offers you a good grasp of it with a mix of talks, trying it out, and discussing with your peers. We’ll mostly be doing hands-on Mob Programming sessions at a variety of skill and experience levels, and in several programming languages.

Expert Mentors and Coaches

We have invited a number of very capable Mob Programmers who have been innovating with this idea for several years:
Lennart Fridén (Agical – Sweden)
Alex Wilson (Unruly – England)
Aaron Griffith (Hunter – USA)
Jeremy Cash (Bluefruit – England)
Nancy Van Shooenderwoert (Agile-Lean Partners – USA)
Llewellyn Falco (Freelancer – Finland and USA)
Woody Zuill(Freelancer – USA).
They will be facilitating Mob Programming Sessions so you will have expert guidance as you join in with other “Mobbers” to work on interesting exercises.

A Mix of Activites and Sessions

While most of our time will be spent on actual coding and working together, we’ll also have a few talks (a Keynote and an Endnote), some retrospectives, some open space style sessions, and some Lean Coffee sessions. In other words, this will be a powerful, hands-on 2 days of learning and sharing.

This is “immersion training meets powerful questions”. Learn by doing, then have just the right amount of reflection and talk to fuel another round of immersion learning.

Agile Games Conference

The Mob Programming Conference is being done in conjunction with the Agile Games Conference. Agile Games is on April 28, 29, and 30 at the same location. Both events are hosted by Agile New England – one of the best Agile groups I’ve ever attended.

Here is a link to the Agile Games website: Agile Games Boston

Here’s a link to the Agile New England site: Agile New England

Please Join Us

Join us for two days of workshops and peer learning with talks from the founders of Mob Programming. I hope to see you there!

Let’s get “All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.“

Mob Programming Workshop at Hunter

We are holding another FREE Mob Programming workshop at Hunter Industries in San Marcos, CA.  Our October 24th was a lot of fun, and a great success… so we immediately decided to do another one.

  • When: Saturday, November 21, 2016 – 9:00am
  • Where: Hunter Industries, 1890
  • What – A full day of hands-on learning about team-work and Mob Programming.
  • Register here: Workshop Registration
  • Limited to 20 participants

Sponsored by Hunter Industries

All the brilliant people working on the same thing, at the same time, in the same place, and on the same computer.

Mob Programming is a cost-effective, collaborative and fun way to get work done together. It’s a whole-team approach to development, where coding, designing, testing, and working with the “customer” (partner, Product Owner, User, etc.) is all done as a team.

Participants in this workshop experience a typical day of Mob Programming while learning the mechanics of how to work together as a Mob and the techniques that make this form of development so effective.

Learn how a mob performs sample project work, including user stories, prioritization, test-driven development, refactoring, and retrospectives.

Designed and facilitated by Mob Programming pioneer Woody Zuill, this workshop provides a hands-on education in the art of mobbing and it’s significant benefits for your teams.

Learning Goals

  • How 5+ people can be effective working on just one thing
  • Heuristics for team size
  • Guidelines for successful collaboration
  • Handling competing solutions and ideas to a coding problem
  • Encouraging politeness and kindness of team members
  • Reducing or eliminating harmful conflicts
  • Mobbing Mechanics
  • Tools for team coding
  • Workspace setup
  • How to “Amplify Learning” and take advantage of continual learning opportunities
  • “Real-time” and continuous Retrospectives to reflect, tune, adjust
  • The theory of why Mob Programming is effective.
  • Test-Driven Development (TDD) as a team
  • Working with Product Owners, Business Experts, Testers as part of the team
  • Refactoring as a team
  • Continuous feedback at all levels of granularity

Instruction Approch

Hands-on Exercises, Interactive Dialogues, Simulations, Videos

Agenda

  • What Is Mob Programming & The basics of how it works
  • First Exercise: A Code Dojo to Introduce Basic Concepts
  • Driver/Navigator teamwork Roles and Techniques
  • Second Exercise: A sample project
  • The Importance of Retrospectives
  • LUNCH – Lunch will be provided
  • Advanced Mob Programming Concepts
  • Third Exercise: Expanding on the Sample Project
  • Amplified Learning – How to take advantage of learning opportunities
  • Resolving Conflict
  • Retrospective and review

Here are the details and Registration at EventBrite:

Workshop Registration

Speaking at SB Agile

I’ll be visiting the SB Agile group in Santa Barbara on Wednesday, January 21, 2015

You can find all the details about the location, time, and other pertinent info at their Meetup group page: http://bit.ly/1zdU7ha

Topic – Continuous Discovery: The Power of Pure Agile

Brief description:

The strength of Agile lies in the simplicity and clarity of the Values and Principles as expressed in the  Agile Manifesto.  I have found that if we take this philosophy to heart it can empower people doing software development in any organization, and enable us to make rapid strides to the “land of better”.

As leaders, activators, and influencers of change in the companies we work with, we must take responsibility to understand the philosophy of Agile, and learn to invite and draw people to share that understanding.  We need change, we want change, and we know we must influence change for the better.

I’ll share my thinking about “Pure Agile”, and how I use it in my daily work to enhance Continuous Discovery, Learning, and Growth in the teams and companies I work with.  Let’s explore together and discover the path to future we want to create.

I hope to see you there!

Finland and Sweden Workshops and Sessions

Workshops in Finland and Sweden this Fall

 

Public Workshops at Mystes in Helsinki, Finland

Along with Llewellyn Falco and Vasco Duarte I’ll be participating in 4 half-day workshops on the 23rd and 24th of October.

Mob Programming: If you are interested in participating in a Mob Programming workshop, where you can experience our Teamwork attitude and many ideas related to Teaming and collaboration, please join me for a half day hands on workshop.

NoEstimates: Explore with us our current thinking and experience on NoEstimates decision-making. In this workshop we will review and analyze why we do estimates and how we can improve software and product development while reducing the time and money invested in estimating.

Hands-On introduction to ApprovalTests: ApprovalTests make it easy to create descriptive, expressive, easy to write and debug unit tests. In this workshop you’ll experience how to use ApprovalTests to accelerate test-driven development for everything from simple strings to arrays, GUIs, and complex objects. ApprovalTests is free and currently available for C#, Java, PHP, and Ruby.

Practical Refactoring:  In this workshop we are going to work on a 300 line ball of mud, and experience some new approaches and techniques that will enable you to easily and safely revitalize your legacy code into a thing of beauty little by little. After this workshop you will have a practical, hands-on understanding of how small daily improvements improve large-scale projects over a few months. You will see how much your own project at work could benefit from continuous improvement.

Helsinki, Finland – October 23rd

Mystes Presents
STATE OF THE ART PRACTICES
IN AGILE SOFTWARE DEVELOPMENT
Woody Zuill, Vasco Duarte & Llewellyn Falco
October 23rd & 24th, 2014

Tampere Goes Agile, Tampere Finland

I am really looking forward to Tampere Goes Agile, October 25th http://bit.ly/1vXa4sb

I’ll be presenting on Mob Programming, and likely doing a workshop on it as well.  I’ll probably be speaking about NoEstimates, and who knows what else.  As I understand it, this is a free event – which is pretty cool!

Øredev Developer Conference

Malmo, Sweden – Oredev 2014 – November 4th

I am very pleased to be returning to Malmo and the FANTASTIC Oredev conference!

Experience a full day of Mob Programming and learn the mechanics of how to work together as a “Mob”, and explore the underlying concepts that make this form of development so effective for my team.

Throughout the day we will be tackling a sample project and working on it using a full “extreme programming” approach – User stories, prioritization, test-driven development, refactoring, and retrospectives.

I will also do a session on Continuous Discovery,  The Power of Pure Agile, and I’ll share the stage with Vasco Duarte for a converstation called “#NoEstimates Unplugged – A Conversation About Agile As If You Meant It”.

And of course – I’ll be there and in Malmo for the whole week and I would love to have a chance to meet you and talk about Agile, #MobProgramming, #NoEstimates, or just about anything interesting.

Legacy Code is Good Stuff

There are a number of definitions people use, and I’ll give you mine here. Perhaps this is less a definition and more how I think about legacy code.

Legacy code is code that is doing some real work.  It exists because it is bringing value.  We work on it because we want the code to keep bringing value.

That is, any code that is in use is legacy code. We inherited it from yesterday.  Someone else might have written it, or we might have inherited from our self.  Regardless, it is meaningful to us because someone needs to use the functionality provided by the code.

I often hear people disparaging Legacy code.  When the code is bad, it can be hard to keep from complaining. I don’t. I honor the code, and the developer who wrote the code.  It is bringing value, and that in itself is a tremendous achievement.  Regardless of how good or bad it is, they (or I) got it to work well enough to be of use.

The developers(s) who created the code worked under imperfect conditions.

 

Google Group on NoEstimates

There is a Google Group on #NoEstimates. I joined it, and have visited it every now and then, but I have not participated.

I do not participate much in this sort of discussion group

Here is a bit of a quote (from a wise and well respected person) that goes a long way towards explaining how I feel about the #NoEstimates (and most) discussion groups. I have paraphrased it almost out of recognition to better clarify my position.

“Replacing a face to face talk with a Google Group is like replacing a hug from your Mom with a face full of pepper spray”.

Conversations

It is rare that any two people agree completely about anything, let alone something as complex as the endeavor of managing software development. I don’t expect anyone to agree with anything I have to say, and it is a rare yet wonderful experience for me when I find someone who sees things in a way that is more or less in alignment with the way I see things. I don’t expect it.  However, I also enjoy having conversations with people who see things differently.

While I enjoy conversation, there is very little actual conversation going on in the typical discussion forum or Google Group.  Unless a group is actively moderated, it quickly degrades into something that is much more anti-conversational than it is conversational, more harmful than it is useful to gaining a shared understanding.  Perhaps they are not meant for conversations and understanding.

Recent forays into the land of Discussion Boards

I’ve recently read through several topic threads on various discussion boards at LinkedIn or Google Groups and it is typically a painful and disturbing experience for me. Overall, these threads are not productive conversations as far as I can tell, and seem to simply be a jumbled mess that is nearly impossible (for me, anyway) to decipher.  Some people must get value out of this sort of communication forum, but in general I don’t find them conducive to meaningful conversation.

Often these forums seem more like an opportunity for people to say “You don’t understand”, and then provide some rebuttals and clarifications that provide fuel for the next “You don’t understand” response. (I am using “you don’t understand” as a placeholder for all similar [and often less kind] responses).

Even worse, each response contains snippets and quotes (sometimes HUGE snippets or the entire content) of what someone in a previous post stated, and then intersperses the snippets/quotes with rebuttals and clarifications and “You don’t understand”, and “that is not how it is in REAL life” statements.  And even worse than that, sometimes the snippets and quotes accumulate from response to response building into an incomprehensible cacophony of confusion where there is no way to unravel who is trying to say what about which.

All in all, while this has been going on for a very long time (years and years), and while I participate in this sort of forum every now and then, I see little value in it for me.  I have enough to do already.

NOTE: The mini-forum of Twitter, while in my opinion is also not conducive to conversation, at least limits the amount of cacophony. Rather than the “continuous ringing of huge, deafening alarm bells” it’s more like the “continuous jingling of tiny, less deafening alarm bells”, and there just aren’t enough characters to gather garbage snippets.  Anyhow, I’m pretty much on board with the #NoCacophony movement.

I prefer face to face, one-on-one conversations

I prefer to have engaging and meaningful conversations with people who are willing to talk with me.  The most productive, useful, and pleasing of these experiences for me are in one-on-one, face to face sharing where the both of us are sitting at the same place, or taking a walk together.  Sometimes having these conversations in very small groups with everyone in the same place is just as good.  I have found this to be very fruitful to me for my own learning and exploring, and for vetting and critiquing my ideas and thoughts. I can only assume that this works well for at least some folks since I frequently meet with others this way.

While this “in the same place” mode is great, it is not always possible.  So, my favorite alternative (at this time)  is to have a conversation via video Skype or Google Hangout (or whatever technology that works).

Sometimes, the only viable approach is to make a voice only call, but this is in a very distant 3rd place.

Besides those 3 basic approaches (same space, via video chat, and voice only call), there are a few other variations that can make things better (like having a screen share in a remote conversation).  But that is beyond my purpose in this little post.

Why do you suppose face to face, one-on-one conversations work so well?

Why does the one on one, face to face (or small group) style work so well? I’m sure someone probably knows, and I have my ideas, but that is not important to me. What is important to me is that it works well for me, and it is my preferred approach to learning and exploring, vetting and clarifying.

When we make it our goal to find a way to understand each other it often requires that we change the way we are saying something, or the way we think about something.  That is, we might “change our mind” based on the new information and understanding we are gaining.  Our eventual understanding will likely be different from where we started for both of us.

When our words and thoughts are “locked down” in a forum thread, making changes to more clearly communicate our intention is (typically) not possible – we have limited “edit” rights.  Even worse, the path to shared understanding seems to be thwarted, and old misunderstandings just get brought up again and again, sometimes by people who were not part of the original conversation and don’t understand what has been covered, or the path that led to the current understanding.

With spoken communication we tend to just move on.  We say things like “I see what you are saying”, “You are right! How did I miss that?”, “Now I get it”, “Oh… you meant this instead of that”, “Of course!  That makes sense to me now”, “Here is something I think I wasn’t considering…”,  and so on.  I don’t see these phrases often in the discussion boards.  This isn’t always true, but I’ve found that spoken conversations tend to be more conducive to making progress towards a shared understanding.

Regardless… you must find the communication style that works for you.  If forums and groups and discussion boards work for you, then GREAT!  You just won’t see me join in much.

On the other hand, let me know if you want to chat sometime.

Cheers!

Woody