Raise your hand if you’re guilty of lurking on the internet.
We all do it. There’s no shame in it.
However, if lurking is your main avenue of learning, you’re doing yourself a disservice.
People interested in working in software development frequently ask: “Is learning how to code hard?” A resounding “Yes!” is heard ‘round the world. It’s even harder when you learn programming skills by quietly consuming content instead of playing an active role in your education. Instead, try community-based learning like the Learn in Public movement.
Learn in Public encourages people to, literally speaking, learn in public. The driving idea behind Learn in Public is that public learning compounds your rate of learning by 1) publicly documenting your personal learning experience and by 2) leveraging knowledge from your peers in the tech community.
If you’re looking for the best ways to learn programming skills and make networking connections along the way, Learn in Public should be your guide. Deciding to Learn in Public is not only one of the best ways to learn programming skills, but the fastest way. Below, we’ll explore Learn in Public, its strategies, and transitioning to Advanced Learn in Public.
Learn in Public
Shawn Wang, better known as swyx, is a Dev Ex leader who worked for companies like Netlify, AWS, and Temporal. Currently, he’s Head of Dev Ex at Airbyte and curates the DX Tips newsletter, focusing on developer tools, developer relations, and all things developer experience. He’s also a proud Learn in Public Evangelist.
While swyx is not the founder of LIP (the idea of community based learning has been an ethos since Aristotle and Plato began sharing ideas), he is very vocal about its personal and professional benefits.
The logic behind LIP ties into the open-source culture of tech, and its thesis is to learn faster than privately learning. Swyx describes LIP as this:
“You share what you learn, as you learn it. You Open Source your knowledge. You build a public record of your interests and progress, and along the way, you attract a community of mentors, peers, and supporters. They will help you learn faster than you ever could on your own. Your network could be vast, consisting of experts in every field, unconstrained by your org chart.” - The Coding Career Handbook
By utilizing community based learning, and in turn, sharing what you learn with a community, you become part of a nearly infinite network of knowledge and opportunities.
For some, conversations with strangers are second nature, but for others, it's scary. Especially considering that some of these strangers will tell you you’re wrong, correct you, or be plain rude. In his book, The Coding Career Handbook, swyx offers some advice on fear below:
- “Try your best to be right, but don’t worry when you’re wrong.”
- “People think you suck? Good. You agree. Ask them to explain, in detail, why you suck. Do you want to feel good or do you want to be good?”
- “You can learn so much on the Internet, for the low, low price of your Ego.”
- “Understand and accept that you will make mistakes.”
- “Don’t try to never be wrong in public. This will only slow your pace of learning and output. A much better strategy is getting really good at recovering from being wrong.”
If the idea of launching yourself into a fully visible mode of learning is jarring to you, try switching to Learning in Public 5, 10 or 15 percent of the time. It’s not necessary to 180 from learning in private to learning in public for you to reap the benefits. Start slow, adjust, and watch how your career changes.
Create Learning Exhaust While Honing Programming Skills
To get started learning in public, the first thing to do is to create ‘learning exhaust’.
When a semi-truck drives by, it leaves behind a thick cloud of exhaust. Even after the truck is gone, you can still see a hanging curtain of smoke. Learning exhaust is like that smoke. It’s tangible proof that you put energy into your education.
Creating learning exhaust can be intimidating, even behind the barrier of a screen. If you’re able to, though, it has the potential to be life changing. swyx went so far as to say on Duck Tapes Podcast that “If you do this right, you’ll never even have to interview again.” Bold, right? He makes an interesting point, though.
Earlier in the interview, swyx asks the co-hosts, “What is the point of an interview?” The obvious answer is to get to know the candidate better and see if their skillset is a good fit for the position. By learning in public, everything an employer needs to know about you is literally on display. There’s less of a need for formal interviews.
Aside from creating professional opportunities for yourself, creating learning exhaust is crucial to the physical act of learning. Through ‘learning exhaust’, people engage in problem solving, inventive projects, and thoughtful discourse to better understand a new topic – a key ingredient to active learning. Those who utilize active learning are shown to perform better than those who learn passively.
Finally, learning exhaust creates mutualistic relationships between developers of all levels. Like we discussed earlier, LIP is all about open-sourcing your personal knowledge and gleaning knowledge off of others who are also learning publicly. Through this network, students become mentors, and mentors are constantly learning from new perspectives of students. This supports the life-long learning ideology of development.
Learning exhaust comes in many forms at small and large scales. Remember, the goal of learning exhaust is not to create internet fame, but to propel your rate of learning and invest in community-based learning. Some things you could do to create learning exhaust are:
- Write blogs, tutorials, and cheat sheets about what you’re currently learning AND about what you don’t understand
- Speak at meetups and conferences (if you’re not on that level yet, talk to your friends and community members)
- Ask questions. Never stop asking questions.
- Create videos and illustrations
- Start a newsletter
Something important to note, keep Cunningham’s Law, a cheeky internet adage, in mind: “The best way to get the right answer on the internet is not to ask a question, it’s to post the wrong answer.” You will be wrong on the internet, and people on the internet love to let you know when you’re wrong. It’s inevitable. Lean into this and treat each “wrong” moment as an opportunity to learn and have discussions.
LIP within Codewars
On Codewars, a user’s profile is a ledger that shows training progress, community activity, and Codewars learning exhaust. It publicly tracks aspects like Rank, Honor, Contributions, Streaks, and more. These tracked statistics reflect technical skills and a user’s role as an active community member. Part of Codewars’ gamification is based on solving kata, but the points system doesn’t stop there. Honor, a type of point that refers to earning community respect, is gained when users contribute to the Codewars community’s collective wisdom. For example, activities like:
- Completing a kata
- Ranking up
- Publishing a beta kata, creating a language translation, or having your kata approved
- Voting on kata satisfaction, rating a beta kata, and upvotes and downvotes collected on your posts and solutions
Profiles showcase users’ learning exhaust while competing on Codewars. Users can follow other users, join clans, and form allyships to track each other’s learning exhaust with ease (and friendly competition).
Kata solutions, one of the most user-valued features of Codewars, are actually a type of learning exhaust. Kata solutions aren’t just answers to coding challenges. Kata solutions present opportunities to see into the minds of countless developers. Once you’ve submitted a kata’s solution on Codewars, you have access to view solutions from thousands of other developers who’ve previously trained on the same kata. This Codewars feature thrives because it automatically creates learning exhaust beneficial to other site users.
Pick Up What They Put Down
Another lesson the LIP movement teaches is to “Pick Up What They Put Down”. The ‘they’ in this situation is anyone you look up to in your field or industry. This could be thought-leaders, mentors, senior developers, executives, friends, co-workers, content creators, the list is virtually endless. If that doesn’t exactly narrow it down for you, swyx suggests, “Look for the maintainers of libraries and languages you use or the people who put out YouTube videos, podcasts, books, blog posts, and courses.” Ask yourself, ‘What are they doing? What are they creating?’
These people are constantly “putting down” new things to learn. Tinker with their products, Interact with their videos, articles, ideas, and projects. Whatever they put down, you pick up and see what knowledge you can gain. Ways to implement this strategy could look like:
- Trying out new libraries
- Reading source code
- Summarizing ideas in your own words
And while you engage with what they’re putting down, leave comments, give feedback for improvements, and build off what they made. Odds are, these people will do the same for you and your work. This often leads to mentorships, too. Mentors want to help junior devs who are eager to learn and improve their programming skills. There’s no better way to show eagerness than learning in public.
Advanced Learning in Public
As time goes on, you’ll outgrow the Junior Dev or Beginner title. You’ll have deepened your understanding of programming, picked out a niche you’re passionate about, and settled into a career. Now what? Is LIP still relevant, or is it just something for those just getting started?
It. Is. Always. Relevant. While it’s an individual’s choice to continue their LIP journey, tech is an ever-changing, ever-evolving space. There’s always something new to be learned. As you’ve matured in your career, though, learning in public may look a little different. swyx calls this “Advanced Learning in Public”.
The transition into Advanced Learn in Public happens when you begin building communal knowledge bases and start crowdsourcing knowledge.
I hopped on a call with swyx to discuss this deeper.
swyx gave this example: When he got his first job as a software engineer after switching from a career in finance, he was asked to work with TypeScript, something he hadn’t done before. While he was learning on the job, he found himself repeatedly looking up the same information, again and again because he couldn’t remember what he was reading. To remedy this, he made a React TypeScript cheat sheet for himself and open-sourced it. It wasn’t to get stars or forks or shares. It was just to make his life easier and keep organized. If someone found it useful, great. If not, no worries. His philosophy behind open-sourcing his personal projects is this, “You always need to have a way to win, even if it’s a single player game. You just need to leave the door open for it to be multiplayer.”
That’s what he did with his React TypeScript cheat sheet. He left the door open for other players.
swyx tweeted about his React TypeScript cheat sheet to share what he learned with others, and added to it as he learned new things. Gradually, it gained traction. People contributed and asked questions, which, to him, was incredibly useful for his own learning. Teaching others and answering others’ questions made him think deeper. On that note, he said, “To me, that is the advanced form of Learning in Public. You’re not putting out individual pieces of knowledge, you’re building a knowledge base, and you’re building a community that contributes.”
By the way, the React TypeScript cheat sheet he made for himself and left the door open for others now has over 30,00 stars. That’s an example of how an individual project can be nurtured into a communal knowledge base. Once you leave the door open for other people, your opportunities to create mutualistic relationships grow.
“Why do we judge people by the number of years of experience?” swyx poses. “It’s basically because that’s the sole quantitative factor that everyone shares. The obvious flaw in that assumption is that everyone learns at different rates, and if you’re learning in public, the whole thesis is that you learn faster than you would otherwise.”
The question now is, “How do you change the slope of learning and how do you adopt a different algorithm of learning?”
swyx’s answer to that is Big L Notation.
Big L Notation shows how someone can qualitatively change the slope of learning through learning in public, resulting in faster learning.
“I really like the crowd sourced model of being able to learn with a group…For example, I can specialize in one thing, and I have other friends that specialize in different areas, then our friend group is more than the sum of its parts, because we all know different things. I have something of value to trade for the expertise of someone else when I need to. I’m no longer learning just in case, I’m learning just in time,” he said. He’s also learning at a much faster rate.
Choosing to learn in public doesn’t have to be an all or nothing endeavor. It can happen gradually, piece by piece, and you’ll have found a community to learn with, building collective knowledge. It’s not just a tool for beginners. The beauty of the LIP ecosystem is that it’s interconnected, strengthened by different skill sets and a diverse group of contributors.