Collaborative coding can be a fantastic forum for getting stuff done at the same time as learning programming techniques and getting to know other developers. I’ve been enjoying the recent Samman Society Ensemble sessions where we work on our website sammancoaching.org. Some of the participants have asked how I set up the shared ensemble machine that we use, so I thought I’d write up some instructions.

When you’re coding in an ensemble, about 4-8 people together, you’d like to frequently switch who has the typing role, to keep engagement high and get the benefit of everyone’s input. For this to work well it helps if the switching cost is a close to zero as possible. The best solution I’ve found so far is actually to use AWS AppStream. You set up a cloud machine running Windows or Linux and install an IDE on it. Everyone can access this machine from a browser, no need to install any other tool or client. Switching typist is just a case of calling out who it is, and they can begin using the machine immediately. Everyone can see what they are doing in their browser.

There are a few disadvantages though. Many developers are used to working on a Mac and don’t know the keyboard shortcuts for Windows or Linux. Some people experience a significant amount of lag especially if they are in a different part of the planet to the cloud machine server hall. It’s not free to run one of these machines, either, but the costs are a matter of a dollar or two per session. Overall, I find the experience is pretty good for everyone and a good compromise for an open ensemble with participants from around the world with different tool preferences. We all have a browser and everyone can code in an IDE on Windows even if it’s not their usual preference.

Steps To Create an Ensemble Cloud Machine

If you haven’t used AWS much before it can be a bit daunting because there are so many options. Let me take you through the steps to set up a machine for your ensemble. First a disclaimer – I’m absolutely not an expert with AWS and I don’t know if I’m actually using this tool the way the tool vendor intends. I am sharing what works for me.

Once you’ve logged into your AWS account, you will want to open the “AppStream 2.0” console, you can search for it in the top left search box:

Inside AppStream there are lots of options on the left menu, for Stacks, Fleets, Images and more:

Honestly I really don’t know what most of those things are. The part I’ve used is ‘Images’, specifically the ‘ImageBuilder’ tab:

The button you want is the orange one on the right – ‘Launch Image Builder’ – that will let you create a cloud machine for your ensemble. This brings you into a four step process to define and launch your machine:

Step 1: Choose an image

There are a huge number of images to select from. I picked the most recent Windows Server image from the most recent base image. I’ve also had success with Amazon Linux images if you prefer that.

Step 2: Configure Image Builder

First you need to choose a name for your Image Builder – this needs to be unique and help you to remember what this machine is for. It’s hard to change this name later, so choose something descriptive. Then you need to select which size of machine to have:

For a developer machine my instinct is to get the most powerful box available, although having said that I’m not sure how much difference it actually makes in practice. The lag in the network is probably more significant to how you experience the performance.

Step 3 – Configure Network

The essential step here is to check the box ‘Enable default internet access’ – without that your machine will be pretty useless for programming. You also have to select a subnet:

In my AWS region there are three subnets so I chose a random one. I honestly don’t really know what difference it makes. I also accepted the default security group, again I’m not sure what that does.

Step 4 – Review and Create

This page lists all the options you already chose, so you can check if you missed anything. Make sure you really did select “Default Internet Access Enabled” then hit the orange button to create your image.

Now it should appear in your list of Image Builders. It might be in a ‘Pending’ state for a few minutes while it gets created. Eventually you should be able to select it and press “connect” to launch it in a new browser tab.

Select ‘Administrator’ to log in with full permissions to everything and open the Windows desktop:

What you have here is access to a full windows machine through your browser. There is a extra menu along the top that you might need sometimes for accessing the machine’s clipboard for example. Honestly I’ve just found it completely intuitive and like a normal windows machine just in a browser. This is where you go ahead and install your usual development tools like an IDE, Github desktop and so on.

Once your new machine is all set up and ready to use, you can share it with the other members of your ensemble. The only gotcha here is you can’t just give them the same url as you’ve got in your browser address field. You need to go back to the AWS console and create a streaming url:

When you’ve opened a video meeting with the other people in your ensemble, put this Streaming Url in the group chat and they should be able to connect to it straight away. I’ve found that this url only works for an hour or so after you create it so if it doesn’t work, try creating a fresh one. Be careful who you share this url with – they will have full access to your cloud machine. On the other hand, they won’t be able to access your AWS console so the damage will be limited to this machine, which you can always delete and start over.

After your session when you’ve finished coding and pushed all your changes, you’ll want to shut down your machine. The costs of running these machines is relatively small, but it adds up if you leave your machine running all the time. Select “Stop” from the ImageBuilder Action menu. For your next ensemble, you can use the same ImageBuilder. Start it and create a streaming url to share when it’s ready to use.

Get Involved

I’d like to thank Llewellyn Falco for introducing me to ImageBuilder and for being a regular attendee at the Samman Ensemble. We are a community of Technical Coaches who aim to spread useful resources and support one another. If you’d like to support our work on sammancoaching.org and get involved in our ensemble, please join my Patreon which will give you access to our Discord server. The #samman-ensemble channel has all the details of when and how to join our meetings. In any case I wish you every success with your own Ensemble meetings.

If you have comments on this post – perhaps you’ve found a better way of doing this – you can find me on social media as ’emilybache’.

I very rarely go to the cinema, but this weekend I took my two teenage daughters to see Barbie. Mostly it was fun and silly but several scenes had me in tears. Now I want to go see it with my mother, actually.

What really got me was the depictions of the different generations. The grandmother in her kitchen (my mother) trying to create a world where girls of my generation could do anything, be anything. My generation – we got far but it was hard and there is still a long way to go. America Ferrera’s monologue “It’s literally impossible to be a woman…” says it all.

And the next generation, that of my children?

I have a great career in tech. I’ve worked hard and I try not to worry if I’ve been discriminated for or against along the way because of my gender, (which I probably have). I’ve reached a pretty good place.

Both my children are starting new schools in the next few weeks, and both are nervous and excited about it. The older one begins university, studying engineering physics. She looked at last year’s class photo and was troubled to find she couldn’t easily spot any women in it. Maybe they are all standing at the back?

My younger daughter has reached an age now where she can choose a school and some of the subjects she will study. She has chosen science and technology and a school she liked partly because they deliberately mess with the gender balance. Each year they have three classes (forms) doing technology, and they make one all boys, so that the other two can have a more ordinary gender ratio.

When I studied physics and engineering all those years ago, the gender ratio was pretty terrible. Doesn’t feel like it’s got much better. I wish for so much more for my daughters.

After three years of close collaboration with ProAgile I felt it was time to strike out alone as an independent Technical Coach. I continue to recommend my former colleagues at ProAgile – if you’re looking for an agile coach or some training in agile methods generally, they are world class. I hope to find opportunities to collaborate with them again in future.

For myself though, I feel I’m on a slightly different path. I will continue to lead and promote the Samman Technical Coaching Society, and to work as a technical coach. I have a couple of other projects I want to work on as well, that I’m hoping to carve out some time for soon. More details to come later.

This article was first published on ProAgile’s blog

With good facilitation, one hour is just long enough for a group to both create an agenda and have some interesting conversations on topics they’re concerned about. We at ProAgile have been holding these kinds of meetings regularly both before and after everything went online in 2020. We’ve found it’s a great way to create community in a world of remote work, and make connections with people beyond our usual collaborators. 

Most people can find an hour in their schedule so it’s easier to attend than something longer like a workshop or conference. The trick is to have really good facilitation so you can get a lot of value from a short amount of time together. This post explains our secrets for a successful online one hour open space.

The invitation

When you invite people to your meeting, give the starting time of the hour, but explain that the video call will be open up to 15 minutes before that for casual discussions. Those additional minutes mean anyone who is unsure of their video setup or who doesn’t know you very well can feel comfortable turning up early and getting some help. It’s a chance for the facilitator to greet people and welcome them before the formal part kicks off.

We don’t spread the meeting invitation link on social media, we only send it to the people who have signed up for the meeting. So far we haven’t had a problem with strangers disrupting our meetings with unwanted content.

The Technology

We use Zoom for our meetings because it has the functionality we need for participants to move freely between breakout rooms. We have also previously used QiqoChat before Zoom had that functionality. (QiqoChat can help bring similar functionality to Teams or Google Meet.) We also use Miro as a collaboration tool for creating the agenda and communicating with one another during the meeting.

The Welcome and Introduction

Time: 2 minutes

Be sure to greet everyone warmly when the official meeting time begins. Make it clear everyone is included, and that together we are going to have some great discussions. We know that because everyone will take part in deciding what topics we will talk about. If the agenda doesn’t seem interesting then you can fix that!

Remind people to put the name they want to be called by in their Zoom window, and to keep their camera and microphone switched on as much as possible. Give out the link to the Miro board (paste it into the chat).

In order for other people to find out about future open space meetings, you may want to post about this one on social media. A picture of the current meeting could be a good addition to that post. Before taking a screenshot of the zoom meeting, warn people that you’re about to do that. If they don’t want their own image to appear, tell them to turn their camera off for a minute while you take the screenshot. Be sure to edit the image to blank out the names of people without their cameras on before you post the picture.

The Sponsor Slot

Time: 1-2 minutes

If your meeting has a sponsor, give them 1-2 minutes to explain who they are and advertise what they want to advertise. Make sure they keep it short and to the point. Thank them for their sponsorship.

The Open Space Technology explanation

Time: 2 minutes

It’s always good to be reminded of how Open Space is supposed to work, however many times you’ve taken part before, and of course it’s essential to introduce newcomers in a good way. Keep this part brief and to the point.

Ask people to assume that everyone here is a really interesting person with lots to share about topics you care about. Every individual who comes to your discussion is the right person. Take time to both talk and listen. Keep the conversation flowing and don’t let any one person dominate.

Explain that it is absolutely fine to switch rooms and join a different discussion group at any time. If you find you’re not learning or contributing anything, take a look at the agenda and just move somewhere else. In Open Space-speak, this is called “the law of two feet”. Note that there are some instructions on the miro board about how to switch breakout rooms if you are unsure how to do that.

Often a conversation benefits from having someone take notes on the Miro board. It’s a way to allow others to get an insight into what you talked about, and to help you remember and follow up on what is said. Encourage people to volunteer to be a note-taker for their room. 

The Agenda

Time: 7 minutes

We find the ideas for agenda items really start to flow when you put people in smaller groups and ask them to write sticky notes together. We create random breakout rooms for 2-3 people and give people the instruction to talk about their agenda suggestions for today. You may want to prompt this with questions like: “What’s challenging at work? What’s a great insight you want to share or get feedback on? What’s a great book you’ve read, and learned something from?”

Ask people to write their topics on sticky notes on the shared miro board on the agenda frame.

The breakout rooms are open for only 5 minutes, we set a timer on the miro board. Hopefully a bunch of notes will now appear on the agenda. When everyone is back, encourage them to move the notes around and create the agenda they want to see.

We don’t normally ask everyone to present their topics, we find it’s enough for people to just read what’s on the notes. If any notes are particularly unclear you could ask for a short explanation from the author at this point. 

Sometimes people want to suggest merging the discussion of two topics. That can be a good idea but it can also take longer to decide to merge the topics than is worth it. Don’t cut people off unnecessarily but you need to keep this part short.

Before you send people off to the discussions, again remind them to be friendly and to assume everyone has something interesting to say. Point out if there are too many people in one room for comfortable conversation they could self-organise and split the group across two rooms instead. 

The Discussions

Time: 17 minutes discussion + 3 minutes between sessions + 17 minutes discussion

Open the planned number of breakout rooms with the options “Let participants choose room” and “let participants change room”. Ask everyone to join whichever discussion they want to. Explain you will not close the breakout rooms between the two discussion slots, people can just move on to the new rooms when the timer has pinged and their first discussion draws to a close.

The room numbers for the second discussion are distinct from the first ones. This is so that the second discussions can get going on time and don’t need to wait for the first discussions to end. This means you actually have twice as many breakout rooms open as there are planned discussion slots.

Set a timer on the miro board which will go off when the time is up for the first discussion. 

There is a frame on the miro board where people can share useful information and links to things that come up during the discussions. (You can also use the zoom chat for this but then only people in your breakout room get the link.)

The Takeaways

Time: 7 minutes

At the end of the second discussion slot, close the breakout rooms so everyone comes back to the main room. Take the opportunity to thank everyone for the discussions you’ve had and point out everyone has surely learnt something new or been reminded of something useful today. They probably have ideas they should try out now. Point people at the frame on the miro board for takeaways:

We find people are better at identifying their takeaways when talking in smaller groups, so create new random breakout rooms with 2-3 people in and give people the instruction to talk about what they are taking away from today’s discussions. The priority is to talk – writing a note on the miro board is a bonus for the rest of us and it might also help you remember what you said.

Keep those rooms open for only 5 minutes, set a timer on the miro board. When everyone comes back, thank them again and declare the open space over for today. You might mention if there is another one planned and if so, how to find out about it.

The After Party

Time: up to 15 minutes

Don’t close the zoom meeting immediately, leave it open for perhaps 10-15 minutes in case anyone wants to hang around and ask the organisers or sponsors anything in particular. People might want to exchange contact details and continue their discussions in another forum. You could open some more breakout rooms to allow small groups to “end” a conversation, share contact details, etc. 

Photo by Designecologist from Pexels

I am convinced that the world needs more technical coaches. Practices like Refactoring and Test-Driven Development don’t just happen by themselves. It takes quite an investment in time and effort for most developers to see the point, and to realize how much it would help them to work this way. Then they need to put in some time and effort to become proficient using these skills, and a supportive team culture is essential. Having an experienced technical coach on hand can make all the difference for success. 

During 2021 one of the teams I coached was struggling to make progress in a large, complex codebase. We worked together in an ensemble which enabled them to pool their knowledge and get a grip on the code faster than before. We held several learning hours focused on test design which helped them to improve the unit tests and get better feedback on their changes. Everyone said afterwards they felt like working with the coach had helped them to work more effectively. I’d like more teams to experience this kind of progress. 

Samman is the method I use when I’m coaching software development teams. The two basic components are ensemble working – where you gather the whole team to work together on one programming task – and learning hours – where developers learn new skills and practice on exercises. 

I published my book “Technical Agile Coaching with the Samman method” in January 2021, because I wanted to help other technical coaches to use this coaching method and to promote agile ways of working. When I held this book in my hand for the first time it was somehow larger and heavier than I expected. I felt a huge sense of accomplishment! Since then, I’ve more and more realized the book was just the beginning. There are a lot of development teams out there and only a few technical coaches who really know how to help them.

The book generated quite a bit of interest and I’ve spent a large part of last year talking and writing even more. I was asked to contribute articles about Samman coaching for some of the biggest online magazines in our industry – Methods and Tools and InfoQ. I also had a steady stream of invitations to appear on podcasts. I just went through and counted them – eight were published in 2021! (I list them at the end of this article)

I was invited to give the keynote address to the ACCU conference. It’s always a huge honour to give a keynote and I spent many hours preparing this talk. For the second time in my career I was also invited to speak at the annual Agile conference organized by the Agile Alliance. It’s one of the biggest conferences in the software world – also a great honour to be asked to speak there.

For most of my career I’ve been part of the Agile, XP, DevOps, Testing, Python and Java communities within software development. Although I have previously done a fair amount of architecture work, this year I feel I also took a step into the Architecture community for the first time. I was invited by O’Reilly to be a judge in their Architectural Katas competitions. I see technical coaching as one aspect of the kind of technical leadership that architects usually bring in an organization. Through this competition, architects from all kinds of organizations can practice their skills and learn from each other. I’m really happy to have been involved.

Looking forward to 2022, I’m anticipating another year of hard work doing technical coaching with teams, but also more and more training others to do coaching. I’m getting a lot of enquiries from organizations who see a need for better technical practices. My colleagues and I have only so much time available to coach teams, so I usually suggest pair-coaching with people already in the organization. Most organizations already have architects and technical leaders and often those people would like to learn to coach teams using the Samman method. It’s for that reason that we’re ramping up the train-the-trainer programme offered by ProAgile. We have new courses on Ensemble Working and also on Learning Hour Design, two of the key activities for a technical coach using the Samman method.

I remain convinced that good technical coaching is essential for building up productive and happy development teams. I look forward to continuing to spread better ways of working and coding together with lots of great people in 2022. Happy new year!

Podcast appearances 2021:

  • DevOps Sauna – a lovely chat with Sofus Albertsen, a former colleague of mine.
  • Richard Kasperowski – we talked more about music than software I think!
  • Mob Mentality Show – Chris Lucian and Austin Chadwick were really friendly and easy to talk to.
  • Mosaic Works – Alex Bolboaca really knows his stuff and how to interview people
  • That Tech Show – I was really pleased to appear on this one which has such a varied lineup.
  • Arrested DevOps – Matt Stratton is a busy man, heavily invested in the DevOps community. Great to talk to him.
  • Maintainable – the theme of this podcast is making existing software more maintainable, something I can really get behind.
  • Making Tech Better – Clare Sudbury got me talking about Refactoring – a really important topic.