At the beginning of November I started at Kosli. It’s not my first job - I have plenty of experience when it comes to starting afresh. In my time as a consultant it felt like I was starting a new job every time I had a new customer. So, although change is always a challenge, I thought I knew what was coming my way. However, this time there was something I didn’t take into consideration - the experience would be fully remote.
Where is everyone?
On the first day I realized I had no idea what to expect. When you show up at a new office for the first time there’s usually someone to take care of you. You meet your new colleagues, you get to know the space, maybe you need to sign some papers. But, when the first day happens and your desk is just a few meters from your bedroom, the experience is quite different. I didn’t realize how much I’d miss the thrill of having lots of new things come my way.
There were people I could talk to on Meet or Hangouts, but they weren’t there in the same physical space for a casual conversation. The only things around me were my laptop, my cup of coffee, a wooden bullfinch, and a little picture of chickens hanging above my desk.
I got access to the company drive, I was invited to Slack, and a number of meetings showed up in my calendar. The most important thing I discovered during the first day was that at Kosli we do mob programming and I was invited to join the team Hangout the next day at 9am. And that’s where my Kosli adventure really began. Do you know what we mean by mob programming? Let’s remind ourselves…
Mob programming (informally mobbing) (aka. ensemble programming) is a software development approach where the whole team works on the same thing, at the same time, in the same space, and at the same computer. This is similar to pair programming where two people sit at the same computer and collaborate on the same code at the same time. With mob programming, the collaboration is extended to everyone on the team, while still using a single computer for writing the code and inputting it into the codebase.
Ok, but in the same space tho? 🤔
My colleagues are hundreds of kilometers away, so in the same space, and at the same computer doesn’t really work. But, it turns out that this doesn’t really make it any more difficult. There are some rules when it comes to mob programming techniques, but it all came naturally once my colleagues started working.
I joined the hangout at 9am and dived straight into solving problems. Or I should say straight into watching my colleagues Jon, Simon, and Arstan solve them. Our product consists of a few different parts and on this particular day we were focused on solving some interface challenges - Kosli’s frontend is a web application. I started my IT journey as a web developer, so I thought this would be familiar territory for me, but I was quickly proven wrong. Luckily, it wasn’t really a problem. My colleagues were very patient with my constant interruptions anytime I wanted them to clarify something or make sure I understood what they were talking about.
So, what does mob programming look like in practice when everyone is remote? Simon shared their entire screen while the rest of us discussed issues and solutions. Sometimes it was as simple as someone just directly spelling out what should be added to which line. It seemed so natural to them to have three (four, including me) people working on one problem. It also seemed completely normal that some of us had literally no idea what should be done.
Why we mob
You might think it’s a waste of time, and I have heard this concern before, that four people could solve four different problems instead of just one. But, solving the problem wasn’t the only positive outcome from the session. Each one of us learned something and I refreshed my programming skills. And at the same time we took care of code review while the code was being produced because when you do pair or mob programming the review is instant and constant. This continued all day and I don’t remember the last time I was as exhausted after work as I was that day. Until the next day came!
Sami joined our mob session on day 2. That made 5 of us, so we decided to split. I ended up working with Sami and got to know another part of the product. This time we focused on the CLI Kosli client - a tool our customers use to communicate with the web app, reporting to and reading data from it. The style of this session was a bit different from the day before - where we all actively participated in figuring out problems and solutions - because this time I had absolutely no knowledge about this part of the system, or the language we use for the CLI tool.
Instead, Sami shared the screen AND did the work. But more than that, and with great patience, he explained each step as he went. As a new, not exactly confident member of the team, I felt relieved that I could be “the audience” for a while, but as I became more familiar with the code, the more eager I became to take responsibility for screen sharing. Again, I welcomed the end of the working day, tired but with the satisfaction that comes after you have put a lot of effort into whatever you were working on and you’re happy with the result. Third day in and I already felt I was contributing.
On top of all that mobbing fun I was invited to join customer meetings, including sales calls. And that allowed me to become familiar with the challenges we were facing with current and potential customers. The fact I knew little about the product was not an issue. Slowly and steadily I could start putting together a picture of what we were doing. It is much easier to address an issue in the code when you’ve heard what users expect from a particular part and why. It is also much easier to understand the product when you can see the customers using it, giving you real life examples.
And just like that it was Friday
So, what did I make of my first week overall? As a new member of the team I lacked confidence, which is probably not that surprising. The thought of having to join the mob programming session was almost terrifying and I was sceptical of the whole concept. I worried I wouldn’t perform well and would embarrass myself. I know not everyone feels the same, but I’m sure this anxiety is not only my problem.
But a few sessions with my new colleagues, watching them for a while and understanding what they were doing and why, helped me to overcome this fear. I realized that no one is out to get me, we are all working on finding the best possible solution together, and we learn as a team on the way. And we also get to know each other, which I consider to be one of the most important aspects of teamwork.
Remote work has its perks and its challenges. It is much easier to get to know people if you meet them in the office almost every day and chat with them during lunch or coffee break. It’s difficult to replicate these interactions when everyone works in different locations, but mob programming, even remotely, helps to address that. Maybe you’ll go and have a coffee by yourself, but you still spend the majority of your working day WITH your colleagues.
On the first Monday I had only a very vague idea about Kosli and how it can help our customers. But by the end of the week, after a few days spent on different tasks with my fellow team members, I was confident enough to speak up during customer meetings. That doesn’t mean I suddenly understood it all, but I learned so much in such a short time. I still like to play detective on my own and add insane amounts of println statements to figure out where the problem is, but most of the time it’s much more fun to work with colleagues, even if they are really far away.
Teamwork makes the dream work
The “never walk alone” attitude at Kosli applies to more than just the mob programming sessions where we develop the code. For example, I know that I won’t be forced to face a customer on my own and that working side by side with a colleague makes a big difference. I am pretty sure they would be happy to write this blog post with me if I asked, but this time I wanted to speak for myself. Ok, I still asked them for feedback and then edited the content a bit. But it’s still my voice, just improved!