How To Ask A Good Question


We love helping Codeshipers! Here are some tips on how to write your questions to help improve your chances of getting answers.

Search first

There is a good chance that your question has been asked before. Save yourself time and search to see if a similar question has already been asked on Codeship’s Community Forum or your favorite search engine.

Write a title that summarizes the specific problem

The title is the first thing fellow Codeshipers who are eager to answer will see. If your title isn’t interesting, potential answerers will likely scroll right past your post.

Pretend you’re talking to a busy colleague and have to sum up your entire question in one sentence: what details can you include that will help someone identify and solve your problem? Include any error messages, key APIs, or unusual circumstances that make your question different from similar questions already on the site.[1]


Bad: coverage issue with py.test
Good: How come using py.test with coverage doesn’t include imports

Bad: rails test database error
Good: Rails 3.2, FATAL: Peer authentication failed for user (PG::Error)

Bad: Nokogiri is not working in Docker
Good: Why is Nokogiri on Ruby 2.3 not compiling when building a docker image

Introduce a problem with a detailed summary

In a brief summary (3-4 sentences), explain what you are trying to accomplish and the result(s) that occurred during your attempt(s). Unlike your title, this will give potential answerers a better overview to determine if it’s a question they are able to answer.

Provide reproduction steps

All questions and scenarios are unique snowflakes (sorta). There’s a high chance that others have experienced similar build failures, error messages, and services timing out. However, the journey to reach similar problems is usually unique.

Provide step-by-step instructions that lead you into seeing your issue. Include all relevant information such as build environment setup (i.e Dockerfile, programming language version, services used, etc), test & deployment configuration (i.e test commands, SSH commands, custom scripts), any relevant code snippets (i.e the snippet of the method shown in the error message), and lastly any error messages or screenshots of the resulting issue.

Show research done towards resolution efforts

Providing information for any prior investigation / troubleshooting you have/haven’t made really helps answerers narrow down the root cause of your issue. Even if you don’t find a useful answer elsewhere, it will show that your question is different from the rest.[1]

Include all relevant tags and categorize correctly

Include a tag for the programing language, service, database, API, and framework that relates to your question. Not only will it help attract more answers to your question, it will also make it easier to find is someone else is looking for the same question. Be a pal, tag your questions!

Proof-read before creating a topic

Go back to the very begining and read your question through until the very bottom. Does it make sense? Are the reproduction steps clear? Are there any typos? Did you properly use quote and code blocks?

Respond to feedback

Whether it’s a request for more information or responding that a suggestion did or didn’t work, responding to feedback in a timely manner will help improve your chances of finding a solution to your question.


About the Community Use and Conduct category