Let's be friends

Introduction

Going to keep some notes here about HOW to ask for help – and where and when.

Just keeping some screenshots here for now.

There are soooo many options! So, which is best when?

A little history

We didn’t always have millions (like 207+ million) “coders” around in chat rooms where you could just post questions and probably receive an answer in seconds or minutes.

  1. In-Person and Phone Conversations (Pre-1990s)

    Before widespread internet access, most help was sought in person, over the phone, or through physical mail.

    Despite what you may have heard, people still meet in person. You can call people on the phone and use your voice to ask for help. And you can go to local meetups and things like that. You might even work in an office – with other people you can talk to.

  2. Email Chains and Mailing Lists (1980s-1990s)

    As email became more widespread, technical discussions and help requests moved to email chains and specialized mailing lists (e.g., LISTSERV)

  3. Usenet Newsgroups (1980s-early 2000s)

    Usenet was one of the earliest forms of online discussion, allowing users to post questions and answers in topic-specific newsgroups

  4. IRC (Internet Relay Chat) (1988-present)

    IRC provided real-time discussions and was heavily used by developers and tech communities, often as an alternative to email and newsgroups.

  5. Early Web Forums (mid-1990s-2000s)

    As the web evolved, forums became a popular way to ask for help. Sites like Experts Exchange, Tek-Tips, and various niche community forums emerged

  6. Reddit (2005-present)

    With the introduction of subreddits, Reddit became a key platform for seeking help, especially in tech-related communities like r/learnprogramming and r/webdev.

  7. Yahoo Answers (2005-2021)

    Although not tech-specific, Yahoo Answers was a platform where coding-related questions were sometimes asked.

  8. Twitter (2006-present)

    Twitter became a space for micro-discussions, where developers could ask for quick advice, share insights, and engage in short-form discussions.

  9. Stack Overflow (2008-present)

    Stack Overflow revolutionized the way developers seek help, offering a Q&A format with a reputation system. It later expanded into the broader Stack Exchange network, covering various specialized topics.

  10. Quora (2009-present)

    Quora provided a platform for more in-depth, discussion-oriented Q&A across a wide range of topics, including tech.

  11. GitHub Issues (2010s-present)

    GitHub Issues became a crucial tool for developers to seek help directly from open-source project maintainers, combining forum-like discussions with issue tracking.

  12. Personalized Mentorship and Tutoring Services (2010s-present):

    Platforms like Wyzant, Codementor, and MentorCruise offer personalized, one-on-one tutoring and mentorship for developers seeking help. These services provide direct, often paid options for receiving guidance, allowing users to connect with experienced developers or instructors for real-time assistance with coding challenges, career advice, or learning new technologies.

  13. Slack (mid-2010s-present)

    Slack introduced real-time chat for work environments, and soon after, framework-specific channels emerged, offering community support and collaboration.

  14. Discord (2015-present)

    Originally a gaming platform, Discord quickly became popular among tech communities for real-time chat, voice, and video discussions

  15. Mastodon (2016-present)

    A decentralized alternative to Twitter, Mastodon has gained traction in tech communities, offering a space for more open and federated discussions.

When and where?

We have a LOT of options these days. So, don’t let that be part of the problem.

  1. Quick Syntax or Approach Questions

    Ideally, you’ve got a circle of friends, coworkers, or a Slack/Discord group you can lean on. If not, start building one—it’s invaluable.

    But in the age of AI, tools like ChatGPT (which we’ll just call chatbots) are at your fingertips. Just be cautious. While it’s tempting to let AI give you the answer, use it like an encyclopedia. Talking to real people builds better soft skills and helps you practice explaining things—always go for that when you can. However, if you’re stuck, dropping a code snippet into a chatbot often pinpoints the problem fast, letting you get back to what really matters.

  2. Clarifying Definitions or Basic Concepts

    Sometimes you just need a quick definition or explanation. Google and Wikipedia are classic go-tos, but they can sometimes lead you down a confusing rabbit hole, especially if you’re just starting out. Remember, if you’re in school or working with us at PE, you’re here to learn—not to figure it all out by yourself.

    For web-specific concepts, MDN Web Docs is a great resource—they’re thorough and clear, but they can be a bit overwhelming for beginners. It’s good to get practice using MDN, but have someone help you navigate it and teach you how to parse the information. If you’re still unsure after a bit of searching, take a moment to reflect on what you do understand and what’s still confusing. A chatbot can be helpful for quick clarifications, but be mindful—it can sometimes give you too much information, or even be incorrect. So, reach out to real humans, combine all these tools, and keep your focus on learning.

  3. Resolving Misunderstandings and Code Confusion

    When your code isn’t behaving as expected, it’s often not an error, just a misunderstanding. MDN Web Docs can help you check how things should work, but sometimes it’s not enough. Stack Overflow is full of examples where others have hit the same roadblocks. A chatbot might also offer quick insights into why something’s not working. If you’re still stuck after 20-30 minutes, gather what you’ve tried and reach out in Discord/Slack or ask your teacher for help. Resources like CSS Tricks “Ultimate guide to…” are useful, but they can overwhelm you if you dive in too deep. Focus on learning a bit at a time. Keep a reasonable view of where you’re at (because the outside people trying to help you don’t know and might throw overly complex things at you).

  4. Learning Techniques or Patterns

    Getting comfortable with new techniques or patterns? MDN Web Docs and the official language docs are solid starting points. For deeper dives, look up technical articles or YouTube tutorials. A chatbot can help you get the basics down, but it’s crucial to apply what you’re learning as you go. If something isn’t clicking, talk it over with your group or teacher to keep things on track.

  5. Handling More Complex Bugs

    Complex bugs need a different approach. The official language docs are a good place to start to understand how things are supposed to work. If you’re dealing with a tricky, reproducible bug, check GitHub Issues or Stack Overflow. A chatbot might help brainstorm causes or debugging strategies. If you’re stuck, discuss your findings with your group or teacher—often, talking it out helps you zero in on the solution.

  6. Understanding Broader Concepts or Philosophy

    Exploring broader concepts or philosophies can be challenging. Official language docs are great for deep dives, while technical articles provide various perspectives. A chatbot can offer a high-level overview, but talking it over with peers or a teacher will help solidify your understanding. Books like Clean Code or The Pragmatic Programmer are also excellent for deeper exploration.

  7. Best Practices and Industry Standards

    When you’re learning best practices or industry standards, start with the official docs—they’re the go-to source. Technical articles can give you more context. A chatbot can provide a quick overview, but check in with your group or teacher to ensure you’re on the right track and applying what you’ve learned correctly.

  8. Code Review and Feedback

    Code reviews are essential for growth. Use GitHub Pull Requests and Code Review SE for structured feedback. Before you seek external input, review your own code and identify areas where you’re unsure. A chatbot can offer some suggestions, but deeper insights often come from peers or teachers. The goal is to understand how to improve, not just fix issues.

  9. Framework-Specific Help

    When working with a specific framework, start with the official docs. For more specific issues, framework-specific forums are useful, and GitHub Issues is great for bug reports and advanced questions. A chatbot can help clarify general concepts, but if you’re stuck, it’s often best to discuss your questions with your group, teacher, or in specialized forums.

  10. Career Advice and Professional Development

    For career advice, LinkedIn is invaluable for networking and professional insights. Mentorship platforms offer personalized coaching. Quora and Reddit provide broader advice, but it’s important to be clear about your goals before diving in. A chatbot can offer general guidance, but discussing your plans with a mentor or teacher is key to avoiding generic or conflicting advice.

  11. in progress...

    working out the when and where…

CHAT DUMP for later thinking…

It looks like you’ve covered a lot of essential areas in your article, but based on the content and themes you’ve already explored, here are a few additional topics that might be worth addressing:

1. Understanding Open Source and Contributing

  • Why it matters: Many learners don’t fully understand how open source projects work, how to contribute, or the etiquette involved.
  • Key points:
    • How Open Source Works: Explain the basics of open source—what it means, how projects are managed, and the role of contributors.
    • Getting Involved: Encourage learners to contribute to open source projects, even with small contributions like documentation or bug fixes.
    • Etiquette: Emphasize the importance of respectful communication, understanding project guidelines, and how to effectively raise issues or submit pull requests.

2. Etiquette for Asking for Help

  • Why it matters: Understanding how to ask for help in a way that’s respectful and effective can make a big difference in the response you get.
  • Key points:
    • Be Clear and Specific: How to phrase your questions clearly, include relevant details, and avoid dumping large amounts of code without context.
    • Respectful Communication: Remind students that everyone’s time is valuable—express gratitude, and don’t demand instant answers.
    • Follow Up: Encourage learners to always follow up on help they’ve received—whether it’s saying thanks, providing an update, or sharing what they’ve learned.

3. Making the Most of Paid Resources

  • Why it matters: While there’s a lot of free help available, sometimes investing in paid resources can save time and lead to better learning outcomes.
  • Key points:
    • Value of Paid Resources: Explain that paying for a course, book, or one-on-one mentorship can be a worthwhile investment if it helps deepen understanding and save time.
    • Choosing Wisely: Provide tips on how to choose the right paid resources—looking for reviews, understanding what’s included, and aligning with learning goals.
    • Balancing Free and Paid Resources: Encourage learners to start with free resources but be open to investing in paid options when they hit a learning plateau.

4. Common Behavioral Issues When Seeking Help

  • Why it matters: Some common behaviors can hinder effective help-seeking and damage relationships within a community.
  • Key points:
    • Asking in Multiple Channels: Discuss why asking the same question in multiple places at once can be problematic and how to avoid it.
    • Patience and Expectations: Explain that help isn’t always instant and how to manage expectations without getting frustrated.
    • Engaging with Responses: Highlight the importance of actually following up on the help you receive—don’t ask for advice and then ignore it.
    • Being Grateful: Encourage students to always thank those who help them, fostering a positive community and making people more willing to help in the future.

5. Effective Use of Time When Learning

  • Why it matters: Efficient use of time is crucial when balancing learning with other responsibilities.
  • Key points:
    • Avoiding the Rabbit Hole: Teach learners how to recognize when they’re spending too much time on something that isn’t productive.
    • When to Move On: Encourage them to set time limits on tasks or learning sessions—if they’re not making progress, it’s time to move on and ask for help.
    • Strategic Learning: Help them plan their learning journey by focusing on high-impact skills first and revisiting more complex topics later.

6. Understanding the Role of Feedback

  • Why it matters: Feedback is critical for growth, but understanding how to interpret and apply it is just as important.
  • Key points:
    • Constructive Feedback: Explain what constructive feedback looks like and why it’s more valuable than simple praise or criticism.
    • Asking for Specific Feedback: Teach learners how to request feedback on specific aspects of their work to get more targeted advice.
    • Handling Criticism: Discuss how to handle criticism in a positive way, using it as a tool for improvement rather than taking it personally.

7. How to Give Back Once You’ve Learned

  • Why it matters: Encouraging learners to help others once they’ve gained knowledge reinforces their learning and builds a supportive community.
  • Key points:
    • Sharing Knowledge: Encourage learners to answer questions, contribute to forums, or write about what they’ve learned.
    • Mentoring Others: As they progress, suggest they take on mentorship roles, helping others who are just starting out.
    • Contributing to Documentation: Remind them that contributing to or improving documentation is a great way to give back to the community.

These additional topics can provide more depth to the article, covering areas that are often overlooked but crucial for a well-rounded approach to learning and seeking help.

These could all really be their own articles… but leaving them here to ponder later

1. How to Handle “Information Overload”

  • Why it matters: With so much information available, learners can easily become overwhelmed and lose focus.
  • Key points:
    • Filtering Information: Teach learners how to filter out unnecessary details and focus on the most relevant information for their current stage.
    • Prioritizing Resources: Help them understand which resources to prioritize based on their immediate needs and long-term goals.
    • Setting Boundaries: Encourage setting time limits for research and study sessions to avoid getting lost in a sea of information.

2. Building a Supportive Learning Network

  • Why it matters: Having a strong network of peers and mentors is invaluable for learning and growth.
  • Key points:
    • Finding a Community: Guide learners on how to find or build a community of like-minded peers, whether through local meetups, online forums, or social media groups.
    • Contributing to the Community: Encourage active participation in these communities, not just as a learner but also by helping others when possible.
    • Leveraging Mentorship: Explain the value of finding mentors and how to approach potential mentors respectfully and constructively.

3. The Importance of Iteration in Learning

  • Why it matters: Learning is an iterative process, and understanding this can help students be more patient and persistent.
  • Key points:
    • Embracing Repetition: Explain that revisiting concepts, practicing regularly, and iterating on projects is a natural and necessary part of learning.
    • Learning from Mistakes: Highlight how mistakes are valuable learning opportunities and how iterating on these mistakes leads to improvement.
    • Project-Based Learning: Encourage working on small projects that can be iterated upon as skills improve, rather than aiming for perfection from the start.

4. Effective Communication in Technical Discussions

  • Why it matters: Clear communication is essential in both asking for help and collaborating with others.
  • Key points:
    • Being Concise and Clear: Teach learners how to express their questions and thoughts clearly without unnecessary jargon or fluff.
    • Asking Follow-Up Questions: Encourage asking follow-up questions to clarify responses and ensure understanding.
    • Documenting Conversations: Explain the importance of taking notes during discussions and revisiting them later to reinforce learning.

5. Understanding the Role of Documentation

  • Why it matters: Documentation is often underutilized, yet it’s a critical resource in both learning and professional development.
  • Key points:
    • Using Documentation Effectively: Guide learners on how to navigate and use official documentation for languages, frameworks, and tools.
    • Contributing to Documentation: Encourage learners to contribute to documentation as they learn, whether by suggesting edits, writing tutorials, or adding examples.
    • Keeping Personal Documentation: Suggest maintaining personal notes or a knowledge base to document what they’ve learned, which can be invaluable for future reference.

6. Balancing Self-Learning with Formal Education

  • Why it matters: Both self-learning and formal education have their strengths, and understanding how to balance them can lead to more effective learning.
  • Key points:
    • Value of Structure: Discuss the benefits of the structured approach in formal education, such as clear goals and milestones.
    • Self-Directed Learning: Highlight the flexibility and personalization that self-learning offers and how it can complement formal education.
    • Integrating Both Approaches: Provide tips on how to integrate self-learning with formal education, such as supplementing coursework with personal projects or using online resources to explore topics in greater depth.

7. Navigating Career Transitions in Tech

  • Why it matters: Many learners are either transitioning into tech from other fields or moving between roles within tech, and guidance on this can be crucial.
  • Key points:
    • Identifying Transferable Skills: Help learners identify skills from previous roles that are relevant to tech, such as problem-solving, communication, or project management.
    • Building a Transition Plan: Suggest creating a roadmap for transitioning into a new role, including learning goals, networking strategies, and potential mentorship opportunities.
    • Overcoming Imposter Syndrome: Address the common feeling of imposter syndrome during transitions and provide strategies for building confidence and recognizing progress.

8. Ethics and Responsibility in Coding

  • Why it matters: Understanding the ethical implications of code and technology is becoming increasingly important.
  • Key points:
    • Responsible Coding Practices: Discuss the importance of writing secure, maintainable, and ethical code.
    • Understanding Bias in Technology: Highlight the potential for bias in algorithms and how developers can work to minimize it.
    • Staying Informed: Encourage learners to stay informed about the broader impacts of technology and how they can contribute positively to the field.

9. How to Deal with Burnout and Maintain Balance

  • Why it matters: The fast pace of the tech industry can lead to burnout, especially for learners and new developers.
  • Key points:
    • Recognizing Burnout: Teach learners how to recognize the signs of burnout, such as chronic stress, fatigue, or loss of motivation.
    • Maintaining Work-Life Balance: Provide strategies for maintaining a healthy work-life balance, including setting boundaries, taking breaks, and practicing self-care.
    • Seeking Help: Encourage learners to seek help if they’re struggling with burnout, whether through peers, mentors, or professional support.

10. The Importance of Lifelong Learning

  • Why it matters: Tech is a rapidly evolving field, and continuous learning is essential for long-term success.
  • Key points:
    • Embracing Change: Discuss the need to stay adaptable and open to learning new tools, languages, and frameworks.
    • Setting Long-Term Learning Goals: Encourage learners to set goals for continuous learning, such as mastering a new technology every year or contributing to an open-source project.
    • Balancing Depth and Breadth: Suggest finding a balance between deep expertise in one area and a broad understanding of others, enabling versatility in their career.

Here are some well-known resources similar to “Don’t Ask to Ask” that people often point to when discussing etiquette and best practices for asking questions in programming communities:

1. “How to Ask” on Stack Overflow

  • Link: Stack Overflow: How to Ask
  • Summary: This guide explains how to ask a good question on Stack Overflow, including tips on providing enough detail, showing your work, and being clear and specific. It emphasizes the importance of doing some research before asking and how to structure questions to get the best possible answers.

2. “XY Problem”

  • Link: XY Problem
  • Summary: The XY Problem is a common issue where someone asks about their attempted solution (Y) rather than the actual problem they’re trying to solve (X). This site explains how to recognize and avoid this mistake by focusing on the root issue rather than the workaround.

3. “How To Ask Questions The Smart Way”

  • Link: How To Ask Questions The Smart Way
  • Summary: Written by Eric S. Raymond, this detailed guide covers how to ask questions in technical forums and mailing lists effectively. It advises on how to research before asking, how to be polite and clear, and why providing context is crucial. It’s a bit more in-depth and formal but highly regarded in the tech community.

4. “No Hello”

  • Link: No Hello
  • Summary: This site advocates against starting conversations with just “Hello” in chat and instead encourages getting straight to the point. It emphasizes efficiency in communication, particularly in environments like work chats or support forums.

5. “How to Ask for Help” by Julia Evans

  • Link: How to Ask for Help
  • Summary: Julia Evans provides a practical and friendly guide to asking for help, including tips on what to include in your question and how to make it easier for others to help you. She also offers advice on not being afraid to ask for help and making the most of the responses you receive.

6. “Don’t Ask to Ask, Just Ask”

  • Link: Don’t Ask to Ask, Just Ask
  • Summary: This site is a direct and simple explanation of why it’s better to ask your question directly rather than asking if you can ask a question. It’s a common etiquette issue in chat rooms and forums where people might hesitate to dive right into their question.

7. “How to Report Bugs Effectively”

  • Link: How to Report Bugs Effectively
  • Summary: This guide by Simon Tatham provides advice on how to report bugs in software projects. It covers what information to include, how to reproduce the bug, and why clear communication is critical in helping developers address the issue.

8. “What Have You Tried?”

  • Link: What Have You Tried?
  • Summary: A humorous take on a common frustration among those answering questions online—being asked to solve a problem without any indication that the asker has tried to solve it themselves. The site underscores the importance of showing effort and providing context when asking for help.

9. “The Art of Asking Questions”

  • Link: The Art of Asking Questions
  • Summary: Written by Jon Skeet, this blog post on his Code Blog provides detailed advice on how to ask good questions in technical forums. It focuses on clarity, providing enough information, and the importance of a well-written question.

10. “How to Write a GitHub Issue”

  • Link: How to Write a GitHub Issue
  • Summary: This guide provides practical advice on how to write effective issues on GitHub, ensuring that maintainers and contributors can easily understand the problem and provide a solution.

These resources are commonly referenced in the tech community for anyone looking to improve how they ask for help, report bugs, or contribute to discussions in a constructive way. They offer guidance on being clear, concise, and respectful when seeking assistance online.

Help us collect the best tips for getting help!

It’s amazing that there are even places we get help from strangers! But there are many things, from etiquette (like what to share / where / and how to ask) – to more technical things like how to paste your code in Slack and Discord (or when you should make a CodePen).

What are some things that have helped you as the person asking or the person answering?

Ensuring your code snippets are their most readable

The easier things are to read, the faster people can help you. And that clarity will make the most of everyone’s time and make sure they aren’t accidentally trying to help with the wrong thing.

Let's be friends