Reddit is an amazing resource for beginner programmers. It's a goldmine of references to valuable materials and a place where a lot of great folks gather to give each other feedback.
It has helped me throughout my career and, in this post, I want to explain how you could be engaging with Reddit's communities to skyrocket your engineering skills.
At its core, Reddit is a place where communities live. These communities, or subreddits revolve around a particular concept. For instance, r/cpp is a community of people that know about the C++ language, r/gamedev is about developing videogames, and r/learnprogramming is about... well... learning how to program.
There is probably a subreddit for everything you can think of, no matter how big or small.
The key concept here is community. A community is a place where like-minded people get together to talk about something that interests them.
Communities are incredibly valuable when developing your skills. They can give you direction, encouragement, and great advice!
Unfortunately, communities are sometimes hard to come by, or difficult to get into.
This is what makes Reddit such a good resource. The communities are already there, ready to help! It's the perfect place to ask questions and find people who have walked the same path as you.
Hopefully, I've convinced you that Reddit is a valuable asset to have for your career.
Now, how can you leverage the power of these great communities? I've found that there are three main ways of benefitting from a community:
- Reading their curated resource lists.
- Seeking feedback from the community.
- Giving feedback to other members.
Let's go one by one.
Most subreddits get a lot of beginner questions. Eventually, most of these questions start repeating over time. To help with that, most subreddits have compiled answers and resources in their "about" or "FAQ" pages. The size of the "about" page depends on the size of the subreddit, with the largest subreddits having fully-fledged wikis! (like this one, from r/fitness)
Whenever I want to learn something new, like a new tool or a new language, my first instinct is to check the sidebar of that subreddit.
These "about" pages (also called sidebar) have one advantage over Googling things:
All of these resources have been useful to real humans with the same problems as you're likely to face.
Plus, nobody makes any money with these resource lists, so there's no incentive to advertise products that are not genuinely useful.
These lists are pure gold. When a new hobby piques my interest, the first thing I do is to check the sidebar for that hobby's subreddit.
It's the same with programming. Whenever I want to learn something new, like a new tool or a new language, my first instinct is to check the sidebar of that subreddit.
I don't know how else to put it. Go check the sidebars!
We all need people who will give us feedback. That’s how we improve.
-- Bill Gates
Good feedback is the cornerstone of learning. However, good feedback is hard to come by, because it requires someone to give you their thought, attention, and careful consideration. The good news is, most subreddits are full of people eager to help!
Subreddits are amazing to get some expert eyes on your work. There are only two rules that ensure that you have a good interaction with a subreddit:
- Read the subreddit's rules. When you post a question or a request for feedback, you are essentially asking for people's time. Treat that time with respect by reading the rules and doing your best to fulfil them.
- Write thoughtful questions to get thoughtful answers. If someone wants to help you, you need to give them as many details as possible. Make questions concrete, and give enough context so that the reader can immediately understand where you're coming from. This is easier than it seems since most subreddits have very good guides on asking good questions, like r/learnprogramming.
Most subreddits are full of knowledgeable people willing to help. As long as you are respectful of their time, don't be afraid to ask them for answers or feedback!
Note that there was no rule about how experienced you need to be to post a question. Even if it can feel intimidating to post a question and look dumb, it helps to keep in mind that a moment of looking dumb now can save you months of struggling. From this perspective, not posting is much worse than posting a "dumb question".
That said, most subreddits have a mindset of "no question is too dumb", as long as you follow the second rule and put some real effort into asking the question properly. So ask without fear!
Now, there is another great kind of feedback you can get from a subreddit: Code review.
If you're working on a personal project, chances are you're not too sure of what the right way to do something is. Showing your work to a subreddit is a great way of getting the feedback you need to ensure you're on the right track.
Here's an example:
When I was in college, I wanted to learn the C++ language. I was able to write some code that worked, but I didn't know if what I was writing was "the right way" of writing C++ code (also called "the idiomatic way").
I posted my code in r/cpp_questions, asking specifically for that kind of advice. The response was amazing!
I got lots of great advice that it would have taken me months to figure out on my own:
One more time: Most subreddits are full of knowledgeable people willing to help. As long as you are respectful of their time, don't be afraid to ask them for answers or feedback!
I hope this doesn't come as a surprise, but these two skills are the mark of a senior engineer:
- Senior engineers can navigate a codebase they've never seen before efficiently without much direction.
- Senior engineers can communicate technical concepts effectively to other engineers of any level.
If someone is seeking people to review their project on Reddit, this is a great opportunity to develop both of those skills!
- Reviewing someone's project forces you to tackle a codebase you've never seen before, so you train your code navigation muscles.
- If you get stuck, you can always go back to the post and ask the author questions or clarification! Chances are they are delighted to answer them. After all, that's why they posted in the first place!
- Reviewing that code may expose you to techniques and technologies you've never seen before.
- After reviewing someone's code, you need to formulate your feedback in a way that's useful for them. This will train your communication muscles.
Don't be afraid to give your feedback, especially if you're still starting out. We all want to write readable code, and your feedback and questions can help the author realize where the author could make their code more approachable!
Sidenote: There is not a lot of good material on learning to approach new codebases, but I'm working on a manual to help with that. If you're interested, subscribe below so that you don't miss out when I announce it.
On top of it all, you're contributing to the well-being of the community and helping another fellow programmer, which is always awesome.
I hope I've convinced you that Reddit is a good place to find growth as a programmer, and give you some useful pointers to use it effectively.
What are your experiences with Reddit?