Have you heard the advice to "learn in public" yet?
A friend just asked an interesting question in a coding group chat that I belong to:
For all my friends here that learn - or learned - in public, how did you go about that, and did you notice that it made a difference in helping get a job and/or expediting your learning? I've been trying to come up with some sort of plan, but have been having trouble figuring out what to do or how to do it. -- Logan
In trying to reply, I ended up gathering quite a few resources and recommendations together, so I figured I might as well take all those links and thoughts I just gathered and make a blog post of it!
So first of all, what do we mean when we say "learn in public"? It's very similar to the "build in public" movement among developers, which encourages sharing your projects while they're still in progress instead of only after they're complete, allowing folks to see your entire development process instead of only the product. Learning in public means taking that approach to your entire journey of learning to code--or learning anything, for that matter, but the term does seem to originate in the coding community.
This blog post by swyx is what I'd consider the 'learn in public manifesto' and may or may not be the origin of the phrase. It briefly outlines the how--by creating what they call "learning exhaust" like tutorials, Twitch streams, or Stack Overflow answers--and, more obliquely, the why--to network and build connections, to learn faster by teaching and by getting feedback.
I really adore the learn in public movement (can I call it a movement?). I love seeing what other people are learning. Sometimes it's just curiosity, but also, even though the information might not be as sound, there's something so much more relatable and comfortable about reading the messy notes of a fellow learner instead of only ever tutorials from experts. Seeing someone else's learning journey, especially when they're learning something similar to me, makes me feel like I'm not alone in my efforts and boosts my motivation and resilience--and boy do you need resilience when you're learning to code, haha. What's even better is when you actually reach out to talk to your fellow learners, get to know some of them, and start growing a real sense of community. That's how I ended up in this little group chat where the question was asked in the first place!
I really enjoy sharing my own learning too, besides enjoying when other people do. I like creating a record that I can look back on to see how much I've grown, especially when I feel dispirited about how far there still is to go to reach my bigger learning goals, or just when depression has me feeling like I can't do anything. And when I write a tutorial or blog post, that's a great resource for my future self to come back to later when I forget how to do the thing. Likewise, recording general notes about your learning creates a useful resource you can review later when you need a refresher--a resource customized to the way that you think and the specific items that you had struggled with or been most interested in--and posting my notes publicly instead of keeping them private gives me a little push to care more about keeping them well-organized and understandable, which again benefits myself when I'm reading them later. Writing tutorials is great too; it really helps crystallize your knowledge when you have to think about how to explain it in a way someone else could understand, and I even found that it helped me create connections between different concepts when I had to explain what background knowledge my tutorial required or when I found myself feeling like I should throw in a "learn more here" link to another topic (and building connections is reputed to be be a cornerstone of how we learn, at least according to the course Learning How to Learn). And I love that it might even be able to help someone else learn, perhaps!
But does learning in public actually get you results? Let's go back to what Logan asked: can it help you get a job? Can it help you learn faster?
Well, I have to admit, in my experience of learning in public I've never directly observed any concrete benefits like that, only the more abstract stuff like motivation (which is hard to accurately attribute to a cause). Or like, yeah it's nice that I have these personalized notes I can look back to, but do I actually learn faster because of that? I can't say. But it's worth noting, I've personally done only a minimal amount of learning in public. I've only written one or two blog posts/coding tutorials; I only kept a daily progress log for 46 days; I only took and published notes for about half of one course. So it kinda makes sense that I haven't gotten much out of it, since I haven't put much into it either.
One thing to note about the question of "learning faster": if you're measuring that in terms of say, how long it takes you to complete a course, and if you only have a limited amount of time/energy to dedicate to learning, then maybe it won't help with the speed of your learning--just because the act of learning in public itself takes up time, too. It takes time to write a blog post or answer Stack Overflow questions. Sharing notes takes time if you care about making your notes look "presentable" (I strongly encourage sharing raw, messy notes anyway!). Even small things like writing a one-line daily log or making a tweet about what you learned today have some cognitive overhead that could potentially draw from your pool of energy for the learning itself. Then again, do you just want to complete a course faster, or do you want to reach mastery faster? Because there's a difference there too, and it's possible that taking more time upfront can lead to deeper or more thorough understanding and allow you to "level up" faster in the long run.
I suspect that learning in public actually could help you get a job or learn faster/better, but it hinges on actually getting noticed. Any time you're publicly talking about coding (or whatever your field is), you create the opportunity to network with others in the field, and networking is well known to be a major factor in finding jobs. Some of the things that can help you learn faster are if others ask you questions, or conversely, if someone who's more experienced than you sees your notes and notices you've made a mistake and reaches out to correct you. But those things can only happen if people actually find you, and well, the state of the internet is such that people don't always actually notice you, and even fewer of them actually decide to reach out and say something. Personally, I don't recall ever having any meaningful interactions as a result of my attempts at learning in public. So, your mileage may vary, and you can only get out as much as you put in. (There are probably ways to try to get more noticed, like posting under hashtags, but that's a whole separate conversation and it's out of my wheelhouse.)
But okay, let's say you've made up your mind that you want to try learning in public. How do you actually go about it?
The short answer is, you just talk about what you're learning somewhere public like social media. Or you write notes/blogs/tutorials and you put them somewhere. (Or of course there's a million other things you could do, like hosting livestreams while you study/code, going on forums and answering other people's questions, whatever.)
But when I saw Logan's question, the very first thing that came to mind for me was daily coding challenges like 100 Days of Code or Codedex.io's 30 Nites of Code! This is really what got me started on posting about what I was learning. The great thing about these challenges is that the community aspect is built in--there are all kinds of social media tags, Discord servers, etc that people who do these challenges use to find each other and spread encouragement (encouraging other participants is even one of the official rules of the 100 Days of Code challenge!). So that definitely helps with the "getting noticed" point above.
I got 46 days into the 100 days challenge, and for those 46 days, I kept a daily log in Notion of what I worked on each day (and then also posted it on Twitter each time). You can check that link to see exactly what I was recording each day, and feel free to copy for your own learning tracker! One of the especially useful elements of it for me was the "what I learned" box, where I tried to distill one key takeaway out of each day of learning. It doesn't have to be limited to 100 (or 30) days, of course, and you don't have to be participating in one of these challenges to just start your own similar log of what you learn each day. There's also an official GitHub repo for logging progress with 100 Days of Code; you can check out the forks to see some other examples of how people log their daily learning.
The other big option is to post blogs or notes. It's pretty simple to start a blog right here on Dev.to, or on Hashnode, two blogging platforms specifically for coding. There's also a great community platform on Codedex.io where you can write blog posts, although you do need to complete a few lessons to "unlock" the community features. In these cases, there's already an audience and community on the site, so it's easier for your posts to get seen. If you want a more personalized blog, or want to blog about learning other stuff besides coding, you can try Substack. If you wanna get fancy, you can even self-host the similar blogging platform Ghost, like I do for my art blog! (Self-hosting is a great learning experience in and of itself!) IMO, these options are best when you want to write more focused and thought-out pieces like tutorials and guides, or even just "here's everything I know about CSS selectors" or whatever. Basically, I turn to these blogging platforms when I'm writing directly for the sake of informing other people.
On the other hand, when you just want to share your casual working notes that are written mainly to yourself, you can get a better workflow with other platforms. I really like Notion for learning notes. In fact, here you can see my general directory of learning notes on all different topics. Some are complex sets of sub-pages, like my notes for the freeCodeCamp web dev course which include the each project's code and an overall glossary alongside individual lesson notes, and others are just short blurbs, like my Linux notes page which currently only contains a list of what each folder in the Linux file system is for. But who knows, by the time you read this blog post maybe I've added more! And that's the great thing about Notion for note-taking: it's a living document that you can easily keep editing and building upon, with it available as a live site all the while. The other advantage of Notion is being able to nest pages inside each other or quickly create links between them, much more efficiently than you could link different Hashnode posts to each other, for instance--so you can do what I did for freeCodeCamp and have one page for a course, with subpages for each lesson or topic, all bundled up together.
Another interesting option can be to write your notes as Markdown files in a public Git repo hosted on GitHub/GitLab/etc, like this person did. It can be nice to have it live in the same place as your code and means that folks like recruiters might see it when checking out your projects, and it doesn't disrupt your workflow as much if you spend most of your study time in a code editor (you can browse, write, and publish your notes all from within VS Code for instance).
Of course, if you want that crucial community engagement and feedback on your notes that are hosted on Notion or GitHub or wherever else, I recommend posting a link to your notes on social media each time you add something new to it.
So how about it? What are you learning, and what do you have to say about it?
Cross-posted from Codedex Community
Top comments (0)