This question sparked a short debate about whether it's best to answer homework questions in terms of best practice, or if it's better to answer literally.

In this case, the practice of subclassing Thread is somewhat frowned upon, though the OP was clearly looking for an answer along those lines.

I suspect the best solution here would be to answer the literal, following best practices of answering homework questions, then enumerate why the method detailed is not currently considered best practice within the question domain and present the 'improved' option.

Clearly in a homework question the OP is going to be looking for something to satisfy the tutor while the goal of education in general is to learn.


4 Answers 4


Most of the time, Homework questions are pretty awful.

To me, the classic scenario is this:

Kid A gets an assignment, is too lazy to think or do some reading, signs up for SO, posts a single ill-phrased question (possibly full of l33tsp34k and lols), takes the first answer that compiles, copies / pastes it into his assignment, usually without commenting, accepting or upvoting any answer. Kid A is then never seen again on SO. (there are fortunately many counter-examples to all of the mentioned aspects, I know, I'm just painting everything black)

In addition: the assignments they get are often awful. There are many lazy teachers out there that haven't updated their material in the last 15 years and hand out Assignments and Reference Material regarding ancient data structures like Vectors, Hashtables and Enumerations (all of these are unofficially deprecated in Java and have been replaced by ArrayList, HashMap and Iterator, respectively, more than 10 years ago).

Also, the OOP concepts taught are often awful. In the above question, there was an inheritance structure of either Person is-a Thread or Card is-a Thread (the OP wasn't really clear about that), which is such an appalling design that I just can't ignore it. Domain classes should never inherit from infrastructure classes!

Given all of the above context: I don't think I am doing anybody a favor by providing a literal answer.

  1. Not the OP

    Sure, it might give him a good grade in the assignment, but a) it solves the problem for him instead of teaching him how to solve it. That's how dumb people are made. That's right: nobody is dumb, but they can be made dumb by others :-) b) he will believe the bad practices are good practices and carry on like his teacher taught him to. brrrr.

  2. Not the site

    Answering such a question with a literal answer means littering SO with uncommented bad questions that have simple accepted answers. Readers will thereby think the question context is valid and / or a best practice (especially since they are usually asked from a University context, after all a University is where the smart people are, isn't it?)

Sorry, I just won't do it. I will not tell the OP how to solve his question if there is a major flaw in the question, whether it's his fault or not.

In my opinion, people get smart by learning how to ask the right questions. So answering their wrong questions is the worst thing I can do to them.

  • Hmm, the "Don't do it" argument. I wasn't convinced earlier but your explanation here does make a lot of sense. On the other hand I think that both the OP and the site would benefit from (i) guidance to solve the question (ii) reasons the question is wrong (iii) solution to the problem the 'correct way'. The OP won't accept the guidance as an answer but it does provide data for others that need to do the same (outside of homework). The reasons why it's a bad way of doing things, and the best practices solution, is good SO content. High rep users would probably vote for that answer
    – ptomli
    Jan 21, 2011 at 10:23
  • Maybe the question should be re-phrased, it's a bit either/or at the moment.
    – ptomli
    Jan 21, 2011 at 10:23

This question implies that

  • You can tell whether the question is, in fact, a homework question or not.
  • You believe you know the problem and all outside requirements better than the person who posted the question.

I don't believe it matters whether a question is homework or not. This is the place to get answers. Teachers who depend on the idea that students cannot find information online are shortsighted. They have to deal with Wikipedia in most subjects, they get to deal with the plethora of programming sites in SW engineering subjects.

So the first point doesn't even bear weight on the discussion.

It doesn't matter if the question is a homework question.

The only thing you should be concerned about are the requirements surrounding the request. If they seem to have odd burdens placed on what type of answer they can use, you have three options:

  1. Question their assumptions and requirements, seeking further understanding (and possibly helping them find the root issue, if they don't already see it)
  2. Answer according to their particular mix of requirements
  3. Ignore their requirements, explain why, and give them a better solution (requires you to assume that you know more about their problem than they do)

Personally, I will generally do #2, with a side helping of #1 and #3. If I don't know how to fulfill their requirements, then I may choose #1 and #3, but I will rarely do #3 without #1 - I want them not only to understand the best practice, but also have a good feel for the overall problem and what reasons I have for discarding their requirements.

  • I whole-heartedly agree. If the question is "awful" then it's awful because it's not a good question (it's poorly phrased, shows little effort, or otherwise isn't an actual question). Simply being a homework question doesn't make the question better or worse, and just because homework questions are more troublesome than others doesn't make the whole category bad. We just have to keep pointing people back to the FAQ, and using the voting system. meta.stackexchange.com/questions/116854/…
    – jefflunt
    Dec 22, 2011 at 19:05

I agree with you that the homework questions should be answered literally. In the sense, that the OP has to do some "homework" for getting the answer. Its like "Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime."

Usually imposing this on SO users would not be possible, since the reputations is at stake. Giving a direct answer which OP can copy/paste and please his tutor would earn the person an upvote and marked as answer. So 25 "easy" points at stake. People with higher reputation might not care for such petty things and would try to make OP learn from their hints or answers, but you cannot stop others who would be looking to up their reputation.

  • 1
    I think you're looking for "“Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime.". But there are some alternatives: "Give a man a fish; you have fed him for today. Teach a man to fish, and he will sit in the boat and drink beer all day."
    – Kev
    Jan 21, 2011 at 9:14
  • @Kev - Yes Absolutely. Edited my answer with your help. Jan 21, 2011 at 9:38
  • 3
    @Kev - there's also Terry Pratchett's version - "Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life."
    – ChrisF Mod
    Jan 21, 2011 at 9:46
  • 1
    A quality question is a quality question. I don't understand why we treat homework questions differently. They're not bad questions because they're homework - they're bad questions because of some already established reason, such as: they are poorly phrased, show little effort, or aren't actually a question. The FAQ and voting systems should be sufficient to deal with these issues.
    – jefflunt
    Dec 22, 2011 at 19:09
  • How is answering a homework question "literally" equivalent to teaching a man to fish? There's no teaching involved, you're just saying "here you go." Apr 10, 2014 at 22:14

I think, provided that it's known that the question is for homework, that members lead students to the solution -- not just point them out. I also agree that the questions need to be well structured, but I think a homework question would be answered the same way you would answer basic questions.

If someone asked you how to traverse tree nodes in C, are you more apt to provide them code, or explain the theory? I'd fall towards the latter as it's more insightful in any situation and guide the poster to the solution. I think it's more valuable for theory based questions to explain the theory instead of respond with a literal code answer, but that's my personal opinion. Now if someone asked me how to programmatically create metadata navigation in SharePoint, that would be a question where I could post code first and lecture later since it's far more specific. I guess it comes down to one's ability and preference on how they think they should approach answering the question. Would the user asking benefit more from the theory or the code sample?

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .