What AI has to say about mobbing and agile software development

Posted on 6th December, 2022 at 01:35

ChatGPT is all the rage right now. I decided to try it out a bit. Eventually I wanted to see how it expands on knowledge we can verify exists, with something else we may or may not agree about.

ChatGPT of course is just a conversational interface built on top of the GPT-content generation toolkit and datasets. I have never before interacted with OpenAI tooling, so this was my first foray into trying things out, and this is perhaps not what the chatbot is all about, as it can be more of a team member for you in the absence of a real person.

I was intrigued about what kind of knowledge the dataset holds, and wanted to see whether the bot would give me plausible content that infuses the Agile Manifesto contents with insights regarding mob programming.

My initial prompt was

I would need a text where we take the 12 principles of the agile manifesto, and open each principle a little more in terms of a team practicing mob programming, possible?

To which the bot replied properly until it somehow cut off at priciple 8. I then reposted my prompt, modified to ask for the rest:

That one cut off, I would need a text where we take the principles 8 through 12 of the agile manifesto, and open each principle a little more in terms of a team practicing mob programming, possible?

And here are the results which I pieced together to form all the 12 principles together:

Sure, here is a possible text that expands on the 12 principles of the Agile Manifesto in relation to a team practicing mob programming:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. In a team practicing mob programming, this principle can be achieved by working together on a single task at the same time, which can help to ensure that valuable features are implemented quickly and efficiently. By continuously collaborating and sharing ideas, the team can identify and prioritize the most important features for the customer, and work together to implement them in a timely manner.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. In a team practicing mob programming, this principle can be achieved by being flexible and adaptable to changing requirements and priorities. Because the team is working together in real-time, it can quickly respond to changes and adjust its plans and approach as needed. By embracing change and using it to the customer's advantage, the team can deliver more valuable and relevant software.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. In a team practicing mob programming, this principle can be achieved by working together on small, focused tasks and delivering them frequently. By breaking down the project into smaller chunks and working on them collaboratively, the team can deliver working software more quickly and frequently, which can help to ensure that the customer is satisfied and the project stays on track.
  4. Business people and developers must work together daily throughout the project. In a team practicing mob programming, this principle is inherent in the approach, as the entire team works together on a single task at the same time. By bringing together business people and developers in this way, the team can ensure that everyone is aligned on the project goals and priorities, and that there is a shared understanding of the customer's needs and expectations. This can help to foster better collaboration and communication within the team, and can lead to more successful outcomes for the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. In a team practicing mob programming, this principle can be achieved by providing a supportive and collaborative environment in which team members can work together effectively. By giving team members the tools and support they need, and by trusting them to do their best work, the team can foster a sense of motivation and ownership, which can lead to better results and more satisfied team members.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. In a team practicing mob programming, this principle is also inherent in the approach, as the team is working together on a single task at the same time, using face-to-face conversation to share ideas and collaborate. By using this method of communication, the team can ensure that everyone is on the same page, and that information is conveyed quickly and effectively.
  7. Working software is the primary measure of progress. In a team practicing mob programming, this principle can be achieved by focusing on delivering working software frequently, as described in principle 3. By prioritizing the delivery of working software, the team can ensure that progress is being made and that the customer's needs are being met. This can help to keep the project on track and can provide a clear and tangible measure of success.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. In a team practicing mob programming, this principle can be achieved by working together on small, focused tasks and delivering them frequently, as described in principle 3. By breaking down the project into manageable chunks and working on them collaboratively, the team can maintain a sustainable pace and avoid burnout or fatigue. This can help to ensure that the team is able to continue working at a high level of productivity and quality over the long term.
  9. Continuous attention to technical excellence and good design enhances agility. In a team practicing mob programming, this principle can be achieved by working together on a single task at the same time, which can facilitate a more focused and disciplined approach to technical excellence and good design. By continuously sharing ideas and collaborating on the implementation of the code, the team can ensure that the code is of high quality, is well-designed, and is maintainable over time. This can help to improve the agility of the team and to ensure that it is able to adapt to changing requirements and priorities.
  10. Simplicity--the art of maximizing the amount of work not done--is essential. In a team practicing mob programming, this principle can be achieved by working together on a single task at the same time, which can help to identify and eliminate unnecessary work. By continuously discussing and debating different approaches, the team can identify the simplest and most effective solutions, and avoid wasting time and effort on unnecessary or irrelevant tasks. This can help to improve the efficiency and productivity of the team, and can lead to better results for the customer.
  11. The best architectures, requirements, and designs emerge from self-organizing teams. In a team practicing mob programming, this principle can be achieved by working together on a single task at the same time, which can facilitate a more collaborative and self-organizing approach to architecture, requirements, and design. By continuously sharing ideas and collaborating on the implementation of the code, the team can identify and refine the best solutions, and can evolve the architecture, requirements, and design as needed to meet the changing needs of the project. This can help to ensure that the team is able to deliver the most valuable and relevant software to the customer.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. In a team practicing mob programming, this principle can be achieved by regularly taking time to reflect on the team's progress and effectiveness, and to make any necessary adjustments to the way the team is working. By continuously collaborating and sharing ideas, the team can identify areas for improvement and can take action to address them. This can help to ensure that the team is always striving to become more effective and to deliver the best possible results for the customer.

A bit repetitive in places, as the content generation algorithm keeps looping and thinking that each principle requires a wholly new treatment of introductory text content and so on. But what we can see, is that the bot can actually form cohesive points about how mob programming might be of help when we want to work according to the twelve principles of agile software development.

But when you read it over again and again, it looks more and more like the bot synthesized just some random knowledge about each agile development principle or generic product development, and merely just adopted the mobbing words and practises to suit it's response to my prompt properly. The bot does not think nor does it know, it merely finds correlations and patterns in text content and forms new things that match the patterns and correlations in some way or form. Words that appear often together will end up in the same response. Words that are used to describe similar things are used to describe a new thing that kind of seems like the earlier two similar although different things. Such is the way of "AI".

No matter how much I agree with what the bot wrote, I still should not trust the content as something "true" or "researched". I must read it through as I would read through any new content I come across: critical thinking and reflecting on what I already know and what people knowledgeable on the topic know.

And of course, as always with things like this, we run into the trap of confirmation bias. When I formed my prompt, I set the question in a way that the bot will form answers that make mob programming seem like a net positive for agile development ideals. How about when we form the prompt to ask how mobbing might affect things negatively?

(For some reason this time around the bot kept choking and cutting off more often, and I had to ask for the principles in bunches of three, which resulted in somewhat longer answers for each individual principle. I've pieced together my prompt and the bot's answer below.)

My prompt:

I would need a text where we take the 12 principles of the agile manifesto, and open each principle a little more in terms of a team not practicing mob programming, possible?

To which the bot replied with:

Sure, here is a possible text that expands on the 12 principles of the Agile Manifesto in relation to how a team not practicing mob programming might make it easier to follow each principle:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to work on different tasks simultaneously. This allows the team to deliver valuable software to the customer more quickly and efficiently, and to respond to changing requirements and priorities in a more flexible and adaptable manner. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to respond quickly and effectively to changing requirements and priorities. This allows the team to be more flexible and adaptable, and to adjust its plans and approach as needed in order to harness change to the customer's advantage. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to deliver working software on a regular basis. This allows the team to make progress more quickly and efficiently, and to keep the project on track and on schedule. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  4. Business people and developers must work together daily throughout the project. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to ensure that business people and developers are able to collaborate and communicate effectively on a daily basis. This allows the team to have a shared understanding of the project goals and priorities, and to be aligned on the customer's needs and expectations. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to provide each individual or team with the support and resources they need to be successful. This allows the team to take advantage of the unique talents and motivations of each individual, and to foster a sense of ownership and accountability within the team. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to ensure that face-to-face communication is a regular and integral part of the team's workflow. This allows the team to have quick and efficient communication, and to convey information in the most effective and efficient manner. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  7. Working software is the primary measure of progress. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to deliver working software on a regular basis. This allows the team to make progress more quickly and efficiently, and to measure its progress in terms of working software. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to maintain a sustainable pace over the long term. This allows the team to avoid burnout or fatigue, and to deliver high-quality software to the customer on a consistent and reliable basis. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  9. Continuous attention to technical excellence and good design enhances agility. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to focus on technical excellence and good design. This allows the team to achieve a high level of quality and maintainability in its code, and to deliver high-quality software to the customer on a consistent and reliable basis. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  10. Simplicity--the art of maximizing the amount of work not done--is essential. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to identify and eliminate unnecessary work. This allows the team to focus on the most valuable and relevant tasks, and to deliver high-quality software to the customer in the most efficient and effective manner. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  11. The best architectures, requirements, and designs emerge from self-organizing teams. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to allow the team to self-organize and collaborate effectively. This allows the team to identify and implement the best solutions, and to evolve the architecture, requirements, and design as needed to meet the changing needs of the project. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. In a team not practicing mob programming, this principle may be easier to follow if the team is able to divide the work among multiple individuals or teams, and to take regular breaks to reflect on its work and make improvements. This allows the team to learn from its experiences and to continually improve its processes and practices, in order to deliver the most valuable and relevant software to the customer. By dividing the work among multiple individuals or teams, the team can also reduce the impact of any conflicts or challenges that may arise, and can maintain a high level of focus and productivity.

As you can see, we can play confirmation bias both ways very easily. This time the bot responded with non-mobbing teams having the same pros as the mobbing team earlier. This time it kept reusing the "focus and productivity" thing though, which tells me that the data source for these answers contained maybe only a few texts to "draw inspiration from". Might also be that the splitting of the prompt to a few iterations resulted in it reusing content between iterations.

This all confirms that the bot wants to give a positive or "correct" answer to your any prompt, and will just use a jumble of words that match the context in any way or form, in order to make itself seem like an intelligent thing. Nothing wrong with that, as long as we acknowledge that and make use of it as a tool for facilitating our own thinking, instead of attempting to offload thinking to it in part of in full.

Disclaimer: I do not know where the bot pulled all these text contents from, either verbatim or by paraphrasing multiple sources. So, if this post contains text that belongs to you, please do get in touch so we can either remove it or attribute it properly. The bot doesn't tell me where it got the stuff from.

Me elsewhere