My 1st year all-remote at GitLab
Hi 👋 Remember this tweet just a few months ago? It was ~2 weeks before life changed drastically, on March 2nd, 2020 ...
I made ambitious plans. 1 month onboarding, and then KubeCon EU, travelling Europe and later visiting the US. I was about to meet Brendan and Abubakar in Prague at GitLab Contribute.
Half-way through my onboarding, Priyanka said - wait a bit with booking your travel to Amsterdam for KubeCon. The world is changing.
No more travel, rather virtual events, huh? Is there still an opportunity for a Developer Evangelist? – Spoiler: Yes. And so much more. It is a story with so many details, amazing teams and new friends. A desire to work remotely with everyone over the world, building amazing things together.
Adventure 2.0
I love async communication. You'll write into a Slack channel or an issue, providing all the details and never expect an immediate answer. There's no pressure to respond, and during a conversation, everyone takes care to document an action as an issue or a merge request.
This is one of the things I love about GitLab.
In a world where things are rough and often emotional, keeping calm and seeing the good feedback really helps to stay healthy and positive.
"Assume positive intent" makes me a better person, both at work and in my spare time. We all thrive for success and every conversation is cheerful and thoughtful.
My thoughts and feedback matter, I can join other areas and contribute my ideas. No more short toes, no strong feelings in issue discussions, no more argues pushing own opinions. Taking care about each other in thoughtful discussions, and providing all details to continue asynchronously is a key learning for me.
There is so much more I learned in just 1 year. The GitLab handbook has 10000+ pages. While I tell my story, I'd like to invite you to click the URLs and check them later.
A cosy and healthy workspace
Luckily my flat has a separate room for a workspace. If I would stay in the living room, I'd fall into old student dorm habits: Eat, sleep, code, repeat. I was not a 100% satisfied with the old desk ... in early March in my onboarding month.
I tried to buy a webcam, monitor or a standing desk, when everyone else had done it in a rush. In March 2020, and early April, it was impossible to get good and healthy equipment for my workspace. Therefore I kept working with the 16" Macbook, but I recognized that I need a better keyboard and trackpad, and also a comfortable desk with a bigger monitor. I'm very short sighted, and my eyes get tired staring at the screen. I also wanted an organized workspace with a more wide monitor, and avoid 2 or more monitors. So I went for 34" with lots of echo on social media ;-)
Everything is an iteration at GitLab. And so is my workspace. At first glance, my background was a bit boring. Then I modified the shirt we got from our Carnival in Rio trip as a memory. My best friends Nicole and Markus got me the lovely watercolour rainbow Tanuki in summer 2020.
From there, it was not far of adding more LEGO into the background. Luckily the Millenium Falcon did not fit on a shelve in the living room. I got a plexiglass stand and put it in my Zoom background. Including some more easter eggs, I change them every month. Dark winter evenings made me add better lighting and a few more personal changes to make it more cosy and healthy. Thanks for your ongoing feedback and suggestions!
Virtual meetups and my love for workshops
In late March 2020, John approached me with the idea of holding a virtual meetup, and just use the Web IDE to showcase GitLab and a bit of CI/CD. In my previous job, I was a Git and GitLab trainer, and have created workshops and trainings from scratch.
Of course can I take the challenge and make this a fun experience!
Over the year, the Go Tanuki was summoned in many community workshops 🦊
Thanks to Brian for inspiring the idea of free education and bringing the GitLab workshops forward.
The Tanuki inspired Chris to move the orange/brown Tanuki into a 🌈 version on a late CET evening. Brendan later could use the newly merged version in his 3rd session on our CI community day.
Sharing the ideas with our community and creating more engaging content was a big part of my first year. Thanks Greg and Lindsay for being great advocates. It is a unique feeling of joy to build and then see others have their first success ♥️
After all, we continue to iterate and enjoy building amazing things together. The longest workshop was for the lovely KDE community (two hours) at KDE Akademy 2020, kickstarting the community's GitLab adventure with many best practices :-)
Tip: Peek into the 1. Switzerland meetup for more CI/CD exercises :)
#everyonecancontribute Kaeffchen ☕
Our team was aiming to host a weekly or monthly session, live streamed to YouTube and with guests to hop technology topics, often announced just in the same week, like Grafana Tempo.
Everyone has their podcast, YouTube channel and insightful newsletter or blog series now. It is amazing how much good content we have for free, on the flip side competition is hard. This inspired us to avoid perfectionism in favour of authentic and friendly coffee chats together. We just used existing resources:
- Zoom + YouTube on GitLab Unfiltered streaming
- Hugo & GitLab pages for the website
- GitLab issues & groups for activities and ideas
This formed the #everyonecancontribute Kaeffchen in German 🇩🇪, with later following up to the #everyonecancontribute cafe in English 🇺🇸. Session insights are blogged on https://everyonecancontribute.com/ and we're having a good time.
We met us on Twitter and became friends ♥️
Learning efficiency and refreshing batteries
Things I am passionate about lead me to working a lot. I have the magnetic powers to create more work than I can handle. An idea means an issue as actionable item, and often things do not fit into my weekly plans. The backlog grows and a certain unsafe feeling comes up.
In the first months, I naturally wanted to do everything: Build a foundation of topics to talk about, create blog posts, build OSS projects, and create more education material. There were situations where I asked myself,
"what did you work on today?"
with no completely successful feeling. Priyanka being my manager encouraged me to split larger tasks into smaller pieces. Deliver a short blog post, rather than making it a perfect one.
I've since learned from GitLab team members in coffee chats and meetings, and check back on productivity tips. I'm also monitoring myself and dropped activities which cost too much time. I stopped using Tweetdeck for that reason (too noisy), and use Twitter web with lists. Slack is minimized when I am working.
Want my attention? @-mention me, and I'll reply after finishing the task. Text me if it is urgent.
I've also stopped activities which did not define deliverables, or were aiming too big. My focus areas touch base with the cloud native ecosystem, naturally I am active in many communities and can contribute when I see fit. Becoming again an OSS maintainer is something I tried, and I failed. I've also reduced my forum activities - thorough answers are more efficient than replying to every latest question.
All of this led me to optimizing my days, and focus on the areas where I can create insightful content and help cross-team with successful projects. My calendar has focus and no-meeting blocks, with a clear strategy on meetings late afternoon to match CET, ET and PT timezones. I can happily skip them and watch the recording later - I do that when giving talks at events, or when a follow-up session is right after meetings blocks.
I love the approach of not having mandatory meetings. Meeting agendas are prepared async in Google docs, linked in the calendar invitation. It is super efficient to join, and when there is a group conversation, I can review the slide deck and introduction video a while before. There are no meetings with direct screensharing presentations to 100+ people. Last but not least - speedy meetings. 25 minutes instead of 30. 50 instead of 60. Get up & get something to drink :-)
Puh. Still a lot to know, learn and have in mind. Time for a break.
Late lunch with a friend, and powering in the evening? No problem at all. Shifting workloads to PT timezones for time sensitive announcements? Cool, let's take Wednesday morning off to rest. During the pandemic, I learned to connect with old friends and appreciate the small things, like sending each other cookies & sweets - #atasteofaustria.
The most relieving fact about unlimited PTO (paid time off) is that I do not need to reserve 2-3 vacation days for unexpected happenings, like car service or visiting a friend spontaneously. It is 25 days at a minimum. In 2020, I worked 10 months at GitLab, and took 28 days vacation. This is a lot for me.
Refreshing my batteries is a life changing approach: Every month has at least one day off. In addition to that, a long weekend (4 days) or an entire week every 2-3 months to really shutdown and stay healthy. No weekend work. My contribution chart is my personal reminder to keep free days greyed out.
Some Saturdays tell a story on working on side projects, or quickly fixing something on the iPad. Too much blue as can be seen in February means - schedule a week PTO soon, Easter is near.
Quick thoughts ❤️
Transparency and work happens in public. I do not write things differently internal and external. We communicate in English, and while I have some old vocabulary issues, I am learning day to day. When being asked what I don't like at my job - Austrian dialect jokes do not work so well in English ;-)
No Slack on my iPhone. PTO means PTO. Personal exception: Security incidents or media escalations. Care about each other, encourage to take time off when life is rough.
Coffee chats with everyone, any time. Meet fellow Austrians, switch back to German and dialect. #donut-be-strangers with a bot connecting everyone randomly. Totally amazing. How lovely will that be when we can travel and meet us in person for the first time? I totally need to go to Mexico City after meeting Carlos last week.
Separated work accounts. Macbook has a work account logged in, no private photos or shared accounts. Strong focus on security, every login is either SSO or generated passwords and second/multi factor auth.
The onboarding issue is really helpful to keep focus, and learn step by step. The best part for me - create a merge request to help future team members with tips & tricks.
Everyone is friendly and helpful, and helps out when you don't know things. No blaming for not knowing something. Encouragement for our values. Every announcement on changes needs a merge request. Feedback and discussion is encouraged. Negative feedback is always 1:1. Appreciation and saying thanks builds a strong relationship.
Slack is not a knowledge base. It expires after 90 days - discussions need an action, an issue or merge request. We remind each other about this, and sometimes a 2 weeks old Slack thread gets an update with "I have created an issue to document and discuss." :)
Respect each others time. Cancel sync meetings when we can discuss it async in issues or Slack. Be on time in meetings, start on time. Give time back when there are no more topics to talk about. Don't schedule meetings into someone's long run already.
Provide as much context as needed to continue async. Always reply with an URL, engage with the wider community by linking to the handbook, or an issue. Take negative feedback as good feedback to improve, encourage to open an issue and start the discussion.
Moments I truly appreciate
My remote work media interview with the Austrian newspaper DerStandard connected me with the University of Applied Sciences in Hagenberg, diving into study memories from 2002+. Old friends congratulated me on my journey, and it turns out that many people use GitLab and now recognize me with GitLab.
My personal highlight was to learn that my desire to work with everyone, all over the world, always was there.
Young Michi went from high school in Linz, Austria to learn how computers work in Hagenberg, moved on his own to Vienna, to travel Austria and Europe - HEAnet in Dublin, Ireland is a lovely memory. Following an OSS adventure to Nuremberg, Germany, travelling the world to SFO, Portland, LA, Belgrade, Barcelona. No matter where I may be, I'm here to collaborate and help with my experience.
I enjoy hanging out with new and old friends. Every week in our #everyonecancontribute cafe
we have a great 1h learning & social leisure hangout. New ideas and live hacking inclusive :)
Life is an adventure
Priyanka moved to becoming the general manager of the CNCF by the end of May 2020, her dream job and she truly deserves it. She had built the technical evangelism team at GitLab, and pushed us for 3 months, to events, new contacts, thought leadership without taking time off for her own talks and career. This is truly amazing and careful management.
Back then, the Technical Evangelism team moved into the Community Relations team, and we welcomed David as our new manager. That being thought about, we are managers of one at GitLab. My day, my week, my priorities. When I see topics where I can contribute, I can go there while ensuring my results are there.
Technical Evangelism joined with the Evangelism Program, and John now manages our team. In an iteration, we renamed our team to Developer Evangelism, fitting the Dev Advocates and Developer Relations teams all over the world. Naming is hard - I always need to explain my role in introductions. That's good though, as it opens up a conversation :-)
From Monitoring to Observability
My background lies in developing OSS monitoring software, integrated into distributed environments. In my early weeks, I said yes to literally everything - one request was a CI Pipeline Monitoring webcast, bringing me back to my monitoring passion. Parker and Agnes have been a great help driving this forward ♥️
I had found the great CI Pipeline Exporter, amongst other new learnings on Grafana dashboards. I thought about ways to contribute this to the official GitLab docs. The point where users look for the first time, and hopefully finding clever ideas to improve their CI/CD pipelines. My first larger GitLab contribution is Pipeline efficiency documentation. Together with Marcel who brought my thoughts into a readable fashion, we made it happen :)
Then there was the Docker Hub Limit announced in August 2020, with a deadline in November. We could not really test it, and teamed up - team members from runner, package, infrastructure and developer evangelism analyzed and mitigated the impact for GitLab.com SaaS users. This led into open-sourcing the dependency proxy. I truly enjoyed leading this cross-team effort and started to learn developing a Prometheus exporter to stay safe with broken CI/CD pipelines. So much fun ☀️
This inspired me to follow along with an all new AllDayDevOps talk, sharing my dev and ops experience bridging the gap between traditional service monitoring and modern metrics based observability. With many things I learned over the year, all my talks are essentially built for async learning.
Collaboration at large
My manager John and my team mates Brendan, Abubakar and Jamie are amazing humans. Our weekly 1:1s sparks joy, ideas and feedback to improve upon. I get to learn more about myself, and new ways of how I can contribute to our team's success. We closely collaborate with community relations, PR/comms/social, brand & events, all-remote, content, corporate marketing at large, field/strategic/product/inbound marketing, sales, professional services, product, engineering, e-group, ... and so many more. Every day brings a new idea or challenge :-)
I got the chance to contribute to the 5 min production app project, initiated by Sid and Dmitriy. Innovation and vision to make the DevSecOps deployments easier.
Veethika touched base to learn about my ideas about CI/CD pipeline efficiency and debugging. Such talent, visualizing my many ideas. Jackie taking care about product management, together with everyone on product and engineering. Nadia and Dov who moved to CI Authoring and discuss visions and (community) ideas in regular sync calls. I became a stable counterpart in Developer Evangelism for Product and Engineering before I knew about it :-)
At HashiConf, Waypoint was announced.
Oh, it has docs - but there isn't GitLab mentioned. What's needed to try it out? Hey, let's move from Slack to Zoom.
Brendan wrote a blog post, Abubakar created a Docker image for the GitLab registry & CI templates, I sent a PR docs update for the official Waypoint docs and John coordinated with our Alliances team. 6pm CET to 10pm CET with a blog post at 2am CET (done at 8pm ET in sync with 5pm PT & Rebecca and Sara) in <12 hours. Team work at its best!
We did not stop there - a few days after, Brendan and Abubakar joined our #everyonecancontribute cafe for a live demo of Waypoint with GitLab CI/CD.
Social campaigns and more
Release evangelism started out as an idea to provide insights into the many features released every month. An opinionated share, inspiring and helping our community. Additional best practices and tips, all in the handbook – everyone can contribute.
During the announcement week of aligning to 3 tiers (Free, Premium, Ultimate), I could act as Communications Manager On Call (CMOC) for PR/Comms together with Wil, Kristen, Natasha and Simon. Monitoring community activities, social and PR channels and giving summaries for the executive group, and escalating in case where needed. All-remote also means all timezones where everyone collaborates. This week was truly special, so many teams working together on a new challenge.
Sharing helpful tips on social media connected me to Roman. /rebase
as quick action in a Merge Request is really helpful. And so we thought about our own best practices to write a blog post about it. I learned so many keyboard shortcuts and quick actions throughout the process, thanks to Roman :-)
Back to the roots
DNS! The topic I learned at the University of Vienna, ZID in 2009. It's still one of the major ops problems, and often hours of debugging lead to wrong DNS records. When Emily Freeman and Nathen Harvey called to write an article for "97 Things a Cloud Engineer should know", guess which topic I picked? ;-)
Our #everyonecancontribute cafe
also serves as entry point to showcase OSS projects. Learn something new and discuss contribution ideas, roadmaps and much more. We enjoyed learning about QuestDB, Jina.ai and Keptn and did a dive into Gitpod too. Keptn brought me back to Linz, Upper Austria where I lived til 2005.
Embracing what I have learned
Last week, we've created a new Discord server for our #everyonecancontribute cafe
group. In the moment of documenting the infrastructure and settings changes, I had created a new page infrastructure.md
. While thinking about adding it to https://everyonecancontribute.com/ 's menu, Infrastructure
felt a bit long.
Handbook
... isn't this our community handbook? Yes, it is. Our Single Source of Truth, transparent and open. Everything starts with a Merge Request. Handbook first, Darren and Emilie inspired me in coffee chats.
Mindset changes
This might be a rough topic switch. Although I think it is important to share. I have been reflecting a lot in the past year, on why a new adventure, and how the past 10+ years in Open Source have influenced and changed me.
Sustainable and honest Open Source business models are hard. There is lots of discussion going on about the right and wrongs. In 2017 or 2018, my OSS thinking was heavily influenced by customers getting priority and features. There was no Enterprise version backing the OSS development, and the ongoing research became complicated. "Customer bug driven development" is a term I invented for myself, and sooner or later I needed to escape in 2019 changing jobs.
One thing I was looking for: A business model with an Enterprise version, following a transparent and open stewardship with the Open Source community. You cannot make it right for everyone, and some friends say "crippleware", some friends see the value in paying for a product and keeping it going. I have found my level - I won't sell a product in every conversation, albeit I can help with getting started when consulting or insights are needed. Our CI Community Day exercises include Security features, showing a way for both, Free and Paid tiers for example.
I can connect the dots and kickstart the conversation, sometimes leading to a feature moved to the Free tier, for example the Dependency Proxy for Docker Hub Rate Limit mitigation. I also advocate for Enterprise features or help invent them when I see fit, built on a free open source foundation free for everyone. The GitLab Open Core model provides me the freedom to engage with our community on GitLab and beyond, this is something truly remarkable I really love.
Family and Friends First
Times aren't easy. My story could have gone otherwise, who knows. Locked down in the Nuremberg area and unable to go home to my family in Austria during the holidays was very hard. GitLab's Zoom became family Zoom. My mom got a new mobile contract and my old iPhone, we do video calls now. It is the small things that matter.
I know that my life with all-remote is easier than many people out there reading this blog post now. Hi 👋 - if there is anything I can help you with, ping me. I'm grateful for my journey, and I'm trying to keep up with positive vibes and making things worth while. Host a coffee chat, a tech chat and 3 hours later on Wednesday evening.
Michael Aigner recently noticed my "look to the right bottom" as a "Oh, reading Slack again?" Another day, Max and Philipp met for the first time and kept talking endlessly til 10pm, and at some point "Michael, you are not saying anything..."
"I am fine, sometimes I prefer to just listen and enjoy the conversation."
I'm hoping to touch base with everyone, when times are better, in person too. Maybe for a winter holiday near Rosenheim, with Nico, Niclas, Mario and Bernhard and the rest of the #everyonecancontribute cafe group.
If we have not met yet, please reach out for a coffee chat. If you need a moment of distraction, we can talk about LEGO models, travel, books, crazy ideas, ... or visit my interview panel demo at https://www.everyonecancontribute.dev/. Great memories with Melissa :)
Adventure 3.0?
I usually make plans for a new job.
At GitLab, I rebooted my career and am working on becoming a Senior and later Staff Developer Evangelist. I still have so many things to learn - meet our product managers and engineering teams, learn from our UX design teams, and improve my own skills to contribute to GitLab code. I'm not a Ruby on Rails or VueJS developer, though I know where the experts are :-)
It is the first time that I did not make up a "5 year stay and then see" plan. All-remote being a totally new adventure, there might have been the risk that it doesn't match. Half a year, to a year, I told my best friends Markus and Nicole - then I'll know.
Do I know?
Yes. I have found what I was looking for. And so much more.
I'll tell you another time - maybe in a coffee chat ☕
Thanks to my friends who supported me on my adventure - you know who you are. ♥️
Update 2021-04-12: Recommend reading Sujeevan's 1 year blog post.
PS: Here's the full version of the header image.