Learning in public
A few weeks ago, I did a talk at Futurice Tech Weeklies about learning in public and how it makes me so happy how every time when I end up sharing something either via my blog, in social media or in a talk, I learn something new from other people who participate in the discussion. You can either watch that talk or read this post.
What's learning in public?
A little bit of background on me: I started blogging about technology in 2013 when I was a junior developer, started doing tech talks in 2014, experimented with Twitch streaming in 2018 and almost published a podcast in 2021.
So when I talk about learning in public, I talk about sharing what you're doing, what you're learning, what's hard and what's fun. Exposing your ideas to the public in one form or another and being open about the journey. The format doesn't matter and neither does the size of the public audience.
This blog that you're reading right now is a prime example. In December, I wrote about my first steps with Rust during Advent of Code and in January I continued that by starting a new monthly blog series called Learning Rust. I've also been writing Dev Diary (1 and 2) about a project that I'm building with technologies I'm not very familiar of.
How did I get started?
While I started blogging in 2013 and speaking in 2014, I didn't really have the learning in public mindset back then. I felt that people who wrote blog posts were these experts and somewhat authorities on their topics and that led to me not writing a bunch of posts because I though to myself, "Someone has already written about this better" or "I don't have anything to say".
Over the years and especially once I started doing more tech meetups and conferences in 2018 forward, I started to realize that it's not the case. Most of the people I met in these events were just like me: learning about things and sharing what they know. And that started to shift my mindset into being more open about my learning journey and I started to notice the benefits of sharing my ideas to an audience.
Real life example #1: Learning Rust
Like I mentioned, I started learning Rust in December of 2020 and then I built my first Rust app called 235 in January of 2021. As I was writing the first Learning Rust blog post, I noticed something interesting.
When I normally viewed my code in the code editor, my mind was focused on the functionality but when I pulled the code into my CMS and inside my blog post, I looked at it from a perspective of a writer. I started to notice the bad variable naming, nested structures and other issues of bad code design.
Just the fact that I decided to write a blog post, led me to improving my code quite a lot. Then I shared that code (before and after) in social media and a fellow developer commented with an idea for improving it further. Thanks to Juho, the code that is currently in the codebase is even better than my own refactoring could have reached at that point.
I know, it's scary
It is not always easy and fun though. Sharing anything that's not complete or that you feel like isn't the best, can be scary and intimidating. I think in our industry, there's this shared fear of what if someone realizes I don't know something. And somehow, through all of my impostor syndrome, I've managed to push through that mindset.
Tech is a vast knowledge space and nobody can know everything. A few years ago, Dan Abramov wrote a blog post sharing things he doesn't know and that caught a lot of attention in social media and developer circles. I think it was a great reminder to us all that not even the people who do amazing work in one part of technology, know it all.
So exposing your ideas and incomplete projects and your weaknesses to the public can be scary but I'd say the benefits are so much better that they override the fear. And being open about what you claim things to be helps a lot. When I write about my learning path with Rust, I try to make it obvious to the reader that I'm a beginner with this language and I'm here to learn. If someone thinks less of me because of me sharing code that's not perfect, it's their problem, not mine.
Real life example #2: Contemporary Documentation
During 2019 and 2020, I did a series of talks about contemporary documentation. Some in physical meetups and conferences (remember those, they were pretty cool) and some in remote online events. I even talked about it in a podcast and some of my thoughts on the topic ended up in a book.
Each time I did the talk to a different audience, I ended up having interesting discussions. Sometimes it was people suggesting tools that help teams adhere to good practices when doing documentation. Sometimes it was people sharing what their team does or asking my opinions on something. Every single time I went out there to talk and share my ideas, I learned more and more. And I met amazing people, some of whom became really good friends of mine.
Whenever I think back to those discussions and those moments, I feel so happy. It's incredible how this industry has this culture of sharing and improving together that we don't see so much in other industries.
It's not about the millions but the ones
My blogging is not aimed to build a readership of millions of people. As I wrote a bit more in detail in You should start a blog today, there are many other more important priorities that I focus on and learning in public is definitely out there.
I don't need to see Twitter notifications go haywire everytime I share a blog post. If there's a one comment that starts a discussion, that makes me so happy because it takes me forward and helps me improve as a professional.
In addition to sharing my posts in social media, I end up discussing them a lot in smaller groups inside developer communities. Public can mean even inside your team at work if you don't feel comfortable starting with a global audience in Youtube. For example, do a lunch and learn with your team once a month on Fridays.
I'm so happy that I work with great colleagues and friends at Futurice where we do an internal Tech Weeklies mini-meetup every Friday. I get to learn from them, I get to share and when I share, I learn more.
Where and how to learn in public?
Start a blog. Speak in a team lunch and learn or in a local meetup. Participate in discussions on social media or on developer community platforms. There are many ways to get started and I think a blog is the easiest one. You can start by registering at DEV and write your first post and then share that with developers you know and in social media.
Building an audience takes time. I've been blogging since 2013 (although not very actively in the early years) and only recently I've started to notice the effects. And the size of the audience is not what matters but it helps increase the odds that someone reaches out and starts the discussion. So don't feel bad if your first few (or you know, 50) blog posts don't generate a lot of buzz, especially if you're just starting out. Write for your own learning and documenting, not for the clout in social media and not for the analytics.
Speaking in local meetups is also fun. It might feel like you're not experienced enough but as someone who runs a meetup and regularly chats with other meetup organizers, pretty much everyone I've met is more than happy to have beginner speakers and junior developers sharing. It's a platform for sharing, not an exam on your skills. Just be honest about your skill level and it will be all fine.
Developers are similar across different technologies
A small sidenote about developer communities.
One of the secret ingredients in me knowing developers and having a lot of dev friends to talk about technology is that I've been super active in all sorts of different meetups and conferences even when it's not exactly a technology that I'm using or into at that point.
Because the reality is that many developers are interested in multiple things. So people I meet in Javascript meetups for example, I might end up bonding over Rust or building Python backends. Or I might meet people in cyber security meetups who share my passion for documentation. Or hanging out in a game development Discord even though I don't make games, I end up in a lot of discussions about web development.
There might not be a specific niche meetup or conference in your area for your #1 interest. I highly recommend not letting that be a roadblock. Meetups are a great place to learn about new technologies and meet new people and that's what I've been doing for the past few years. And some developer communities like Finnish Koodiklinikka are great examples of places where people from all different walks of development join together over a shared interest in technology.
And local gatherings (once we can do those again) like Helsinki Dev Lunch or Tampere Dev Lunch are wonderful for meeting developers of all sorts regardless of the specific sub-interests. And if there's not one in your area, why not start your own?