State your goal clearly, explain what you've tried, and describe specific errors encountered. Include relevant details about your environment and avoid vague descriptions like "it doesn't work." Context helps us understand your situation quickly without requiring multiple follow-up questions.
Avoid excessive background information. Focus on explaining what you are trying to do and where you're encountering an issue.
Why: We have limited time, and providing clear context upfront allows us to focus on solving your problem rather than gathering basic information.
Example: "I'm encountering a ValueError
when fitting my regression model with scikit-learn."
Create a simplified version of your code that isolates and demonstrates the issue.
Share a Jupyter Notebook with a minimal version of your code that reproduces the issue. The notebook should be small, self-contained, and ideally runnable without external dependencies. If possible, include sample data (either small subsets of your data or simulated data).
Remove any code unrelated to your specific problem and ensure all dependencies are clearly documented.
Why: A good MRE serves multiple purposes: it helps others reproduce your issue exactly, often reveals the source of the problem during creation, and demonstrates your thinking process.
- Key elements for the notebook:
- Code block for setup: Include the necessary imports and setup steps.
- Problem demonstration: Include the part where the problem arises, whether it's an error or unexpected result.
- Expected outcome: Clarify what you expect the code to do.
- Describe your environment:
- Include details about the tools, libraries, and versions you're using, as well as your operating system. This helps others determine if the problem could be environment-specific.
- Example: "I'm using Python 3.8, scikit-learn 0.24, pandas 1.2.4, and Jupyter Notebook on macOS Big Sur."
Have you tried to resolve the issue independently? Be specific about what you’ve attempted to fix the issue. Summarize solutions you've already attempted and resources you've consulted. Share your hypotheses about what might resolve the issue rather than asking open-ended questions only.
Why: This shows that you've put in effort to solve the problem yourself and helps others avoid suggesting solutions you've already explored.
Example: "I tried converting the data to a 2D array using reshape(-1, 1)
, but the error persists."
If an error is occurring, provide the full error message and stack trace. This is often the most critical piece of information for diagnosing the problem.
-
Example:
ValueError: Expected 2D array, got 1D array instead: array=[3, 2, 1]
Clarify what you expect to happen when the code runs successfully. This gives context to your problem and helps the person helping you understand if the issue is with the code, the data, or the tools.
Example: "I expect the regression model to fit the data and provide the coefficients for the linear regression."
If your problem is part of a larger project or a specific part of your thesis, include a brief explanation so that the helper understands the broader context.
Example: "I'm building a housing price prediction model, and I’m using this regression step for feature selection."
If you've used AI tools such as ChatGPT to generate part of your code, make sure you understand what the code does before asking for help with it.
If you don’t understand it, it’s unrealistic to expect others to troubleshoot or understand it for you.
Frame targeted questions rather than general ones. Clarify whether you need conceptual guidance or technical debugging and identify specific concepts you're struggling with.
Why: Specific questions lead to specific, actionable answers.
Example: "Is my approach to handling class imbalance appropriate, or would adjusting the decision threshold be more effective than resampling for this particular type of medical data?"
Understand that we are here to guide you, not to solve everything for you. Be clear about what kind of help you need.
Manage your expectations. We are here to help you think through the problem and offer insights, but it's essential that you take ownership of the troubleshooting and solution-finding process. This is part of learning and growth. Remember that problem-solving is an important part of the research and thesis-writing process.
Sometimes, you may not get a simple, ready-made solution. The work is yours to solve, and you will need to develop problem-solving skills throughout this process.
Use appropriate communication channels, such as email, Moodle, or scheduled sessions, when asking for help with your thesis or code-related questions. Avoid informal approaches, such as asking about code during lunch breaks or in passing. If we have scheduled a meeting, make sure to be punctual and come prepared with specific questions to make the most of the session.
While we can help guide you through challenges, we are not magical mind-reading models that can solve every problem on demand.
Learning to communicate technical problems clearly and engage in collaborative problem-solving is as valuable as mastering technical skills themselves. The most successful data scientists aren't those who never need help, but those who know how to seek and incorporate feedback effectively.
Plan ahead to allow time for responses, be open to different forms of assistance. Be patient and open to further questions or requests for clarification. Sometimes the issue is complex and requires additional information before a solution can be provided.
Knowing how to ask for help is an important skill to develop!