Advertisement

Non-Constructive Criticism

Started by August 23, 2012 09:28 AM
47 comments, last by Alamar 12 years, 2 months ago
I've been on GameDev since 2009, which isn't long to those that were here before me, but from the moment I joined, through today, I noticed a disturbing trend: thread after thread of people that consistently give non-constructive criticism, rather than helping. I'm sure you've seen the kind; you post asking for help in implementing a new idea you have, or you ask how to implement a well-known technique or format, and at first there's nothing, but then the posts trickle in of people flat-out telling you not to do it, that they don't care for your ideas, and to give up and just use someone else's work. Often, people think they are helping, but they don't realize that they've stopped giving the requested advice, and instead engage in tiring arguments about why they don't agree with the original poster. Nothing gets done, and both parties walk away with wasted time on their hands.

I'll speak from my own personal experience here. I am wondering how to complete a well-known and complex task, with a few restrictions to conform to my platform or needs. I've gotten everything from people straight-up telling me that it is impossible, speaking from their years of experience, and that I need to give up, to people telling me to ditch my whole platform, throw out the libraries I wrote, and start over entirely the way they think I should. Throughout all of that, I received no help. I have many dead-end threads, populated only by people telling me to stop what I'm doing because they disagree. I've received no help at all on some topics; some, I figured out on my own, weeks or months later, and some still gather dust because people would rather argue about whether or not it should be done, rather than assist in its completion.

Then there are people who will offer their insight, but only after telling you how useless they think your idea is, and how little use _they'd_ have for it. I can tolerate others expressing their opinion to a point. People inevitably want to share their experience, but people without experience in what I'm doing tend to give the harshest criticism of why I'm wasting my time. The worst part is, sometimes I have a specific question, and they give a vague answer, with a flippant remark about how they don't think my work has any merit, so I politely ask them to clarify, hoping to learn precisely what I need to do next, and rather than clarify, they then blast my project with why they don't like it, and how they don't think it's worth anything. Then they restate their vague answer; it's like they didn't even read my posts. I let many a thread die on this site, and a couple others, because all I get is harsh reprimands for what I'm doing, rather than help. The only thing that makes it worse is that they think that they are helping, but really, they're just lowering my morale, and impeding my task. People also tend to be less likely to respond with helpful answers after someone else has already flamed me.

Now, I know I have some weird ideas. For instance, I have several virtual machines, each for a specific purpose. Just about every time, people tell me to throw it away, and install x library, and run that instead, or just install the y program, and use that. People don't seem to realize that there's a very specific reason that I need _this_ module, this library, this concept with this set of restrictions. They so carelessly tell me to abandon my project, and start over the way they want me to. Often, the changes that they tell me to make are so drastic, I wouldn't even be on the same project. It has gotten so bad, that I have to add "Please don't tell me to stop working on the project, or to use someone else's tools." A lot of my code is designed to run on an embedded machine. People blast me for not using standard library routines, which don't always exist, and frequently tell me to drop the project and use someone else's library, which will not work for my purposes. After all, if using someone else's high-performance library was the best option for my situation, wouldn't I be doing it already? I'm not in need of guidance as to what my project should be, I need advice on where to go next.

I also know that I reinvent the wheel. Sometimes, people don't see the distinction between what I need, and what is already there. I have an image format that can handle an astronomically large amount of formats, with varying bitdepths and offsets, but I needed help with a particular image manipulation routine. Their advice? Throw my library away, write a Targa image loader, and load the image. Not only did that not help, but it didn't give me any advice on my problem. I needed help with some physics logic in my game engine, and I get told to discard my engine and install Unity/Bullet/Havok... the list goes on and on. Not only do I not want to, but that is not an option for what the task's constraints are. It seems the easiest way to "help" someone do something that you don't know how to do is to tell them to stop doing it, and tell them to do something you know how to do.

I don't get paid per job. This isn't my profession, and I'm not interested in producing as fast as I can. This is about passion; if I want to write it all from scratch, let me. I don't care that you think it's a dumb idea. If someone were paying me to do a job as fast as I can, I'd use all the tools at my disposal. Sometimes, I just want to have the feeling of accomplishment from having done something with my own two hands. It's less about having the finished product than it is about creating it from the ground up. People tend not to understand this, and berate me for being ineffectual, and tell me to stop what I'm doing, rather than help me.

I'm also doing this for me. I don't care what you think of the task, unless it affects whether or not it can be done, or I am trying to get you to use my products. Telling me you don't like it may make you feel better, but it is a waste of time; I'm here to learn, not about your personal preferences, but about academic topics, and programming various concepts. I shouldn't have to justify to anyone that comes to offer help why I am doing the task in the first place. That isn't important; I didn't ask what is the easiest way to get the task done, I asked how can I implement it myself, and what do I need to do next? It is ridiculous, the amount of people that come to a help request thread empty handed, and simply criticize what I'm doing, expecting me to try to convince them that what I am doing is worth their interest. It isn't about them. It is my project, and I am going to finish it.

I understand that sometimes I am not doing things the best way that I can. Often, I ask what is the best way to do it, because I know my way is inferior. Sometimes, I get people that point me in the right direction, but other times, people suggest none of the above, and tell me not to do it at all. It's like asking if there is a faster way to get to the gym from your house, and people tell you to not go to the gym; they don't like gyms, the gym sucks, and you can just use steroids. You should go to the hospital. Hospitals are clean, and they have nurses.

If your reaction is "...What?", you know how I feel. People really seem to think they are offering valuable advice when they say things like that, and it is hugely discouraging. The project _must_ be finished, regardless of people's opinions of it, and the project _must_ be done under these constraints, regardless of whether or not people like them.

TL;DR: I've had one too many threads where, rather than provide coherent help, people just criticize what I'm doing, under the guise of advice, and tell me to abandon what I'm doing and do it their way, regardless of whether or not it would even complete the task I set out to do. I ask that anyone that gives advice to stop and think, "Is this providing actual information? Not just what I feel about it, but am I supplying cold, hard, verifiable facts?" If not, you might just be hurting their cause, by discouraging others from entering the thread, and by providing nothing but a lack of morale on the end of the person in need of your help. I'm not upset or feeling vengeful; I want to express what I experienced in my time on various forums, with the hopes that at least one thread goes on to be more civil after people consider how the other person feels.
TL;DR: I've had one too many threads where, rather than provide coherent help, people just criticize what I'm doing, under the guise of advice, and tell me to abandon what I'm doing and do it their way, regardless of whether or not it would even complete the task I set out to do.
As a band-aid, I'd suggest being as specific as possible in topic-starting-posts, and in any threads about seemingly crazy ideas or wheel-reinvention, add a disclaimer that you're aware of these facts and are looking for specific advice nonetheless.

If someone is obviously trolling with useless discouragement and advice, you can ask a mod to help keep the topic on-topic... but the distinction between useless advice and well intentioned discussion depends on the OP's specificness.
Advertisement

Now, I know I have some weird ideas. For instance, I have several virtual machines, each for a specific purpose. Just about every time, people tell me to throw it away, and install x library, and run that instead, or just install the y program, and use that. People don't seem to realize that there's a very specific reason that I need _this_ module, this library, this concept with this set of restrictions. They so carelessly tell me to abandon my project, and start over the way they want me to. Often, the changes that they tell me to make are so drastic, I wouldn't even be on the same project. It has gotten so bad, that I have to add "Please don't tell me to stop working on the project, or to use someone else's tools." A lot of my code is designed to run on an embedded machine. People blast me for not using standard library routines, which don't always exist, and frequently tell me to drop the project and use someone else's library, which will not work for my purposes. After all, if using someone else's high-performance library was the best option for my situation, wouldn't I be doing it already? I'm not in need of guidance as to what my project should be, I need advice on where to go next.


The thing is how often do you point out WHY you want to do it this way?
if you don't state constraints up front then, rightly or wrongly, people are going to assume that you are working on a modern PC system without any major constaints being in 99% of cases when people ask questions without providing constraint details this is the situation.

Bascailly you can't critise people for telling you to throw things away if your idea/method seems dumb on a PC when you haven't stated up front that you aren't using a PC.
I don't have the full story obviously, but I can feel your pain. I wouldn't call it as much a trend that's specific to here: there's a lot of egos clashing in this industry and to a certain extent, ou have to deal with it.
That said, this should be no excuse to drive threads out of topic and lead you nowhere. I think Gamedev's mission in that regard is clear.

I won't go so far as to say "a majority" as I believe this is inaccurate, but a lot of people over here are from or willing to enter the industry of game development through either the indie or commercial scene. They may judge your work accordingly to what they believe industry standards to be and will lead you towards the most cost-efficient methods by default.
As Hodgman puts it, in the interest of getting better results, having a "disclaimer" may very well help. We're never "too specific".

There is one last thing that's a hard fact to face but is also real: people will help out others if it is worth something to them. We all have our reasons to help each other out, and to some, you wanting to "do it your way" may be going against their principles. Maybe they are interested in forging an ever-growing pool of more efficient developers, not basement-hobby-level devs, and you need to accept that too. We're not employed and paid to provide a service, we're all logging freely from our homes or offices during break time to spend our personal time and invest it in these discussions: in other words, it needs to have value to us to take part in these conversations.

Like I said, I find it unfortunate that you end up being flamed, but at least you get some attention. I've seen many a thread that have received little to no attention despite the substance and weight of the topic. I, as much as the next guy, am guilty of not replying to these threads.
I would suggest using mod reporting to get the flame out, and remain factual. Simply ignore those that flame you as it would inevitably lead the thread off-topic otherwise. Flames can be dealt with if they are isolated, but threads are hard to get back on track once everyone is taking position and ignoring the original post.

Any further comment would require that I read through your actual threads, but from the description you're giving here, I wouldn't want to invest the time only to find out that these threads lead nowhere.
If I am doing complex thing Y, oftentimes, it's because I don't know simple method X exists or because I misunderstand X. People asking me, "Why in the world are you doing that?! Use 'X' instead." is very helpful.

I just looked through your, "thread after thread" (read: 4 threads) - and everyone is very helpful, as far as I can see.
If you don't like your methods questioned, you need to realize that having hard questions asked about your work actually helps your project as it gives another set of mental eyes asking, "why" about the higher level architecture.

Someone comes using char* in a "C++" program: "Why aren't you using std::string?" -> "Because my book uses char* - what is std::string?" -> *grows in knowledge, reduces alot of pain, avoids alot of headache*

If people are critical, realize they aren't criticizing you, they are criticizing the current method you are using - and that that criticism is invaluable. Having polite and intelligent people criticize what you are doing, and having a real discussion about it, is what makes this forum better than anywhere else.

If you just want the answer to your spoken question, without the possibility of real dialog, go here. But if you want real discussion, this is a discussion forum. Nobody is griefing you, nobody is being rude, they are just asking important questions to either better understand what you are doing, or for you to better understand the alternatives.

If they aren't sugar coating it to the level you require... then you have a problem. This GameDev.net is very polite and respectful of other people, but not other people's work. One of the best things you can have is hard criticism for your work.

99% of the forums on the internet fall into one of these categories:
- "Feel good forum" - Bunch of inexperienced people cheering each other on, and applauding each other's projects in ways that don't benefit the project.
- "Feel bad forum" - Bunch of morons trolling each other and criticizing other people relentlessly.
- "Social forum" - Bunch of inexperienced people answering questions they don't actually know the answer to, to get upratings and to 'belong' to a community.

Any forum that departs from these are incredibly rare, and incredibly important. GameDev.net is one of those that depart.
This whole thread, and this other one both confuse me. You both seem like you are having difficulty discerning the difference between criticism of one's self, and criticism of one's work. Unasked for criticism of one's self is unhelpful online, and only helpful from people that really know you personally (close friends and family). Unasked for criticism of your work and project benefits both you and the project, whether you wanted it or not, as long as you are willing to considering it before deciding whether to accept it as valid or dismiss it as invalid.

In none of your threads did I see trolling. In none of them did I see you yourself being criticized (though I might've missed it). I only see your projects being criticized, and not impolitely at that. Instead of us dancing around theoretical threads and imaginary posters, could you link to an actual thread where the poster is actually seriously being rude (and not just failing to be polite, but actually behaving in an impolite and destructive manner)?

Both the other post, and this post, seem like threads intending to get the OPs "Feel good" responses. This is not a "Feel good" forum, this is a "Discussion" forum. This is a polite forum, a helpful forum, and a forum for learning. The best way to learn is to do, to discuss, and to learn from others' doings.

[color=#008080]Sometimes people get so attached to their work (which is fine), that they take criticism of their project as criticism of themselves (not fine). Could you ask yourself if maybe, just possibly, a little of that might be going on in your heart? It's fine to love our projects and be attached to them, but tying up our self-worth in our work is very damaging to us - and something that alot of people have problems with to some degree or another.

If you are actually willing to see if this might be true (and not just dismiss it as irrelevant or 'missing the point'), how do you plan to test yourself to get a realistic measurement?

Often, people think they are helping, but they don't realize that they've stopped giving the requested advice, and instead engage in tiring arguments about why they don't agree with the original poster. Nothing gets done, and both parties walk away with wasted time on their hands.


There's a reason I don't ask questions here anymore. It is less a slight against these forums (though these are worse than others in this regard), but that after a point my questions are very specific. There's just not a lot of people who can answer them well, and those people don't have the time to sort through garbage to answer well. So the people who do answer just bikeshed the hell out of the thing.


People blast me for not using standard library routines, which don't always exist, and frequently tell me to drop the project and use someone else's library, which will not work for my purposes.


You have to admit that NIH is far, faaar more common than the actual scenario where there's not existing code that will save you tons of time and effort in making your project from scratch.


I shouldn't have to justify to anyone that comes to offer help why I am doing the task in the first place.
[/quote]

But you do.

Like you say, it's up to you if you want to spend the time doing something because it is fun. But very many of us used this argument in the past to justify NIH syndrome only to find that we ended up making a horrible subset of what already existed and never got anything done.

If your goal is to have fun making some library, then you can do that fine without our help. If your goal is to make a library that works well, 98% of the time, the best way to achieve that goal is to adapt something that already exists.

Spelling out why existing solutions won't work, or what requirement is being solved for helps us understand what constraints we need to work in. Even if that requirement is "I want to write it myself because it's more fun." that's okay, but you do need to justify that you're not just another programmer who stubbornly believes that you need to do everything yourself if you don't want people to react like you might be.
Advertisement
Helping people with the high level approach, rather than just the low level problems, is actually one of the most positive features of full discussion fora. Of course, it can be taken too far - to the point where people aren't actually getting help solving their problems.

Criticism is a good thing - you might also know it by a more positive name "peer review".

In your case, phantom is entirely correct - if you have constraints then state them up front. If you are not interested in just loading images, but instead in implementing the image loading, say it in the original post. If you are rewriting the standard library for some reason, and don't want to be pointed at a drop-in replacement, say it in the original post. It will save everyone time by ruling out certain options immediately.

The unfortunate downside to such an approach is that if your constraints are narrow much then few people can/will reply - you might have placed yourself in such a specific set of circumstances that there is no general solution, one would have to become intimately familiar with your setup in order to aid you.
I haven't found much non-constructive criticism here. Although I have found many very-beginner helping a totally-beginner posts about topics that are dangerous, like language/engine/etc threads. These are more of a problem in my opinion.
Maybe these very-beginner posts have the non-constructive criticism (I tend to skip these rolleyes.gif ), because (IMHO) the very-beginners often just echo the big sayings that go around here without actually knowing what the circumstances are or what they are talking about in the first place.
Aren't we already having this discussion in another thread? Just wondering.

Beginner in Game Development?  Read here. And read here.

 

I figured someone would try to bring up how many threads I actually have on GameDev; I haven't counted, and it might not be many. I made mention early on that I encounter this on other programming forums, too. I also use forums as a last resort, with bleak results. Some times, I do get help, which is what compels me to try again.

I also acknowleged that I may not be doing things the best way to do it, but I'm often doing it for a reason. I accept this advice, and apply it if really does change my mind.

However, I was prepared for people to go look through my threads for proof, since people are likely to believe that I'm just a crybaby, because it would require them lo think twice about themselves if they entertain the thought that there's something to what I'm saying. And I really don't want to call people out; that's not what I came here to do. But people are now looking for specific examples.


I just looked through your, "thread after thread" (read: 4 threads) - and everyone is very helpful, as far as I can see.
If you don't like your methods questioned, you need to realize that having hard questions asked about your work actually helps your project as it gives another set of mental eyes asking, "why" about the higher level architecture.


Sometimes people get so attached to their work (which is fine), that they take criticism of their project as criticism of themselves (not fine). Could you ask yourself if maybe, just possibly, a little of that might be going on in your heart? It's fine to love our projects and be attached to them, but tying up our self-worth in our work is very damaging to us - and something that alot of people have problems with to some degree or another.

If you are actually willing to see if this might be true (and not just dismiss it as irrelevant or 'missing the point'), how do you plan to test yourself to get a realistic measurement?


I acknowlege your message. It does sound a bit like you see me as just another one of those newbies that are looking to get people to pat their backs, and I'm not. I've been programming since 2000; I'm not looking for a feel good thread. I've not asked for people's approval, and I don't much care for what people think of the project. I've done this many times before, and I know what I'm hoping to get when I post.

Well, let's look at my last thread. I'm looking for a solution for my problem concerning parsing arbitrary grammar in an LR fashion. The first poster provided very good insight, and it might not have entirely provided a solution, but it furthered the conversation, and I can appreciate that. So, he asked what parser generator I used, and I mentioned that I'm using my own.

At that point, he shut down. He starts with a basic description of what I'm doing, which I'm not sure he understood what I'm doing. He asks me how is it useful, and basically makes it look like it does nothing at all, and thus I should dump the project. After trying to convince me of the futility of my efforts, he then restates his vague, one line advice. His post served no purpose; he just lit up my ideas, and then restated the same advice that I asked him to clarify. It isn't me taking personal offense; I already stated that the ability to dynamically read grammar files, then parse input for any given compatible grammar is extremely important; why's he bothering to try to convince me to use a solution that compiles a single grammar into basically a series of native functions, which can't be altered at any time? This will not accomplish my goal; I don't think he even understands my goal. It seems he saw that I was writing it myself, didn't consider why, and just went off. It is paramount that it be dynamic, and accept any grammar at runtime. This cannot change. Trying to get me to change it is non-constructive; I didn't ask for advice on rewriting the whole engine.

Then he left. I did eventually get some help, even if it wasn't a solution, and I am immensely grateful for that. It is reassuring to know that the answer isn't easily found, rather than believing it might be, and I'm just not seeing it.

I understand that sometimes I need to be more specific. I often don't realize how much more specific I need to be; I was quite surprised when I was asking how to compute a base 2 logarithm, and I got a response using the standard library log() function. I then realized that I should specify that I didn't have a log function at all, and that people assumed that I did, making it a beginner question. A learning experience, for sure. I'm more concerned with where people ask for more information, then go off on it and stop helping altogether. If people require me to tell them my life story to get help, it probably isn't worth it; my last thread before this, even if I had explained my whole engine and why I need it, would he have had more to offer? I doubt it. I probably would have been met with more harsh criticism. I politely sidestepped the flame, and continued with the topic; I'm familiar with these encounters.

I guess I can't convince a lot of people here that a problem does exist, and many people believe this is just the state of the world, and I'm being a baby. They're entitled to that opinion; I won't try to convince them that their idea is dumb, and that they should give up.

This topic is closed to new replies.

Advertisement