 Fy rai, ddod am ydych chi'n gwybod. Fy rai, mae'n mynd i'n mawr. Fy rai, dw i'n cwlyn. Rydw i'n mynd i amddangos gyda'r ysblog. Rydw i'n mynd i ddweud ar gweithio cyfnod, yn ymdwyllgor cyfleol, ond rydw i'n gweithio cyflodau gwahanol? Fy rydw i'n mynd i'r gweithio cyflodau gwahanol? Rydw i'n mynd i'n gweithio, yn ymdwyllgor cyflodau gwahanol, mae'r gweithio gyfoedd, I'm working on the figure platform, but generally I help people solve problems. So, conventionally project work or any sort of work streams, the problem you've got is you've got people from the teams and to go off to do this project work or work stream and you find it really difficult to knowledge share. And what you find is that it gets really tough with tight deadlines and it gets even O'r awdurdodd yma, dwi'n golygu'n gweithio'n gwahodd yn ymweld i fod yn ymweld i'r anhygoel. Dwi'n golygu o'r hoffi'r rhaglen ac ymddech chi'n bach arwag i'r wyf. Felly dyna'n golygu'n gwahodd â'r anhygoel, dwi'n golygu'n gweithio'n gweithio'n gweithio'n gweithio. Dwi'n gweithio'n gweithio'n gweithio. Cwyrdd rhoi, dynaALL ym arddangos, chi yw'r cyffredig unig yma? Gwyn mawr arall a llwyffau'n imblygu'r hyn sy'n rhoi bobl. Cynnyddu yn gweld iddoedd y wneud, ond, didnir i'r gwaith ei hyn yn cofnodd, yn mawr yn y bain ystod o'i cychwyn dysgwysbethau ond arnynt? Rydych ni'n ymweld eich cychwyn dysgwysbethau? Mae'r paredym. Ond mae'n cychwyn ymlaen i'r idea yn oed siaradau ac yn llawr yn debyg rhoi. Ond y gallwch yma yn y dweud yn credu os yn gweithio. Yn amlwg dweud yn credu o'r wathion yno. So, ychydig fod yn gweithio, dwi'n gofyn o'r gweithio yma o mbwysig. Pwysig i gwahog three i'r maxim ffawr. Dwi'n owyl mae'r mbwysig iawn yn nutul. Mae'r mbwysig wedi ffawr, mae'n gweld dweud. Mae'n gweithio o saff o daёт o'r ffawr, oedd maen nhw yna. Mae'n odych chi'n gofyn hefyd maen nhw. One keyboard, one mouse and the biggest screen that you can find and position your mob in front of the screen and then you have everything that you need material wise, but it's no fun if there's no rules. So there's some rules that help you get the most out of your mobbing experience. So the mob rules. Only one driver. There's only ever one person at the keyboard. Everyone else acts as a navigator and everything must be discussed. So every idea or anything you want to bring up has to be discussed amongst the team. So by extension, there's no typing unless the team agrees on what should be typed. So the driver still participates in the discussion, but even if the driver is the subject matter expert, they can't plow ahead. Everything needs to be discussed. Rotate every 10 minutes. So even if you're in the middle of a line of code or in the middle of a thought or you really know what's going to come next, when the time's up, the time's up, be strict about that. Sometimes with bigger mobs, dropping it down to eight minutes works well so that you're reducing the time between driving sessions. Otherwise you lose interest if you haven't typed in an hour. But don't go above 10, don't go below eight. Don't forget to take breaks. Anyone that's draining it is to pair? If you're soloing, your mind can drift, you can look out the window, you can check Facebook and the other tab. If you're pairing, you constantly have someone else bouncing ideas off of you mutually. Mobbing is even more intensive because it's a continuous brainstorming kind of group think discovery session. And as soon as one person isn't engaged, the mob becomes less effective. And leave your phone alone. So notice I said one computer. Put your laptop away. Don't look at your email. Don't look at your messages. If you're in an environment where that's not practical and you need to respond to things, try to factor it into the breaks or schedule specific time into your day. Don't interrupt the mobbing session because, again, as soon as one person is disengaged, it starts to fall apart. So what's the outcome of this mobbing thing? What do we want to get out of it? Well, because everything is the result of a conversation amongst the mob and everything that's typed comes from group consensus, you really want to leverage on that group discussion. So in mobbing, code review happens implicitly. If you have five people in your mob, then an everything that's been typed is the result of a group consensus. That means everything that you typed by the end of the day has been reviewed by five sets of eyes. Also, everyone's working together, so everyone's involved in every step from thinking about how to solve the problem through to execution. So, in the end, everyone in the mob knows how the solution was achieved so they could reach it again. So now you know how to mob, and you know the desired outcome, but why would you want to mob? What kind of problems does it help you approach? Well, mobbing helps boost confidence, unfamiliar tasks, doing builds confidence, and it helps remove barriers. And also, it helps remove barriers within a team, so if you're discussing everything and kind of bringing up ideas and deciding what the best approach is, it leads you to a culture where it's okay to be wrong, it's okay to request something and say, I think we should go this way, and someone else in the group says, maybe that's not the best idea and you have healthy discussion around it, brings the team together. For unfamiliar tasks, you've got tasks that are unfamiliar to the whole team, so suppose your team just discovered Cloud Foundry, and no one on the platform team knows anything about it, but you want to stand up a POC. Well, everyone on the team could get together and have a group brainstorming and discovery session and work towards the end goal. And then, in the conclusion, everyone kind of knows the steps that went into it and where you went to find resources on it, and it makes everyone familiar. In the case where you have subject matter experts and it's unfamiliar only to some people, then it leads to really good teaching opportunities. I've personally found when delivering training, like the Kubernetes course that we delivered at the beginning of this summit, the best way to really understand something is to teach it, and by extension, even if you do understand it, the questions you get from people who are learning for the first time help you realize there's aspects of it that you may not have realized at the outset, so everyone learns, and it's two-way teaching for everyone. Also helps you avoid getting stuck down tangents, so I know when I'm soloing on things, I often get tunnel vision on what I think the answer is, and maybe that is an answer, but maybe there's an easier answer I missed at the start, and maybe I lost track of the big picture and I'm solving a problem that isn't a problem. By bouncing ideas off of each other and requiring group consensus to proceed, it helps you avoid those scenarios. Finally, avoiding single points of failure. You often hear this phrased as the bus factor, so if you think about your team at work, what would happen if one person at random is hit by a bus after work, or takes leave or leaves the company? What if it's the one person that knows how to configure that thing on the platform, or it's the only person that knows the F5 config, and now you have a deadline looming, they're nowhere to be found, how difficult is that? If you approach to new problems with a mob, everyone knows, they have the shared knowledge and the shared context going forward. When I was working with Kai at Fiserv on this, I came to think about mob programming like mesh learning, so the idea that each person in the group is learning from everyone else, and what each person is learning might be different from each other person, but everyone comes out with more knowledge than they went in with. With that, I'm going to pass it over to Kai to talk about how they use mobbing at Fiserv. So, where do we fit in? At the time, around about eight months ago, the finger platform had multiple open source CF foundations, and these were created independently of one another, and they were pretty hard to update. They were on update cycles, and there was no formal testing between environments, and therefore it was pretty difficult to maintain and keep in line with the risk cadence of CF deployment. We also had a manual build stack release process, and this highlighted a need to move to a more focused delivery mechanism, something that would improve stability, but also deployment confidence. The main thing is that we needed systems that are easier to maintain after day one. So, if we can achieve what we needed, we need to become familiar with multiple complex tools at the same time, like Concourse Bosch, BBL Terraform, Vault and Credit, but we needed a good knowledge base on Concourse and Bosch, and we needed a way to do it. So, we had lots of experts in different areas, but we needed them to be experts in all the things, and people tend to learn differently and at different paces. They encounter different problems, and they also have different personalities. So, therefore, we thought that mobbing seemed a good solution to help to achieve consistency within the team. So, to support our goal, I've automated Cloud Foundry pipelines and automated build tools pipelines. We had to learn Concourse Bosch, so we approached EngineEar better, and they came on site to deliver a weeks training course to help us get a good grounding on what we needed. Once we had that good grounding, things felt a little bit better, but people learn at different paces, and they learn differently, and there's so many factors which can affect this. The trouble was we didn't feel all that confident on how we'd make a start. It's a new thing. We had to completely change the way we do things. So, again, we approached EngineEar better, and we said, hey, come and help us out again, and we asked them to help us make a start on our work streams, and they thought it would be a great opportunity to introduce mobbing to us. And especially that we'd be able to, you know, work on the things we needed and work on the things we wanted. So mobbing with EngineEar better brought in, as Colin mentioned earlier, there's this thing around extreme programming. We had frequent refinement sessions, which obviously depended upon the tasks, but we also had frequent prioritisations of tasks. This depended upon the refinement sessions. Basically, we had a very intense two-week, nine-to-five mobbing every day. I say it wasn't sustainable every day, but I think it was definitely worthwhile. It was a very good grounding of mobbing, but difficult to fit in with the BAU. Once we finished the mobbing training, we had to determine how we'd best fit this in to everyday operations. And this matured over a couple of weeks. It definitely wasn't plain sailing for us to work it into everyday workings within a team, but by using specific slots and sessions and also using tools that we use, like our notification channels in work, we were able to create reminders and put sessions in place for different people in different teams, different work streams, where they can go off and work as a group. The main point is mobbing requires 100% attention. You have to be upfront about this commitment. It's really important. If you're not clear about when you want to break and what the objective is for each mobbing session, it's going to severely affect the output of the group. We also found that time-boxing on mobbing sessions allowed us to allocate time to other responsibilities, and this meant that we weren't neglecting anything else. We could work it into our work-in-week, work-in-day, whatever we felt, but we had to be strict about it. You can't be relaxed about the time that you spend allocating to things. It becomes inefficient. The other point is how do you mob with a distributed team? This is really tough. Especially when it's not balanced. You end up with people within different environments. When we were training, this wasn't so much of an issue, because luckily our remote engineers made their way down to the office so that we were all together. We were all in that same level field where we can talk to one another and see each other's body language. It was really good. But then once the training completed, it became difficult. It wasn't difficult for the people who were the majority in the room. It was difficult for the people who were the minority on the remote end on the call. One thing we learnt that, to counter that, the best thing to do was to reduce the minorities and be the majority. Get everyone on the call with you. Get everyone on Skype, get everyone on Hangouts, whatever tool you use to have a remote session and actually use that as your mobbing platform, influencing other teams. This was quite interesting, because we tend to do a lot of cross-functional work streams in FISO, which is really useful because, again, knowledge sharing. By doing so, by applying mobbing to cross-functional teams, what you end up with is the ability to influence the teams that the engineers belong to. It goes back. It spreads. It becomes something which is more common in the workplace rather than, oh, they're mobbing over there. I don't know anything about that. So, just to go over a few points that we found prevalent when we were mobbing FISO, consistency is key. So, all participants, consistency ensures that all people can focus on a task at hand and what's important. It's really, really imperative to take breaks. It's very strenuous. You're engaging for long periods of time. When you're about to mob, determining at the right of the beginning the objectives and when you're breaking and what the outcome needs to be, it helps enable the mob to be a mob, mobbing etiquette. So, this comes down to, so you've upfront, you've defined everything you want to achieve and sort of the rules of the mob. What you then need to do is stick to them. So, we saw a few times, I guess, in our experience of some of the sessions we had, people would return from breaks late. And during the mobbing session they pull their phone out and they start replying. They're not engaging. That means that you're wasting that effort. You're wasting that consent of having a debate, having a discussion about something. Somebody that could have a really valid point is not engaging. Please, please, make yourself present. Conference of Regents, this comes back to remoting again. So, if you are on a remote call, if people have to be in the same environment where you have distributed teams, make sure that you understand and you have patience when you're talking with one another on these remote calls. Sometimes it can be easy for people to talk over one another. Take your time, allow people to be heard. It gives you, basically, you need to create an environment where all mob participants are able to contribute freely. And this is 100% necessary to ensure 100% contribution. Beware of leaders. This is an interesting one. So, I will lie. We've got a book on the bookshelf that my wife ordered. Black box thinking. And it's all about beware of leaders. And the actual example came out, I think, from medicine. So, predominantly that if a leader is standing up and talking, he's very strong about their opinion, you're less likely to either counter it or ask more about it or question it. Ask questions. You need to ask questions. It's really important. If you don't understand or agree, it's a place where you need to ask about it. And remember, as Colin stated, the desire I come mobbing is that the decisions are made by group consensus. Work teams. I got this up a few times for work teams, but for any type of task where the problem is not known, it's a knowledge sharing... I'm sorry, I've gone on the wrong point. Routine of familiar tasks, as Colin mentioned, is that if you're working on something new, mobbing fits in really well. And if it isn't, if it's just a repetitive task, and you need to upscale people on that task, then it's probably worth considering pairing it instead. So, remote teams. It is possible to mob effectively your remote teams. Obviously, when you're not in a room with one another, you miss a lot of human context. There might be a camera in the room, but it's not easy to see body language, and it's not the same. You don't get the same vibes, so be patient. There are tools out there, like instant messaging, or meeting software, or actually live code editing, where you can both contribute to the same piece of code at different times. So if you are swapping between mob participants in the group, you don't have to check in your code and push it, and then pull that down, you can actually work on the same piece of code and swap pretty instantly. But it is more prevalent that the mob in rules are a deal to. And clear requirements. This one is a tough one. So if you don't have clear requirements when you're about to mob on something, then trying to achieve a consensus on it, it's a waste of time. You're always going to be debating about something you're unsure of. And this is sometimes demoralising. Always time box the initial refinement or objective discussion. If you don't achieve what you need to get out of from the initial discussion, take it offline. This will help focus in on the outcome of the mob. So I guess I talked about what we needed up front, and I talked about the things we changed. But at the end of most of our work sessions, our work streams, by participating in mobbing, we succeeded to get an autonomous CF release pipeline. And this updates all CF foundations that we have. I think we have about seven at the moment. And they're all autonomous. All changes go through them. Different tests between each environment. And that was all built using Bosch as well. And we also have an autonomous build tools release pipeline. Also built using Bosch and staged environments, all testing between each environment. And all pipelines assure that any new version is tested prior to production deployment. But the best thing about the outcome of both work streams is that all of the team is familiar with both platforms and they can operate them as individuals. So we've also found that we've, since we've injected mobbing into our work streams that there are many ways we've benefited. And I think it definitely applies itself really well to operational issues. It allows all members of the mob to become familiar with how to triage production issues and then subsequently increases their confidence when they're problem solving. And I found that mobbing certainly fits well within our organisation. So I'll hand you back to Colin to look at how they mob an engineer better. Thanks, Guy. So mobbing an engineer better. It's a lot less structured than is a Pfizer, but that's because as a consultancy everything we do is a bit less structured. The main way we implement mobbing an engineer better is as a consultancy service like we did at Pfizer. So an engineer better, we love teaching clients about how to leverage technology and process to make the most of their platforms. But what we love even more is actually delivering value while we do that. So I've found instructor-led training where you have one instructor, many students, working through some preconceived questions in a preconceived set amount of time. The outcome is the students hopefully have learned valuable skills, but then it's up to them to bring that back into their teams, into their normal workflows and apply it to the stories that they're working on. With mobbing we found you can have one consultant from engineer better and many clients all learning from each other while delivering value because what you're mobbing on is a story from the team's backlog that delivers value to their stakeholders. On the other hand we have some open source projects that we do within engineer better. Primary one being Concourse Up. CLI tool for deploying concourse handles all the boss stuff for you. Currently only on AWS, but we're working on it. Within engineer better we pair 90-plus percent of the time but being a consultancy sometime when the bench team rotates a lot sometimes people go off on billable work sometimes we have an odd number of people on the bench and depending on the problem sometimes a pair and a solo works well sometimes a mob works really well and sometimes a pair gets stuck down some tangent and forming a mob to look at that problem drags them out of it. So we've spoken a lot about benefits of mobbing and why you would want to but why is there resistance to propose it to clients it's not always an enthusiastic response and quite often it's something like this and if you've ever tried implementing pairing at a kind of a big old school enterprise you probably heard something similar to this of well how could multiple people working on one problem possibly be more efficient than if they just all worked on stuff by themselves and to be fair it depends on the problem but for the most part I've actually found that a lot of people working on one problem if you're doing it right is actually faster than if they worked on it separately but that's not really the point the point with mobbing is that everything is the result of group consensus so you've brainstormed the solution with the whole group generally this catches more edge cases than you would with a smaller group or a solo person working on it and this reduces problems down the line when there's things you haven't tested for and it causes errors that are harder to back out of and you also gain insight into the problem with lots of knowledge sharing so the really big takeaway from mobbing that I've seen is with five people working on one problem no matter how long it takes you to solve the problem the result is you have a solution that is known and understood by five people if you have five people working on five problems independently whenever they finish their solutions you now have five solutions each one known by one person so as a recap assembled some general principles we found useful with mobbing some are recaps of earlier points some are tips on how to implement some of them so driver can't do anything without permission don't let the driver go off and be a leader and be a hero and type stuff make sure everything is the result of group consensus and use a timer be really strict with your timing actually set a stopwatch when the alarm goes off it hands off time to swap around limit the team size five really is a hard maximum as soon as there's more than five it gets annoying for the driver because you're having too many people offering suggestions and it's really hard to find the right balance between having everyone cycle enough as driver that they're not sitting not typing for too long while also having the driver have enough time to actually type something in between all the discussion avoid distractions I mentioned before leaving your phone alone but also avoid side conversations even if the side conversation is related to whatever the mob is discussing it's still not the whole mob coming to the consensus on something and as soon as one person is disengaged feels like their voice isn't heard it starts to become ineffective and because all of this is really draining make sure you take frequent breaks but possibly more important before you leave for the break decide when to come back so that you don't all come back and find that there's that straggler that's disappeared and then you have to decide what you want to do about that so that in mind why don't you try it out for yourself and your team thanks for listening to us so maybe you explained this but I didn't quite catch it what percentage of your...it sounds like you're not mobbing all the time you kind of mentioned you kind of have to go into another mode at other times so what percentage are you mobbing I guess it generally depends on the type of work you need to do so obviously that if we've got issues that we have to fix up front and stuff that's down right now and we feel it's beneficial to mob on a... a real issue that we'll mob at that time and on project work but there'll be a lot of things that we do every day that are very similar to the last week or the week before so we'll consider pairing or we'll have individuals do it generally it's around about 50-50 and you've got to balance it around people on leave as well and things like that so I'd say around 50-50 is a good mix is it the same day? do new mobs spawn when it's a new...a different problem again, it works from dependent but one thing we had during the times we were trying to work out the balance is that I found that if you were the same mob doing things then you're not knowledge sharing are you? so you kind of build up knowledge in this one like bit of project work you're doing so I pick out people and put them into different mobs and replace people every sprint or couple of weeks and that would help then drive the need to learn for that new person injected into the mob and they were doing something new, something interesting and then do it with other people as well because it's randomly sometimes but it keeps things interesting and it also keeps different personalities thinking of answers or thinking of solutions to different problems some people have strong opinions about design and how to implement things how does moderation look like in a mob if someone is trying to take too much time or never really give other chance to talk is there anyone who owns that or how does it work? when we did it at Fiserv it was myself and Dan Jones in the front here and we sort of acted as moderators for the group to get it started so I actually skipped being a driver on most of the rotations and would just sit there and be strict with the time and make sure everyone swapped but generally you can self-organize it would be similar to when you're pairing like how you decide when it's time for someone to drive and otherwise so as long as someone keeps track of the time and everyone knows to be strict about it I can see how it would work I assume that's probably what's... What does the mob do during time-consuming operations like say you're doing a Bosch deploy that's going to take six minutes what does everyone do? Do they leave and play on their phones and then come back or how do you deal with that? So I'd say if there are times that things like that occur then you often have slots where you can review pull requests there are pull requests out there you can review them as a mob there are things that you can do and discuss as a group not just wait for things to push through pipelines and things like that so be creative, look at things break down refine go back to your board and refine some tasks while you're waiting for the result of what you did six minutes ago When you have a group of very different characters some are very dominant and they speak 80% of the time others are very silent and just are there for the consensus and say yes or no is there a mythology to make them somewhat equally It depends on the team it's kind of up to the team to foster the right kind of team behavior I guess but you want to make sure everyone feels safe to raise their opinions and it's similar to when people first start pairing and you feel like, I certainly did you feel like you don't want to slow down the pair and you don't really understand you're afraid to make mistakes and it's up to the more experienced people to say like it's okay, we'll slow down we'll make sure and if there's really dominant people it's really good if they can notice when people are being really silent and maybe try to call on them or pull them into the conversation so it's kind of up to the team to self-organize that's the answer Then from a question for me do you propose adjustments to the working environment for mobbing so bigger screens or whiteboard, smartboard maybe so you can collaborate on the work and the driver does on the smartboard is that helpful would you propose that or you say it's more like the same work station you have for pair programming So I guess it depends on how the team is set up if everyone is co-located it's really easy you get the biggest screen you can get or a projector you sit everyone down at the desk you do one keyboard and you work on it and you work that way as soon as you have remote people it becomes a little harder and I think the answer is just try different things and see what works the end goal is to have really good group discussions and collaborate with each other and one driver at a time and as long as you fall within those constraints how you implement it it's use whatever technology you can use at your company are much more constrained than others and also if you try something and it's not working maybe try something else the next time you mob Meeting rooms Sorry microphones talking of people that like to talk too much in a group meeting rooms tend to be good for mobbing sessions when co-located because they normally have a big screen in enough room to fit people in comfortably the only issue there is are the desks that the driver doesn't have to crane their neck whilst they're typing I think an important point to remember though is I think an important point to remember is that in this day and age a lot of companies want to push remote working so if you become more comfortable with remote working and working with people that are distributed then it's probably better for you and better for your company so I'll try and push that if you can Any more questions? Thank you