Hello Everyone! 👋
Through the recent years in open source and in my role as the Principal Software Engineer at Red Hat, I had the opportunity to do a lot of work that touches tech/team/project/organization management and leadership. During this experience, one realization stood up to me more than anything. The fact that Software Development is way more about humans than computers.
That’s why in my blog space, I wanted to try something new! Between posts around dev, Go, infra and observability, I would love to write a couple of things about what I learned or found useful
beyond the tech. The learnings I found noteworthy about our minds, behaviours, depression, motivations and mindfulness. Things that helped me understand better myself, others and the world around me. Many of those helped me to be more productive. Let me know if you find the psychology-related topics interesting, or… rather not! 😄 Feedback is very welcome!
What Gives You Fun?
In this post, I would love to talk about the importance of
having fun! You see, I would argue that no one wants to do stuff that is not fun for them. We avoid such activities for all the cost. We are usually bad at this stuff. It makes us miserable and can eventually “depress” us.
Everyone is different. Everyone enjoys different activities and things. Not to mention you need to have basic mental safety to even experience
fun. In my opinion, it’s essential in your life to understand clearly what makes you happy. What gives you those sudden happiness dopamine shots, proudness moments and overall, satisfaction.
ACTION TIME! Now, if you want, stop now and try to list ten things you like to do—something you enjoy doing or achieving. Write them down. Then try to find an isolated
pattern (or two). Is there any element there that repeats or stands out? Write it down.
Let me give you an example of this exercise for my situation. Note that your character might be totally opposite to who I am! And that is totally ok. You need to understand what makes you happy. You will learn later why.
I always have been avoiding non-eventful, repetitive and tedious tasks. I was finding them incredibly boring and against my ambition of trying to challenge myself. How do I learn anything by doing the same non-fun, non-surprising thing again and again?
Let’s quickly look at things I like doing:
- Figuring out hard things at work.
- Teaching others.
- Giving out yourself to your loved ones and friends.
- Doing extreme sports or stupid, life-threatening stuff requiring lots of skill (car drifting, racing, motorcycle, skatepark tricks, extreme kayaking, diving etc.).
- Playing story-driven or competitive games / watching action movies.
- Innovating, rethinking things, making things better.
- Challenging myself (answering the question “can I do it?”).
In my view, all of them have one thing in common: Element of surprise and novelty. Things are complex here, but let’s assume that my
pattern and the solution for “having fun” is to keep doing something new, something that might have a non-deterministic outcome and eventually… succeeding in it. (:
Well, guess what, not everything is like that. On the surface, most of the activities are non-eventful and mundane. For example in your life: Cleaning your room/flat/house. Systematic gym. Diet. Systematic learning (Actually, systematic ANYTHING 🔥). Organizing your to-do list. Doing taxes, bookkeeping etc. Of course, in software development, we have tons of similar tedious tasks too: Organizing JIRA tasks, leading status meetings, rolling out the same production service with tiny change (especially if tedious and manual), fixing one little non-brainer thing in code, supporting customers with the same questions and issues every time, adjusting alerting or recording rules, making presentations about topics I already spoke about. I can list many things that are not very interesting to me. They might be ultra interesting to you, though! This is just how my brain works.
Everyone has their list of stuff you hate doing. But still, we have to do it. There are moments you can delegate this work to those who like it, but sometimes there is no other way than do it (no one can perform a gym session or burn calories for me, unfortunately).
How to do those things you don’t like? Do we close our eyes, stop thinking, do it and forget about it? Unfortunately, that’s a path to frustration, depression and overall sad life. So we procrastinate on those tasks. As an effect, we can be less valuable at our work, dropping opportunity for earning more and growing. In the end, we waste time. But there exists a better solution!
Leveraging Fun for Productivity = Tactical Hedonism ™️
Instead of speaking about it, let me share a snippet of a fantastic podcast that inspired me to write this post. Those are epic words of Katherine Milkman from The Prof G Show Podcast by outstanding Scott Galloway.
One thing we haven’t talked about is how important to goal achievement it is to be having fun. (…) We do better when we align what’s fun with our goals. Like much better. Vastly better. And people weirdly don’t get that. They think like, oh, if I just, you know, just do it. Like Nike says, if I just grind through, I’ll achieve more.
But if we take a different approach and try to wrap whatever it is we’re trying to achieve and find that better results ensue. And I think my advice to my twenty-five-year-old self would be like the things that are really, really unfun if they have to be done, find a way to make them fun, but also lean into the things that you love. Yeah, you know, I’m not saying everybody should quit their day job and become a musician.
That’s not my advice, but rather like find what it is you love in your day job, something practical that you’re most enjoying and do more of that. And you will be great at it because you will be motivated to pursue your goals day and night and you will have that drive. But within your career, what do you love most and how can you make that more central to what you’re doing?
Those words are an amazing summarization of also my trick to achieve more in life, be satisfied on the way and deal with difficult moments (we all have them - that’s a normal part of life).
To me, there are two main pieces of advice in this speech:
- Optimize your work and life towards things that give you fun and makes you happier.
- Make non-fun things… fun!
I think item number 1 is kind of clear. If you don’t like educating others, don’t become a teacher. If you are afraid of heights, don’t become a skyscraper window cleaner. If you don’t like talking to customers, don’t become a product manager. If you like a particular aspect of development (e.g. designing systems), try to be clear about that to everyone else (and yourself!) and go in this direction. Believe that you can find your spot and explore, try different things to find it.
On the other hand, in my opinion, advice number two is harder to achieve. By definition, a non-fun thing is not fun. So how can I turn it into fun? Let’s focus on that part now.
When I was a kid, the only thing that made me tidy my room on my own (apart from my parents shouting at me, banning something if I didn’t do it etc.), was when I literally created fun from cleaning. I imagined that I was a crane that moves toys to the correct place or train that transports clothes to the wardrobe or washing machine.
Perhaps that is a silly example. I wished our adult minds were less limited in some ways–we can’t create that kind of “fun” just using our imagination as we could as kids. But I think we can do something similar, just with more “real” elements.
Try to take your happiness
pattern and add a pinch (or complete package) of it to the activity or task you don’t like for some reason. And it takes some innovation here to find a way for it. Let me give you some examples from my work:
Maintaining Project Documentation
I like having good documentation of projects I maintain. Users love that. Team members love it. New contributors find it extremely valuable.
But maintaining it over time is a pain. Things get obsolete super quickly. Contributions constantly break links. Configuration options and APIs in the project continually changes. And with more content, it makes it super hard to find anything without good organization. Also, any new docs additional was not easily discoverable, so we were getting questions about the same stuff on support channels.
All of this was making me feel I was wasting time when adding any project documentation. I did not like it. I was procrastinating, delaying, avoiding those tasks.
Solution for me? Automate all I can, try to excel at doc writing practices, innovate in this space. So we designed and created tooling that automates everything related to building project docs in markdown. After creation and adoption in many projects, we wrote about it with my GSoC mentee Saswata here.
Now, writing docs is much more “efficient” and gives me more pleasure. I do it more often. I hope it’s easier for others too.
IMPORTANT: Don’t take this to the extreme! It would be stupid and unprofessional if I stopped whatever I have been doing, stopped any documentation work, and focused for two months on documentation tooling.
Instead, we did it all in iterations. I was mixing things, balancing them. For example, writing a few docs, then adding some automation based on what I did not like in this task. Then again, writing some, then fixing more pain points. Maybe my tasks of writing docs have been faster if I just did it and didn’t use any time for coding the tooling. But, I would argue, with my feelings against those tasks, I would delay them anyway and produce less quality work, knowing it’s a bit wasted - hard to discover, quickly obsolete etc.
I would say it is a fair tradeoff. I think we succeeded, but note that I try to innovate constantly to keep things interesting, e.g. we created open-source team docs you can find here and adding some new stuff every week or blog posts about various topics like this!
Making Intro Presentation About the Same Project
Another thing I started to get bored with was the number of introduction talks I was making about the Prometheus and Thanos projects. We created Thanos project in 2017 with Fabian, and we started to talk about it at meetups and conferences from Q1 2018. It was an enjoyable and huge learning opportunity for me since I was new to public speaking. I was extremely bad at this as well, but with time (and ~30 talks I did since then about various topics), I think I am a pretty efficient speaker.
But there are still more and more newcomers who want to start with Prometheus, Thanos or any other topic I spoke about. Recently, especially with virtual conferences, I felt it’s a bit boring for me to prepare similar presentations over and over. It’s not challenging. It’s also less valuable for more advanced community members who already saw me at past conferences. So I started to stop sending CFPs and was delegating this to others (which was not a bad idea!).
At some point, I realized I could make it more fun for myself (and others!) by adding a pinch of my pattern for fun:
novelty and educational purpose!
On the first virtual KubeCon, we organized a literal “podcast” in place of a traditional “deep dive” session about Prometheus. Thanks to that novel form IMO, many Prometheus experts had the motivation to participate in this–an effort that they would otherwise have skipped.
We still have many minority groups in our ecosystem, so I tried to pair and co-speak with more junior people on various talks across the year. Was it efficient? Hell no. Was it more valuable and exciting? Yes - on many fronts!
Last but not least, I have been trying to bring to the topic I am an expert in, e.g. observability, some totally new aspect to it. This makes things more challenging and gives me more growing opportunities (and extra motivation to learn!). So I spoke with Anaïs about observability for ArgoCD (I had no idea what’s that before), and I will speak with Harshitha about RED monitoring using eBPF (magic for me initially). Lot’s of extra time to learn new stuff, but it makes the presentation effort worth even more.
Oh, and I would forget.
Conference driven development is not a joke. We leveraged this many times to motivate ourselves and the community to ship a feature that we would not have pressure to finish otherwise! (: Makes the talks more interesting and moves the project forward. Win-win.
There were many situations when applying this idea was extremely useful for me. I think I am happy where I am and what I have achieved so far. I am looking forward to what I can do more in the future, how many people I can empower and who I can help more. Note that there are still many things very tedious and painful for me. I still procrastinate a lot or avoid some tasks. We all try to be better every day–it’s an ongoing journey.
I hope you’ll find this useful (and find more fun in your everyday activities! 🙃). Let me know if you have any cool examples of how you are making the tedious tasks a little bit more fun! Maybe we can learn from each other here? 🤗