62

Often the question shows up of something along the lines of:

I'm trying to learn language XYZ. Where should I start?

or

I'm trying to do ${very large project}. Where should I start?

Why are these questions considered poor questions for Softwareengineering.SE and how should I go about asking a good one when just starting out?

72

The "where do I start?" question has several issues with it that make it a poor question to ask. It is unclear what the level of knowledge of the asker is, has too many possible answers, and ultimately doesn't have a clear problem defined.

Unclear

Let's head over to Seasoned Advice (Cooking Stack Exchange) and think about a hypothetical question to ask there.

I want to learn how to bake a cake? Where should I start?

A person attempting to answer this question doesn't know what your skill level is. Do you know how to read a recipe? Can you operate an oven without supervision? Are you trying to make a simple pound cake or are you attempting to make a multi layer red velvet cheesecake with frosting from scratch that should match something from pinterest?

Without this knowledge of where the OP is at, the person attempting to answer is either going to engage in a hopelessly long series of comments trying to find out the level, or is going to take a shot in the dark and probably not answer the question satisfactorily for the person asking it, or the next person viewing the page from a google search.

Too Broad

Back to programming as the idiom and away from cakes.

The next part of the problem is that there are numerous approaches to learning a language or projects one can do. There are an unprecedented number of different things one can do to start. Dozens of programming challenges out on the web that can be good starting points for programming (search for them) and hundreds of open source projects that are out there that are at an appropriate level for someone learning (no, don't tackle trying to do something huge, but find a nice little utility that could do with some additional functionality).

Such questions have people leaving short answers that are little more to a link. Stack Exchange works very poorly as a link aggregator - if you are looking for that type of answer, look to link aggregators instead.

No Clear Problem

You have a problem - you don't know where to start with a design. But that isn't a clear problem. Are you stuck at the modeling of the data objects? At the structure of the classes and their responsibilities? trying to figure out how to use Spring or Rails or ${overly large library}? Is the ORM just not connecting to the right neurons in the brain?

All of these are part of the "I don't know where to start" set of problems. Obviously you have gotten to some point in the design. You want a program that can do X, Y, and Z. You've fired up the IDE and you've... this is where you need to describe what you have done, what you have thought of and where you are stuck.

You need to try something before you have a good question. The design from an enterprise coder could steer you into strange n-tier designs, while others are going to suggest strange metaprogramming idioms or sneak a monad into your design. These aren't wrong answers, but they may not be right for where you are at in your learning and figuring out the design.

Consider also, that the best way to figure out how to design something is to learn how to design something. For personal projects learning about how to do something, the paths down the wrong way, while discouraging, are some of the best learning experiences to be used in the next project. Be wary of the programming architect who has never designed a bad system, for when they do they won't know what to do at all.

Try Chat

If you have 20 rep (four up votes on questions, two up votes on answers, one up vote and an accept on an answer, ten accepted edits or some combination of the previous), you can chat in the chat rooms. Programmer.SE's chatroom is called The Whiteboard and we're quite open to answering the questions that don't work well on the Q&A part of the site.

The advantage of chat for these type of questions is that we can engage in the dense back and forth that would otherwise be in comments to determine your skill level and also work through different problems. Remember though that chat is not a tutorial service despite how helpful people may be.

  • Trying to seed the web site with info? – Panzercrisis Dec 27 '13 at 15:34
  • 13
    @Panzercrisis They are fairly consistent sets of questions that we get and close on a regular basis. The comment field doesn't have enough space to properly address the topic in full. By having a Q&A on Meta about the question, we can reference it instead and help the person ask a better question or come to terms with the broader issues at hand. – user40980 Dec 27 '13 at 15:50
  • re-posted with minor changes to MSO: Are “Point me in the right direction” questions acceptable? – gnat Mar 21 '14 at 5:47
  • 3
    Be wary of the programming architect who has never designed a bad system, for when they do they won't know what to do at all. - Very well said and inspiring, I'd say. Great way to look at the learning process and making mistakes. – Reed Oct 25 '15 at 18:22
  • Thumbs up for making a comparison with cake. I always do that when I try to simplify a coding problem ^^ – Domino Aug 9 '16 at 19:46

You must log in to answer this question.