This question is not as philosophical as it sounds, but it's one worth answering.
I am here because I want to help people understand programming and help make us all better programmers. Sometimes I have questions to ask, sometimes I have answers to give. This sharing of knowledge between all parties helps to further our understanding by reading an accepting ideas and approaches we wouldn't otherwise have thought of.
Not as stupid as it sounds. The obvious answer is: "Because I have a programming problem" but this may not be correct.
Think about it; why exactly did you come here and don't lie to yourself.
Commonly I see the following:
1. Someone is stuck and they need help overcoming their problem
2. Someone wants to be peer reviewed to ensure that they're making the best of their ability
3. Someone doesn't understand a particular aspect of programming
All three are valid reasons why you should ask for help, but there's one missing. One which, I can say, makes me angry/frustrated.
4. Someone needs their work doing for them
To those I say; "Get Out". I don't mean from Daniweb though, I mean the software industry. As harsh as it sounds, you don't belong in it. If you don't understand, that's fine. Everyone needs to learn, but if you're too lazy to even attempt it, then you're just going to continue to fail and eventually you will be fired or won't be able to get a job and you'll be out "on your ass" with no prospects.
Secondly, you give everyone else a bad name. I've been in two jobs where I was a lone developer and a second dev in a third. For the two lone dev jobs, the amount of distrust from marketting and sales was astounding. Simply because their last programmers never actually did anything (I was in on contract). For my first permanent position as a second dev, the first would just outsource their work and sit reading comics all day. They had zero programming ability. I left within a week, the company didn't have any faith in their development "team".
So you've come to ask for work, because you need to pass your module but you don't understand any of the material you've been taught. Okay that's fair enough :)
But (I think) you came to the wrong place ;)
Daniweb has a nice rule that says you've got to show how you attempted it first, so that we can help with your specific problem. We aren't paid to be here, why should we do your work for you? ;)
What that means is people who don't understand any programming often won't get assisted, there's no point just giving you the answer because that won't help either (it's also cheating, see "Plagiarism")
So how do you overcome this issue? See below :)
Your teachers, your lecturers and your supervisors. They're all there to help you. Too often when asked in-person for help, I will first ask: "Have you asked your lecturer first?" and get the reply "Why would I do that?" (or a variation of it)
The answer to that is: They're trained and paid to teach you.
They are not placed there to just criticise you, or to be an obstacle on your way to your career, or simply go out of their way to stop you having fun. Too many people see them as the problem and not the solution.
If you've been given a programming task by your lecturer and you don't understand it, why don't you ask them about a couple of points after the lecture? Sometimes you can get a 5-minute 1-on-1 lesson to just go over something you didn't get. Other times, it might be possible to arrange a time where they can go a bit more in-depth with yourself or perhaps a group who are also stuck. Most Colleges and Universities have workshops you can attend for a bit of extra-curricular advice. I suggest you attend those as well.
Remember that lecturers aren't your enemy. If you show that you're willing to go out of your way to learn, they are MUCH more likely to help you. This will also show in their grading! In computer science there is generally no definitive right or wrong way of doing something. There are good ways and bad ways, but if it achieves the result, it wasn't really wrong...If you do something a "bad" way, but the lecturer understands that you're trying to understand and you're putting in this extra effort, you might get a higher mark than someone who has a better natural ability, does it exactly the same way as you, but pays no attention in class.
If you sit at the back talking to your friends all lecture and then don't understand, why should they (or we for that matter) give you their free time (they're people too!)
So you've been to your lecturer, (s)he doesn't have much time to offer you, makes an attempt at a better explanation but you still don't really get it. Then you've come to the right place :)
With the knowledge you do have, make an attempt. Don't be frightened of getting it wrong, just think about the things you know, put it in writing and see what you get. Most likely it won't work, so you come to Daniweb saying: "Hey, I've got this project to do X, but I don't understand how. This is what I've tried so far, what do I do? <code listing>"
Not only have you shown you're willing to try, but that you also want to learn. You will, unless it's truly beyond any of us, get a response that will help you out.
It is not a good idea to go "HELP! I HAVE TO DO X, Y & Z. PLEASE GIVE CODE URGENT! <code listing>" You're asking for the answer, not the understanding. That's an important difference to make.
Let's take this question for example:
"I have this project at school. Take 5 inputs in the form of numbers, hold them all in a single variable and print out the min, max and average. I've put my input into five separate integers, but I don't understand how to put them all in one variable. Please help! Here's what I have so far <code>"
This is a good question, we understand immediately that you need help with Arrays. In most cases, you will be told "You need to use an array" along with an example of how it should be used. Some people will also give a more in-depth explanation of how arrays work and some possible alternatives based on different scenarios.
Finally, don't be afraid to go back, try with what has been suggested and then come back again if you still don't get it. There are several threads on here where I've entered pages of discussion to try and help the OP, but there has to be reciprocation. Try out the suggestion, if you can't get it to work, re-post your updated code and any new errors and attempt to think about the error yourself. Talk about the problem, if you understand some parts but not others, say specifically what you don't understand.
If you reply "it doesn't work" with no update as to what you tried or what in fact isn't working, then the conversation generally stops there. Without any more information, how is anyone supposed to help further? If you aren't willing to put in the effort, why should anyone else?
Personally, I'm not a fan of books. I generally only keep reference books and now Intellisense mostly erases the need for those too.
I'm more of a "do'er". I truly believe the best way to learn programming is to experiment yourself and figure out what you can and can't do, using places like Daniweb when you need specific assitance.
Books are good if you don't know anything about the subject. Let's say for example you wish to learn XNA programming. There is simply too much knowledge that needs to be transferred. You can't explain it fully, or even properly in a forum post. There is a forum post stickied in Daniweb that suggests a list of reading material (some of it is free) that is particularly good for beginners. If you want to learn C#, read a book on how to get started, then get started, then come here when you get stuck :)
On a final note, please bear in mind that no one is paid to be here. If you're going to start getting aggressive and demanding, I don't think you'll get the answer you're looking for ;)