One of the essential skills in programming is to ask good questions. Forums, facebook groups and sites likes https://stackoverflow.com are full with examples of bad or
already answered questions. You can find your answer on many places but only if you ask the right question.

Bad and good question

Bad: Which one is a good choice Python or PHP?
Good: I'm a student in Computer Science who wants to work in the area of Big Data? Python or PHP is better for me?
Bad: Guys I need the best IDE to code in Python?
Good: What would you recommend for a juniour developer for Python and Windows?
Bad: Best books of Java
Good: I want to learn Java. No previous experince in programming. Can you recommend a course or a book?
Bad: What's wrong here?
Good: I've wrote a code in python for Fibonacci - which is not working. I've good wrong result. Can you help me?

In short:

A good question

  • is simple and clear
  • topic related
  • answerable

Bad question

  • confusing
  • related to many topics
  • debatable

Explain the problem yourself

Before to ask your question it's better your problem to be well defined before. Try to solve it by yourself:

  • read the message one more time - try to understand the error
    • python can't convert 'tuple' object to str implicitly
  • debug the program and check what is the behavior
    • the semantic errors can be found with debug and program analyze
  • try to fix the problem for yourself
    • do a code change - something which you think that can fix the problem or the program behavior
  • if you are depleted from ideas search on google - try to be more descriptive and accurate.
    • A good template is : OS + language + error for example: Windows python can't convert 'tuple' object to str implicitly
    • try several different queries and check which one is working best
    • prefer links to popular sites with good reputation or personal blogs specialized in your area of interest
    • search for video result (especially if you are a newbie)
    • gradually add or remove search words
  • Finally ask your question with good description, code example and your question(s)

It's best if you start your question with small introduction for the problem. Where and what produce the situation that is causing you a problem. What steps did you try to solve your problem and what research did you perform. What difficulties you encountered while trying to solve the problem.

Many questions would benefit if you include code example, settings and/or logs. Try to include only the relevant code lines which are causing the problem. Ask specific question for the code and explain what is expected vs result. Your code should be enough in order the problem to be reproduced. A live example in some of the popular web sites like: https://jsfiddle.net/ , http://www.sqlfiddle.com/ or http://jsbin.com/ would be perfect.

When you're ready to ask your question you can ask friends or colleagues before asking on Internet. Wait for one night or day if you are able to solve the puzzle the next day or after a good rest. Read your question again and try to see if it's: informative and descriptive enough.

Popular questions

Some questions are very popular and more likely to be asked by many junior programmers. These questions can make senior people annoyed.
It's better to ask such questions or general questions with any sense.

Usually asked by beginners:

  • How to install python?
  • How to download python?
  • How can I learn python?
  • What is a variable?

General advices when you want to ask a question

This advices are general recommendation for juniors and newbies. Don't forget that your goal is to solve a given problem with less effort and not to argue endless posts with other people on Internet:

  • Post only quality posts (related to your language, IDE, OS)
  • Avoid advertising, self-promotion or being silly
  • Don't pretend that you know everything (GOOGLE it, Youtube it)
  • If you cannot understand something - try to explain what is not clear for you
  • Respect the other people time and nerves while they help you
  • Keep your question descriptive but simple and short
  • Explain others how to reproduce your problem
  • Proof-read before asking any question