Tuesday, November 29, 2022

Agile Testing Days 2022 - The Unicorn Land We Build Together

Being back at Agile Testing Days was a blast. I had some energy-draining weeks and months before, and this event did require me to prepare quite a bit as well - two brand-new sessions, both paired. In hindsight, it's been worth it and I wouldn't have missed it. Here's how I experienced the conference with only a few people highlighted of so many more I really appreciated seeing again or getting to know for the first time. Brace yourselves, this post will be long as all my conference reports and this one spans a whole week.


Saturday

Last year it was really nice to arrive on Saturday already before the conference week. It reduced anxiety when it comes to traveling, it allowed seeing people earlier in a quieter setting, and especially sleeping in on Sunday before the event starts. Didn't regret it one bit, so I chose to repeat it this year.

Arriving in the evening, a handful of other speakers had already made their journey to Potsdam as well. Like Jenna Charlton! We decided to go to dinner together and had a lovely evening with really good food. Time well spent, great conversations to start this with. Coming back to the hotel, people had already left the bar to favor an early night, so we decided to call it a day - just to meet Christian Baumann and Tamara Josten in front of the elevators! So, the bar it was and more great conversations before finally going to bed.

Sunday

I really enjoyed sleeping in and starting the day slowly. Meeting more and more people in the hotel lobby, catching up on more connections I've made over the years was just lovely. Like seeing Bailey Hanna again whom I first met at CAST 2018. And especially: seeing my learning partner Toyer Mamoojee again in person, after many years we could only meet online. Very special moment!

This night, I had a wonderful dinner group with Bailey, Toyer and Stephan Kämper. Great food to eat and great food for thought, lots of stories shared. Coming back to the hotel, it was time for Toyer and me to go through our tutorial one last time - it's always good to align once more the day before. I finished off the day by catching up with a few more close friends, like Dragan Spiridonov and Thomas Rinke.


Monday

The big day came - big for me, as it was the first time I gave a full-day session at a conference. I had a bunch of opportunities the last years, yet all of them had been canceled as knock-on effect of the pandemic. Yet this was happening indeed, finally! And Toyer and I even had 23 participants to join us for our tutorial "Let’s lead quality together!".

It was such a great experience, time flew as we had expected, yet we managed to make our concept work out in the end. We already received preliminary promising feedback. We're curious to learn more and improve this tutorial further and offer it at more events - as we do feel more people would benefit from what we benefited from ourselves.

Right after the tutorial ended, it was time to meet two dear friends and colleagues: João Proença and Rita Avota. I especially loved the fact that it was Rita's first conference and she had opted in for volunteering. Volunteering is such a great way to get access to a conference (besides buying a ticket or speaking) and also gain more insights on how things work in the background.

Now it was time that the conference was officially opened. And how to better open it than with a keynote? This time it was Gwen Diagram with "Happiness is Quality". I just loved her energy and authenticity on stage, being unapologetically herself, no matter which position she holds. Really enjoyed hearing her experience of fostering a great engineering culture using lots of concrete tangible examples and stories. There was so much in this keynote to relate to, and a lot of food for thought and ideas to try out in our own contexts. Way more than was possible to put down in a sketchnote! This was a wonderful start into the conference.

Monday wasn't over yet, especially it's traditionally the evening of the speaker's dinner. Once again, this conference goes out of their ways to offer their speakers a lovely evening with amazing food and even better company. Loved speaking again with Anne Colder, Vincent Wijnen, Micha Kutz and more. Thoroughly enjoyed it. The evening ended with further conversations back at the hotel - special thanks to Nicola Sedgwick for your time! - and then it was time to sleep.


Tuesday

If you know me, you know I'm not a morning person at all, quite the opposite. Yet there's one thing I make myself do every year at Agile Testing Days, and that's joining the first Lean Coffee offered by Janet Gregory and Lisa Crispin on Tuesday morning. Never regretted it so far! Really like this informal agenda-less structure where we can bring our own topics, get advice and share insights with each other. This time, I took a few nuggets of wisdom with me to think about further.

  • Consider observability early on when thinking about changes: how would we see if something goes wrong? Which insights would we like to gain? Are there any dashboards we need to adapt?
  • The person who diagnoses an issue is not always the best person to act on it.
  • If you live a culture of "If you see an issue, you own it", then you need to be prepared that if people don't have capacity they start looking away. So, avoid practices that reward people to look away.

This year, the conference offered a virtual pass to see the talks streamed live online. I really appreciate this offer as it makes the conference content more accessible - not everyone has the money, time and also possibility to come in person. Also, it allows all of us to catch up on talks we missed within the next months as well. And as this conference offers lots of sessions in parallel this is a really great thing. With this in mind, I opted for workshops and hands-on experience wherever I could.

  • Keynote "Any dramatic elephants in the room?" by Martijn Nas. Martin shared the concept of the drama triangle with us - a concept that I believe more people need to hear about. If you'd like to learn more, I have a few resources to recommend on the topic.
  • Workshop "Harness the power of Cypress beyond the UI: Hybrid Testing" by Marc Mühlenweg and Nils Hahn. Time for hands-on practice! Marc and Nils guided the group to use Cypress in ways beyond interacting through the graphical user interface. Using the API instead as well as directly using the database to set up test data and check assertions is something more people still need to learn about.
  • Keynote "Living Fearlessly - While living with fear" by Lena Wiberg. This was absolutely amazing. Such a personal and brave talk about our fears, what roots they have and how our brains work when feeling threatened. It was a keynote that many of us needed to hear. Lena received standing ovations and they were very well deserved! The whole talk was so relatable and triggered lots of thoughts. I'm in awe of Lena's courage not only to give this talk yet also to overcome and deal with her fears every day.
  • Workshop: "Agile Engineering Practices Experienced" by Andreas Schliep and Malte Sussdorff. The speakers presented us a whole bunch of engineering practices, many well known yet some often forgotten. They showed how these practices support and inform each other. I really enjoyed the hands-on part of this session that allowed us to experience some of the presented practices. We started in teams of three pairs from different perspectives (backend, frontend, testing) on a challenge - that in the end nudged us to solve things together anyway. Well, that hits close to my heart! Also, loved pairing with Anne-Marie Charrett and fixing a backend issue together, definitely one of my highlights this year. This session also showed me new tools like Okteto and how to use GitHub CodeSpaces also for branches. Always good to learn and experience benefits hands-on.
  • Keynote "Be an AND. Not an OR" by Melissa Sassi. I really liked Melissa's authentic way to talk about authenticity and why it matters. Loved hearing this honest story and lessons learned - truly inspiring.
Time for the evening's MIATPP award and costume party! Lots of people wondered who this year's MIATPP would be. In the end, the award went to Janet Gregory - for the second time! She's making history, so far no one else received this community award two times. Absolutely well deserved, congratulations to her! She continues doing so much for our community. Her latest book with Selena Delesie "Assessing Agile Quality Practices with QPAM" is already in my library, can't wait to start reading it.

Dinner was great, conversations even better, and people got really creative with their costumes within the fairytale theme. And people like me who don't like to dress up or get into costumes had a wonderful time as well in any clothes we chose to wear. All that in front of a wonderful stage design that properly welcomed all of us into unicorn land.

Wednesday

No lean coffee for me today, rather as much sleep as I could get. And then enjoy another full day of great sessions.
  • Keynote "Human Impact" by Fiona Charles. This was an amazing keynote in many regards. Fiona faced technical struggles and her presentation couldn't be projected. Seeing how she coped with these struggles and then ending up just giving a related yet different talk was truly inspiring. When it comes to the messages shared, we all need to hear them (and act on them!) way more, and Fiona made them loud and clear. This was a truly thought-provoking talk we can instantly act on.
  • "Refining your Test Automation approach in modern contexts" by Toyer Mamoojee. I came to support my learning partner and also because the topic is relevant to me - soon it's time for my own team to relook at our automation and revise our strategy. So much experience and learning went into this great talk! Could really relate to a lot what Toyer shared. He made it really clear what we can do right away to get to a better state when it comes to test automation, on a smaller team scale just as much as strategically across teams. Lots of food for thought for my own context as well.
  • "One Size Does Not Fit All" by Bailey Hanna. Have you been in conversations (or rather tense discussions) around how much standardization is healthy for our teams and organization when it comes to processes, tooling and the like? I've been in countless ones and it's still a topic in each team and company I join. Bailey's talk gave me new terms and language to talk about processes and what we need in our context. Great input for bringing this back and having better conversations.
  • Keynote "Creating a Culture of Learning" by Huib Schoots and Vincent Wijnen. I've seen this keynote also at AgileTD Open Air and really liked how it evolved and improved based on feedback received - the tangible examples helped convey the message further. I still appreciate that this talk helps us learn better how our brain works, what impediments we might face trying to learn at work and what we can do to affect change. The interactive part really engaged lots of people to share, so we had even more insight into how things are currently not working at organizations when it comes to learning. Overall, awesome keynote, well presented and giving us lots of actionable food for thought.
  • Workshop "Software for Future" by Jutta Eckstein. This was a great combo session, giving us space to learn more about sustainability topics (like the 3 pillars model of people, planet and profit) and especially where we currently are on this journey ourselves - as individuals, our teams, our organizations. Lots of great conversations about how software can come to the rescue yet is not always as helpful as we might want to believe. Electronic waste, underutilized hardware, apps that exclude people by design, and more. We all could have a look at our own usage of technology, as well as take a survey to gauge where our team and organization is when it comes to sustainability. Awesome input to take back to work and start conversations there as well!
  • Keynote "Trouble in The Old Republic" by Samuel Nitsche. Wow - this was simply amazing. Standing ovations were well deserved! So many things I loved about this keynote. First of all, Sam turned this into a real stage acting performance, including costumes, props and side characters. He preceded the talk with a disclaimer how he's about to tell this story and where he might exaggerate to make a point. He also made use of the big stage to address current world problems and make a clear stance on prioritizing the most vulnerable - kudos! On top of that, I loved this keynote's emphasis on collaboration as well as the food for thought to find and build our own unicorn land, plus reaching something that's similar enough to our dreams. Just wow.
The evening was not over yet, after having some food there was also a first live event for Pepe's Bar, and my dear friends Toyer MamoojeeJoão Proença and I had the honor to be José Díaz's guests for the evening. A conversation on various topics, more casual than previous episodes - check them out if you haven't seen them yet.
Afterwards it was time to finally meet my other pairing partner for this conference, Shiva Krishnan. So good to meet again in person after a long period! And also it was time for us to do a last dry run before our talk the next day.

Thursday

The last conference day came - as you can imagine, more great sessions and conversations.
  • Keynote "Building Quality - Influence, Observability and You" by Parveen Khan. I had the honor to have listened to a dry run of this talk a few weeks ago and was eager to see the final version live on stage, especially as it was Parveen's first keynote. Unfortunately, I overslept exactly on this last conference day and hence missed the first part. I reconstructed the sketchnote from memory yet fear I couldn't do Parveen's talk justice. About her keynote: I loved Parveen's vulnerability and openness of sharing her failure story along with the reflection that went into it and what she did afterwards to get to a better place. It's so authentic, relatable and truly inspiring! It also gave tangible things every one of us can do to find our own style of influencing. This was awesome.
  • "Human Connection: The Key to a Beneficial Pairing Experience" by Shiva Krishnan and me. Both Shiva and I were quite uncertain how this brand-new talk will land with people. Will it resonate? Will people get something out of it they can act on right away? Judging from the feedback it did, so you can imagine our relief afterwards. Also, special thanks to Clare Norman and Tobias Geyer for live tweeting and tooting! Our slides are publicly available now as well.
  • "The Silver Bullet - a tools tale" by Søren Wassard. Great talk about a topic that's coming up so many times: which tool to use? Well, as Søren said - it depends. There's so many tools out there. It's not sufficient to jump at any, there are more aspects to consider. I really liked his viewpoint of growing our professional skills first before considering choosing a tool. Also, I really loved the storytelling and presentation style, very enjoyable.
  • Keynote "Better organisation design enables great testing" by Ash Winter. I loved this keynote - content-wise and presentation-wise. I feel the need to spread these topics more at testing conferences where people might not yet have had opportunity to come across architecture and organizational design topics. Team topologies, Conway's Law, diving into platform teams, and more. I really liked seeing the strong emphasis on how testers can be a crucial part and have power to influence a better organization! I related to it very much based on my own experience.
  • Workshop "React, Testing and Chess" by David Corrales and Pamela Plúas. This was a great space to experience and practice testing a React app ourselves. Despite us facing struggles when setting things up, this workshop still provided a lot. I really liked the presented four different approaches focusing our testing on different parts of the frontend: from unit tests to component tests to subcutaneous tests to finally contract tests (more people need to learn about this!). David and Pamela provided us with a full running demo project we can also use to practice further, love it. Really appreciated their consideration for participants' needs and also their disclaimer that context is crucial and their recommendations might change for a different project with different needs. I really think we need more of these technical hands-on workshops where we can practice deliberately in a context that's close enough to our everyday work.
  • Keynote "Servant Leadership – about empathy and psychological safety" by Patrick van Enkhuijzen. I've seen this keynote at AgileTD Open Air already as well. Also for this talk it was great seeing how it evolved and improved based on feedback received - for example including the host leadership model. I really appreciated the disclaimer of "this is how I see servant leadership and why it resonates with me" as well as the key message to include serving yourself first as otherwise we cannot be of help to anyone else.
It was a wrap! The official part of the conference was over. After more conversations in the hallway over food I seized the opportunity to head out to Potsdam with a small group. Many thanks to Alex SchladebeckElizabeth ZagrobaJoão Proença and Micha Kutz for this special finale.

Returning to the hotel, I chose to stay in the lobby and continue conversations with all people still around. More and more had to say goodbye, it's always a bitter-sweet ending to an event we all appreciate a lot.

Friday

It was time for me to head home. As every year, this means for me also starting to look back, process and digest all the things I've heard, all the connections I've made or strengthened, and follow up on my own sessions. It also means starting to look ahead on what to do next with the gained insights, what to bring back to my company and team, and what to take on in my personal development. Maybe catch up on a few more talks I've missed, thanks to the recordings. Maybe delve into photo memories.

One more thing why joining conferences, and also speaking at conferences is great: you never know which impact any session or just conversation might have on humans and what their journey might look like because of it. Like the feedback Elizabeth Zagroba received on a ensemble session we gave two years ago together with Joep Schuurkes and Simon Berner.

For now, I'll enjoy some time off to properly recharge batteries and close this year with fresh energy before starting the next. Many thanks to everyone involved in this event that made it a memorable time - organizers, volunteers, speakers, participants, everyone. It's been a blast.

Sunday, November 6, 2022

Mastodon Lessons Learned

Why even write about Mastodon if so many other people already posted awesome guidelines? That was my initial thinking and reasoning not to write this post. However, when I realized I received more and more questions on how I use Mastodon and what I learned so far, I decided to write it anyway. You never know whom it might help, especially these days. So here it goes.

Why writing about social platforms here?

Twitter was massively influential for me, my growth, my career. And with "Twitter" I mean the people and community I've found on this platform. It encouraged me to learn more, being intrinsically motivated. It encouraged me to interact with the community for the first time (super scary for me - even a like or retweet, not even talking about commenting or posting a tweet on my own). It encouraged me to join my first conference! Thanks to that first conference, I started meeting so many people in real life, and building my network. Which again encouraged me to start speaking at conferences and blogging and sharing in general. And so on. So yes, Twitter was and is massively influential for me as a platform.

Twitter, Mastodon, why a new platform?

Well. With the recent changes at Twitter (both in management as well as the massive layoffs that followed), no one knows how long this social platform might be available to us in a bearable format anymore. While I personally built a lot on this platform for myself, I was finally facing the fact that I needed to look for alternatives. I've tried lots of other social media platforms in the past, yet nothing gelled with me as much as Twitter did. This meant that moving my focus to one of the other platforms I already knew, like LinkedIn, just wouldn't work as they don't fulfill my needs (while LinkedIn fulfills another purpose for me, it just never could be an alternative for my Twitter-like activities). Hence, I decided to give new platforms a try. The one that I ended up with was the one that lots of people already talked about: Mastodon. As many others I've experienced friction there in the beginning. And yet I decided to stay, as it came as close to fulfilling my "Twitter" needs as nothing else did so far. And I just love seeing so many awesome people from various communities I'm part of being already there or also giving this platform a try these days. We'll see what happens in the future.

What did I learn so far that helped me?

A word of caution upfront: I've only been on Mastodon now for a bit more than one week, so this is written from a newbie perspective. I'm pretty sure I've missed things and I'm still learning.

A few things I've learned so far that help me. Okay, it's a bunch of things, the list grew quite big. Sharing all of these in case it's helpful for others as well, not knowing who's aware of what already.

  • Language and terminology is both similar and different to Twitter. There are Mastodon-specific terms, like "instance". Instance is the place you choose to create your account on. Twitter offers you just one entry to their platform, Mastodon is hosted decentralized on lots of different instances run by different people. So your handle will always also include the instance you're on, e.g. "@lisihocke@mastodon.social". More regarding language: there are similar concepts, yet using different words. For example, your tweets are called "toots" on Mastodon, likes are "favorites", retweets are "boosts". Some words look the same yet have very different meaning. For example, direct messages are not privat as such, just directed and visible to the mentioned users.
  • Choosing an instance. Just choose any instance as playground, check out how Mastodon works, then (maybe) make a better choice before posting anything. My personal story here: Choosing an instance intimidated me for months, hence I postponed the creation of my account until the day that Twitter was actually bought. In the end I made the decision to just do it and go with the biggest instance: mastodon.social. Why? First, to make a decision, finally (and one other person I knew chose that instance as well, couldn't be so bad I thought). Second, to have a handle that is neutral enough for all kinds of audiences. Third, I have many different interests and didn't want to limit myself, and it would have made the choice again too hard to even take action. Hence, I ended up where I still am. I know I can move instances any time yet really don't want to - especially now that I know my posts won't move with me, only my followers would. Interestingly, I only realized after joining that having lots of people there actually can help with visibility of things and it might have helped to reduce the initial friction I perceived. And yes I know, having lots of people there means it can be super slow under the load, and yes it's run by a company - yet for now I do support their endeavors. One of the most important things I totally neglected at that time: find an instance where you like the administration and moderation rules. They are just way too important.
  • You won't see everything from every instance. This platform is really decentralized and federated. Every instance can only show you what it knows about already, e.g. information about a certain account. For example, you will see an account's follower count as the overall count it is, let's say nine followers. Yet you won't usually see all followers of a user on your instance as this instance is not aware of all of them. That means, the list only shows let's say four follower accounts instead of the nine overall. A mismatch I really needed to digest first and be okay to live with!
  • Different clients really make a different user experience. The following ones are the best ones I've found so far and I'm using them for different purposes. There are a few more for mobile and web - try them out and see what works best for you.
    • Fedilab on Android: paid, yet was really worth the money as it's fulfilling most of the needs I have, like a shortcut to view the timelines of my lists of people to follow on top. For now, I'm using this one nearly all of my time.
    • Tusky on Android: a nice Android app with lots of features, really liked it better than the official Mastodon Android app.
    • Advanced web view. You can activate it in your preferences. It really reminds me nicely of Tweetdeck that I loved using long time ago. One downside: if the instance is under too much load, it's often just too slow to use due to too many requests being sent.
  • Configure your preferences, especially two-factor authentication. Yes, there's lots of settings, make yourself familiar with them and adapt them to your needs. Each client also have their own options they offer. One thing I'd recommend anywhere: set up your two-factor authentication for increased security of your account.
  • Everything is public, so treat everything that way. This is probably one of the main things to really internalize. Toots have different visibility levels and can also be "direct" to those mentioned so only they see them, yet are never really private. Hence, there are no real private conversations. And if you include any handles from others they will get notified. Just treat everything as public, don't share anything sensitive or confidential. Probably good advice for any social platform.
  • Hashtags are the only way to find things. So hashtags it is all over again! Like it was for Twitter back in the days. Including in your profile bio. And yes, really - you cannot search for anything else in posts, only for hashtags. You have 500 characters available per toot, make good use of them.
  • Fill your profile right away. Adding a profile bio and meta description really helps with people deciding if they'd like to follow you or not (as it is on other platforms as well). Do this right after the account creation before starting following others or posting. Don't forget to add hashtags here as well.
  • Introduce yourself to the instance. An #introduction post helps people on the instance find you. I saw this tip and people doing it, so tried it myself - indeed worked nicely.
  • Strategies for finding people. Especially if you'd like to rebuild networks on Mastodon here's what helped me.
    • I started with checking who people I've already found on Mastodon follow themselves. Could find lots of people already this way.
    • Many people use their same username on both Twitter and Mastodon, so directly searching revealed further people.
    • Then I used the mobile Twitter client to search for #mastodon and filter the results for people I follow, ordering by latest. Again, more people identified.
    • There are tools to help you see who of the people you follow on Twitter are also on Mastodon. I've used Fedifinder, worked like a charm. For making it easier for other people to find you the same way, add your Mastodon account to your Twitter bio, location, link or name.
  • Know how to follow people on other instances. No, you don't have to sign up to each instance separately, you can follow them from your instance even if they are on a different one. Doing so is not as intuitive though. The prerequisite is that you need to be authenticated in your own instance. If you use the mobile apps this usually works better as we're staying in the same context. Yet if you use the web interface, this means you cannot just open an account in a new tab and follow the account from there - as that one is then not authenticated. You have to access the account in the same tab. You can also make use of the search box to search for the full handle (including the instance), e.g. "@lisihocke@mastodon.social", or their profile link, e.g. "https://mastodon.social/@lisihocke" to find that account and follow it. Or just add the handle to the base url of your instance, e.g. "https://<yourInstanceBaseUrl>/@lisihocke@mastodon.social".
  • Make use of lists. I use lists on Twitter heavily to filter for content from people I follow actively (never cared about my home stream), so I was thrilled to see this feature available on Mastodon as well. So once again I'm working with lists of people I follow more closely, not the full home stream - just like I always did on Twitter. Hence it doesn't matter to me as much if I wouldn't find people easily on my local instance, I find them in different ways. One thing that's nagging me here a bit: you can only add people to lists if they accepted you as follower, not before. I often follow and instantly add to lists, yet well, have to live with this. Also, currently lists are only visible to you - there's an open feature request to make lists publicly visible and hence sharable with others.
  • Being kind to people usually helps. Like saying thank you for them following you. I've built that habit on Twitter early on when I started there and never stopped - so I'm not going to stop that now on that different platform. So far, it already resulted in nice initial conversations.
  • Add notes for accounts. You can add notes to each account that are only visible to you. Again, everything is public, yet this feature still helps me work around a few things. Like: helping my brain remember who this person was again if they did not provide a photo, bio or handle that reveals that to me. Or, taking note if I already thanked that person for following me as I cannot as easily find the previous interaction again (unlike on Twitter).
  • There's no algorithm, timelines are just that - time-based. If you like something, go ahead and "favorite" it. The author will be able to see you liked it. If you like something and would like to share it with others to see it as well, "boost" the message. The boosted post will also appear in your own profile as a message that you boosted.
  • Consider accessibility as you post. As hashtags are the only way to find posts, make sure to write them in Pascal Case so they are more easily read by both humans and screen readers (example: #ThisIsComprehensibleAsSeperateWords). Add alt texts for images and media. You can also define the language you posted that toot in which again helps tools and people to navigate your post.
  • Add content warnings. This is another great feature built into Mastodon. By adding content warnings you give people the option to decide if they'd like to learn more or not! Very useful for any kind of potentially triggering content, yet also for e.g. not revealing spoilers, announcing marketing, and more.
  • Threads are similar and different. To create a thread, you can post your first toot first and then reply to it. Or you have an interface that allows you to instantly prepare and post them all together. In any case, the resulting thread is always a reply to the previous toot.
  • There are tools to cross-post between Mastodon and Twitter. I personally don't use them, I prefer deciding myself what to share where. It's good to know they exist, though, and you will see people using them.
  • You can export and import data. For example, you can get csv files of your lists and similar. You can also request your archive including your toots and more. I haven't tried the import functionality yet; it seemed to work nicely with the Fedifinder output to follow people you've already followed before on Twitter.
  • Look under the hood and make use of the API. Interacting with the web interface, I mostly had developer tools open watching requests. Especially in times of high load, it's super helpful to see what actually happened and if my latest action succeeded or ran into e.g. a gateway timeout. I realized not all Mastodon users have experience in tech. Personally, I found it really helpful to have that experience when learning the system and Mastodon hence also intrigued my tester me. One thing that I really appreciate is that Mastodon is open source, you can go check out how it's actually implemented, suggest features, report issues, even contribute yourself. The documentation and especially API documentation is great too. When things are slow and I wanted to make bulk changes, I just used the API to do so directly with less waiting time. Like adding accounts to my lists, or adding private notes to accounts.
  • Expect errors and be patient. It's open source, it's run by lots of volunteers in their free time (or people working for non-profits), it's software in general. Expecting errors and learning how the system works help. For example, I have email notifications active. When I receive a notification, e.g. that I have a new follower, the related link to go to their account does not work and leads to an error page. Doesn't mean it doesn't exist! I take the email notification as hint to go and check my notifications directly in the user interface. Also, having patience helps. Loading times can be long at times when instances are under heavy load (e.g. because people are currently creating a new presence there - and yes, I'm on the most loaded instance). Sometimes having to wait for something can also be a good thing though and make interactions more intentional. Sometimes it also really takes time to load data between different instances and they might run into gateway timeouts - again, patience and trying it again pays off. Don't let an error screen scare you off. Looking under the hood again can help a lot with realizing what's going on.
  • Yes, it's not Twitter, and that's a good thing. Even if Mastodon still feels like Twitter a lot to me personally (especially like Twitter in the former days, where I also had to learn how this tool works and how it doesn't). So yes, Mastodon does fulfill the needs that previously Twitter met for me. Hence I've decided to invest into my presence at Mastodon as well. I'm not leaving the bird app yet (didn't leave many other networks either). Still, I'm now building up another social network I can cling to if Twitter really goes completely downhill.


Any other helpful resources?

There are awesome guidelines out there. Here are a few that helped me understand Mastodon better.

A few final remarks!

I've been on this platform for a bit more than a week and I expected it to take time to rebuild networks - yet I'm seeing lots of lovely people there already. I also knew I could not expect the same engagement as I've seen on Twitter - yet surprisingly many people interacted with me and my posts already. And they did in a kind, insightful and constructive way I really appreciate. So who knows which positive surprise is up next!

What now for you? Well, that's up to you. Here's my Mastodon account in case you'd like to check it out: @lisihocke@mastodon.social Maybe see you there! :)

Monday, September 5, 2022

SoCraTes 2022 - A Welcoming Community of People Learning Together

Over years, various people recommended me to join a SoCraTes conference, especially the main German edition. They said it would be right up my alley and I'd love it there. I indeed loved the idea of software crafting and testing coming together. Still, I hesitated. This conference is designed as an open space, an unconference. The agenda and anything that happens or doesn't happen is decided by the participants. They build the conference. Don't get me wrong, I really enjoy this format, it's amazing to see its magic happening. My hesitation came from a different place: I am fortunate to be able to visit several conferences a year, thanks to me speaking at them and hence making use of the deal I have with my company. If there's no speaking engagement, though, I would need to take vacation, money, energy etc. on my own budget.

This year, my hesitation was resolved and I made it to my first on-site SoCraTes in Soltau. The SoCraTes people ran an experiment to bring experienced people and new joiners together and cover re-occurring topics in a "Foundations Day" before the open space starts. I was one of the lucky trainers to be invited to give a session on this day, which then also allowed me to experience the rest of the conference. Problem solved, here I come!

There's another reason why I was fortunate this way. For SoCraTes, you don't just go buy a ticket - instead you apply for one. The lottery will decide whether you get the chance or not. Why that? To intentionally build a diverse space where not only the same people return every year and no one else has a chance to break in. It allows for a good mix of people to meet. As a trainer for Foundations Day, I had my place already safe and didn't have to worry about my lottery luck.

Therefore: special thanks to Tobias Göschel and Thierry de Pauw for inviting me! And overall huge thank you to all the organizers - this conference is community-driven, all of them are volunteers, and they did an outstanding job.


The Day of Arrival

The train ride to Soltau gave me time to prepare. I brainstormed topics I'd like to propose at the open space, or sessions I'd like to join or pull. I already had my list of personal goals ready that I wanted to aim for during this conference.

  • Connecting with the crafter community: building further bridges with regards to testing and quality, especially beyond people already in my network
  • Practice coding: I really strive for more practice and felt it would be an awesome place to hone my skills further
  • Discover something new: this is always something I'm looking for, and it never left me disappointed

In the evening, I arrived just in time for dinner with the community. Meeting some of the people in real life for the first time was amazing, as always! Especially Thierry de Pauw whom I've spoken so much with over the last years.

Over dinner, I realized I was not the only one joining this conference for the first time. Later on, we realized lots of people were new joiners indeed, based on recommendations they chose to give this conference a try. Was really great to see.

In the beginning, things were still a bit new, strange and even stiff; as it often is for me these days when suddenly seeing lots of people in real life. Within a short period of time I could loosen up, though. The more people I got to know, the more I relaxed and felt at ease.


Foundations Day & World Café

The Foundations Day format was an experiment by the organizers, the first of its kind. I can already share I loved it. Not only from a speaker's point of view, but also from a new joiner's point of view. It was a day with less people and hence a smaller crowd to get used to. A day covered with fundamental topics without them being too basic, so I learned a lot even with topics I knew about. A day where we had a schedule set in advance, which took away the uncertainty of what would happen. A day to get to know people a bit already.

One word ahead: This conference is all about inclusion and crafting a welcoming space where people feel safe, that they belong and can be themselves. This included not only free rapid Covid tests each day for everyone, yet also wearing masks indoors - led by example through the organizers, and implemented by nearly everyone of the participants as well. Kudos to all of you!

Back to the Foundations Day. Here are the sessions I've joined.

  • "TDD Foundations" by Emily Bache. Test Driven Development is one of those fundamental "classics" on conferences that I've rarely seen even mentioned in every day work. Yet when I practice it hands-on myself, I really enjoy the thinking and working in many small steps, aiming for just enough, having the final design emerge and maybe surprise us. It really fits well to me and my personal endeavor to reduce cognitive load whenever I can. Some great insights from this session: "Learning TDD is a way to reduce your delivery cadence. If you're aiming for short delivery cycles you need these short development cycles, too." Or Emily's emphasis on using tooling, like refactoring support our IDEs offer. Or that for existing tests she would never reverse test assertions to see if tests can fail, only deliberately write wrong code to make them fail - Romeu Moura, another trainer, instead would. Also, I just love Emily's teaching style. I've not only learned more about TDD as such, yet also on a meta level gained ideas and inspiration on how to facilitate sessions. How she used her Miro board when presenting, how she used a video recording of her doing a kata and added her narration, how she used the "yes and" principle with critiquing feedback from the audience and in general navigated this in a very constructive way.
  • "Legacy code: Add a reliable test harness (quickly) and refactor!" by Michelle Avomo. Given legacy code without tests, Michelle demonstrated how we can make use of golden master tests to gain understanding. She warned though that this approach is only a tool, these snapshot tests are often not reliable and fragile as any new change will break your test, even if not relevant. Once you understand what you want to do, you can move to other types of tests. Michelle also emphasized: "The tests are our first clients" and "Do not modify any production code that is not covered by tests". Wise words!
  • "Refactoring for Deeper Understanding" by Nicole Rauch. When we encounter existing code, it might be hard to comprehend. Refactoring to the rescue! Nicole presented an implementation of a simple method. She asked people what problems they see and how we can improve things (for example, by introducing types). She had great list of questions that the method left open to answer. These unclarities would make any code change difficult and even dangerous. After refactoring, she checked it against her initial questions to see if this version is indeed better - a validating feedback loop. Like Emily, Nicole also demonstrated how to use the refactoring options our IDEs offer us to make changes faster and safer. Also, she emphasized that refactoring does not mean big changes at once. We can just complete this one small step, commit and push. A huge refactoring can be done in very small steps - it does not mean detaching yourself from the main branch! So let's break it down to tiny steps, as tiny as possible.
  • "Different ways of using Property Based testing in your code next Monday" by Romeu Moura & Dorra Bartaguiz. I've been in a few sessions about property-based testing before, yet only now I've finally got a grasp on the concept! Really loved the demonstration in steps and the explanations added by Romeu and Dorra. We have a hypothesis about our implementation and place a bet that our implementation, i.e. our understanding of the business rules, is correct. In our test we only define this rule, not any input. The property-based testing framework now tries to find a suitable input value to prove us wrong, a counterexample! Input is generated randomly based on given criteria, and hundred tests are run against the hypothesis with different input values. It might all be good for a few runs, until the framework detects the case that is not supported by our implementation. In this scenario, a green test run means "I have not proved you wrong yet", a red one instead "gotcha". And in both cases we're happy as we learned! Very interesting to note as well: these test runs are extremely fast and cheap. Romeu and Dorra encouraged us to take it and try it ourselves with one test on a legacy code base - it's quick and we can discover interesting things.
  • "Ensemble Exploratory Testing" by me. A session that I've given many times for many different audiences - seems it's quite a timeless one where there's a lot of demand for. I've been asked to re-do it during the open space as well, so I did. Overall, it was once again fascinating to see how much people can learn in short time when they bring their knowledge and skills together, even if the single parts (like ensembling, exploratory testing, API testing, a legacy system, unknown people, etc.) are completely new to them.

In the evening, we enjoyed a lovely dinner with great conversations. Yet that was not the end of the day's program. More people had already arrived for the main part of the conference. To set the scene, a World Café was hosted by the wonderful Juke, getting all of us connected to SoCraTes and each other. How it worked? We had three rounds, a new question each round. For each group, one stays at the same place while all others look for a new group to join. The one who stays welcomes the new people and shares what the previous group had talked about. Usually this is supported by taking notes and drawing on flip charts or similar means. As I had my session at the end of Foundations Day, I got a bit late to dinner and hence also to the World Café. Didn't matter, I could simply join in towards the end of the first round. I picked a table, and was positively surprised - Kris Corbus was there! Just loved seeing Kris again after many years, I didn't expect this happy encounter at this conference. Overall, the World Café was great to get to know more people, realizing how many are indeed new joiners, and having a few familiar faces more for the next days.


Open Space - Day 1

The main part of the conference started! Juke once again was an amazing moderator, introducing us to the conference space as an intentionally welcoming and including safe space, as well as getting everyone familiar with the concept of an open space unconference. In short: we build the agenda we want to see! And that's what happened. It's fascinating how you can really trust in the system. The queues to briefly present the proposed topics were really long, and the emerging schedule looked amazing. So many awesome topics representing a great mixture ranging from hexagonal architecture to philosophy, from hiring to graphical visualization, from nail polishing to spikeball over lunch, from asking for support to debug a problem to example mapping - the list continues. And lots of people were contributing.

Here is how I designed my day.

  • "The Practices that Make Continuous Integration" by Thierry de Pauw. Thierry is currently crafting a new talk and wanted to do a very first raw dry run. I knew about the talk as I've also reviewed his abstract proposal to submit it to conferences, and was keen on hearing the first version. As this was a dry run I won't spoil its content here, yet I can say I really enjoyed it! And the practices mentioned give lots of food for thought on how we can achieve an always working state providing fast feedback. Also, it was super cool to see Thierry run this experimental raw version of his talk, even without access to his first notes. Super courageous, I loved this demonstration of how "good enough" can generate value and early feedback. Can't wait for the final conference talk.
  • During the second slot of the day, I took it slowly. I was late from the first one anyway, and as I've been asked to re-do my ensemble exploratory testing session it was a good moment to prepare for it. So, I sat down in the kitchen area, prepared, and as things usually go at conferences and especially open spaces, people came by, joined me for great conversations, and we went for lunch together.
  • "Dedicated Tester - Never worked with one? How could this be effective? Ask me Anything" by me. Having talked with a few people at the conference, I realized I didn't encounter too many people identifying themselves with the testing and quality space. Also, one of my personal goals was to foster bridges and communication. And on top I wanted to get myself out of my comfort zone and try new things - like giving a session I could not prepare for. Long story short, I proposed this "ask me anything" session and was fascinated by how many people joined me and how many questions they asked. Among them also Eric Proegler who could provide yet another viewpoint to the conversation. We talked about testing as an activity, what we're aiming for, how this can look like every day, pairing and ensembling, power dynamics, and more. It also ended up with continued conversations over dinner, or later on people approaching me with "oh are you the tester?" Guess there weren't many others after all (yet!).
  • "Improve Learning Culture" by Stefan Boos. This was an interesting session and exchange on how to foster a learning culture. It's a recurring challenge at many companies indeed. We brainstormed how to increase the number of peers taking time to learn together and how to respond to critics who question the benefit for the business or don't want to discuss at all but tell their opinion. Lots of great people to exchange thoughts with, quite a few things to take back and try out at work. For example, we talked about internal communities, explicit policies, sharing stories and celebrate learning, ensembling, framing as experiments, how we can measure success, that it's in the end about money and what drives people.
  • "Blind ensemble" by Romeu Moura. What a great way to deliberately practice effective communication and collaboration! I've always been inspired by the many ways Romeu uses constraints to practice pairing and ensembling. This time I could experience one of them: only the person at the keyboard saw the code (in this case, Romeu himself). Everyone else had to communicate by voice. In the middle of the exercise, he also took away visual cues by not having the rest of the ensemble see the person at the keyboard. It was fascinating to observe the dynamics. It was communication on a higher level, the details of the programming language used did not really matter (wasn't even shared or asked for) as the driver at the keyboard transcribed it. Also, the driver did not have any means to "write their influence", aka trying to write something ahead of the conversation and wait for people to complain. We usually rely a lot on tools to enhance cognition, yet in this exercise we don't have that, also personal notes are invisible. Getting lost is expensive in general and gets way more expensive in this constrained setting. It forced people to break down problems to smaller parts. Also, the exercise showcased that people worked on many assumptions and didn't make things explicit (as an observer, I was wondering for quite some time if Romeu actually wrote code or just pretended to do so).

Right after the open space day sessions were finished, we had another queue for evening sessions as well! Lots of great activities being proposed by everyone, from purely social fun to more tech topics, the whole range was present. I offered the redo of my ensemble exploratory testing session. Over dinner more people got interested - and indeed, we found a great group to work with and had some fun testing together in the evening.

This evening ended up in the bar, having further great conversations following my Ask me Anything session. I met Markus Gärtner for the first time in person, cool to get in touch finally as well. Lastly, more tech fun, this time in the form of a coding kata. Romeu had asked a few times if I'd like to join him on a kata, and I never really took the courage. Yet when he came over to the bar table and kindly asked again, it was just the moment. So kata it was! The evening got late and it was time to get some rest before the next one. But not before agreeing with Romeu that we will propose a paired session the next day - whatever it might be.


Open Space - Day 2

The second day started and once again many people offered many great sessions.

  • "Talking about Security" by Claudius Link. A great open conversation on all things security. Lots of interested people joined, asking questions and sharing stories. We talked about how risk to a company is also risk to you as well as your family and friends. Think of the network! It's usually an industry working against us; a lot of attacks are automated, yet there are also a few targeted ones. Claudius is especially intrigued by the human element in all this, so we also talked about the seven principles of social engineering. How to counteract? What you can reduce most easily is the time pressure. Also: make people talk with someone.
  • "Pipeline Game - DevOps CI/CD Pipeline" by Emily Bache. I've heard of the pipeline game and related card deck a few times, now was my chance to join a session and give it a try myself. We could not do the full rounds yet enough to get a gist on it. I loved the conversations that emerged that also showed up our own biases! Based on a chosen scenario, our group designed our ideal pipeline with all the steps we felt necessary, always checking how fast our feedback would be. What stuck with me was Emily sharing that pipeline design is also a business decision - it's too important! Another curious insight for me was that most people talked about manual work as something done by others: by testers, or UX, or someone outside the team - yet not as everyone on the team and hence we would have additional waiting time.
  • "Reading Code under the Influence of Our Emotions" by Romeu Moura and me. This ended up as the paired session we agreed on doing. Reading code was the overlapping theme in our topics, and hence we went with it. We both had a vague idea and aligned for probably 30 seconds shortly before the session. This was a nice challenge in improvisation for me, and Romeu was the perfect one to do it with - huge kudos to Romeu for rolling with me on the fly, I loved it! And it seems we've hit a nerve with this improvised session. Lots of people joining and contributing. The main idea? We're spending most of our time reading code, often written by other people, yet also by ourselves. We all are human and have emotions when reading code. How can we get better at both reading code for comprehension as well as coping with our emotions while doing so? We had our own thoughts on what practices and techniques would help, yet mainly gathered input from participants and had conversations together that generated even more ideas. Lots of food for thought. I think we need more sessions on these topics.
  • Yet another slot I skipped due to conversations following the code reading and my ensemble sessions. It's an open space, some things emerge without being planned and on the schedule, and it's good this way!
  • "Security Fun - Let's Tackle OWASP Juice Shop" by me. This session was inspired by a conversation during the last days where someone mentioned Juice Shop and I felt more people might want to know about it. Hence, I seized the opportunity. I introduced people to this intentionally vulnerable application, set the scene for the first challenge and supported the groups as they went on their discovery journey. It seems people enjoyed it and had fun - and they also all managed to solve the initial challenge, or even quite a lot of them!

The official open space closed with a retrospective. We gathered in groups and collected our feedback for organizers, facilitator, session hosts and participants, writing it all down on flip charts. Loved seeing all the thought that went into it!

While the official part was done, we still had evening sessions scheduled. As we had talked about card decks today, I brought my TestSphere and Would Heu-Risk It? card decks and offered a session based on these - story telling or other activities depending on the people joining. People came indeed and were mostly intrigued by trying RiskStorming. I invented a scenario and product to brainstorm on. We had lots of fun discovering what matters to us, what risks there are and what we could do to mitigate them.

This evening was still by far not over. A few of us engaged in deep conversations filling hours, and I just loved it.


Workshop Day

The day after the open space is traditionally meant for workshops only, also ones spanning more time. I heard that traditionally also a Code Retreat would take place. I've had a few opportunities in the past where I could have joined one, and I always wanted to - yet again and again got scared and shied away from it. This time, seeing the community being so welcoming, open and focused on learning with each other, I felt this might just be the moment for me. I have to admit, I still nearly didn't go. Yet I took up my courage and sneaked into the room while introductions began. Stefan Scheidt originally wanted to join a code retreat himself, ended up facilitating it - and I'm ever so grateful for this kind and safe experience that made it easy for me to get out of my comfort zone once again. Especially as he was the first one to team up with me!

Now, what is a code retreat in a nutshell? It's a structure for deliberate practice of coding. You usually go with the same coding kata, like the classic Conway's Game of Life the whole day. You try to solve the kata in each round with a new pair using TDD. At the end of the round, you delete the code, and reflect on what you learned in the whole group. Each round you might have different constraints; you might work in a new programming language, or choose design constraints, or specific ways of collaboration (like ping-pong pairing), and more. Despite tackling the same challenge, it can be solved in a lot of different ways - each round will be different and you will learn new things! In the five rounds we did, I had four different pairing partners. The last round we did as an ensemble. I worked in four different programming languages: Java, Kotlin, Python and Haskell. We had different pairing agreements: when to switch, how to collaborate, who decides the next step, who talks etc. We started outside-in and inside-out. We used different IDEs. We used different code design constraints inspired by Janina Nemec's upcoming Code Retreat Kata Card Game - and more.

As I said, I was scared before. I'm not scared anymore! It was such a great experience and really makes me want to do more. I also realized that my previous pairing and ensembling practice really helped me in this situation (once again), just like everything I picked up on the way and that I worked across many systems, IDEs, languages and pairing styles already. It's making us really flexible in the end and doesn't get in the way of the solution. I realized once again that I know more and can learn more than I thought. I also feared that my very tired brain after all these conference days without much sleep would be overloaded quickly, that my cognitive load would be too much. Yet thanks to TDD and the engaging pairing sessions it worked really well despite being so tired, it was rather energizing. And the safety aspect allowed me to really use my energy for learning, not worrying.

The evening came, more conversations, more great people to get to know better and hang out with. Loved that I finally had a chance to catch up with Seb Rose this way! Also, I've found a partner in crime and real challenge when it comes to the game of Set - some of you might have seen it as a common guest at testing conferences. It was amazing to see Janina Nemec (whom I've met in the Juice Shop session and paired with in the code retreat) rock this game - loved playing with her, was super fun!


Returning Home

The day of saying final last goodbyes arrived. We could postpone them a bit further, though. A whole bunch of us took the same regional train to the next bigger city together. Yet another hour of sharing and enjoying that community feeling! Wonderful.

My whole experience was awesome. Organizers had put in lots of effort and intention to make this a great experience for as many people as possible and were eager to learn at every step how they can do even better. Participants were open, welcoming, curious and lovely to talk with. Personally, I felt very welcome. I left with a lot more people in my network, lots of deep and long-lasting conversations, lots of ideas and inspiration. Also, I was returning home with my personal goals achieved. I created bridges and fostered our common space. I practiced coding. I discovered something new. I also dared quite a few things, the conference inspired me to go out of my comfort zone again and grow.

That being said, there's also a word of caution: this conference can trigger lots of fear of missing out (FOMO) and I have to admit I did not sleep much. Next time I'll definitely need to include more self-care and also take a vacation day right afterwards.

One of my personal favorite aspects of this conference that surprised me in a way I didn't expect were hand-written kudos cards. Such an awesome feeling to suddenly have another person hand one to you! This time, I only managed to get my own kudos verbally across, yet next time it'll definitely be on my list to make time to write these cards. I'm ever grateful for those people who did take that time for me.

In any case, I can only whole-heartedly recommend this conference. It might be rather developer- and architect-centric as of now, yet people are really caring about their craft from a holistic point of view. So, here's a warm welcome and encouragement to have more of every skill we need added to it. Be it testing, quality, agile, operations, product, UX focused folks - in the end, we're all taking about very similar things from different perspectives, and should be working together anyway. Let's learn together.