Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
What have you tried (whathaveyoutried.com)
95 points by kamaal on Sept 9, 2012 | hide | past | favorite | 41 comments


I've had several interchanges that have led me to limit the amount of time I spend trying to help someone.

I answered a question on a forum with a series of other questions ... some were the "what have you tried" variety and some were not. After three or four iterations of "defining" questions and answers, the person I was helping said in exasperation "can't you just give me the code now"? To which I responded, "I don't have the code you need ... but I can help you understand how to write it".

The person's response is indicative of a certain type of person that I no longer try to help. He said "thanks for wasting so much of my time". How is educating someone a waste of their time? I guess it might have been more a waste of my time (especially given our relative level of expertise and pay grades).

So now I rarely give out code and often tell people up front that I won't. If they want to learn, I'm happy to help them learn and I am constantly amazed at the additional insights I gain during these interchanges. If they don't want to learn, then I just stop the correspondence right away.

One interesting side-effect is that I've come to enjoy the few in-person interactions like this much more. Two people and a whiteboard can do a lot of damage to a problem and at the same time, build bridges between those people. Conquering a problem together almost becomes like playing on a team together or fighting in a war (yes ... with far less risk).


Let's say that learning how to use an API for a specific purpose takes 8 hours of reading badly written docs and experimentation. Let's also say that you did an initial search and found no immediately usable solutions. It would take hours of sifting through garbage to fish something working out of the Internet.

You know the API is popular and you know for sure that someone already did exactly what you want to do. You do not intend to use the API in the future.

Posting a request for the solution on some forum or mailing list takes two minutes. Posting the response also takes couple of minutes, because the knowledgeable responder has the exact solution and doesn't need to search anything. Moreover, once the response is posted, it will become publicly visible and searchable by other people who are solving a similar problem.

Should you post the request for the solution? If your answer is "no", you should not work in engineering.

And if you spend hours of your personal time to scout message boards only to post a bunch crap that boils down to "use the search, ha-ha", the Internet will be a better place without you.

Nobody owes you anything just because you think of yourself as some kind of guru. Not even people who ask questions or request easily digestible solutions. This is not academia. You're not a professor, who can ask his students to demonstrate "effort".

You don't want to answer basic question? Don't answer them. Ignore them. It's easy. It takes much less time than whining about this imaginary problem.


Let's also say that you did an initial search and found no immediately usable solutions. It would take hours of sifting through garbage to fish something working out of the Internet.

You know the API is popular and you know for sure that someone already did exactly what you want to do.

These premises are unlikely to be simultaneously true. If the API is popular, your question has probably been asked and answered many times. If you really are doing something unusual, you should at least be able to find a reference to something similar, and when you ask your question you can point to it and explain what you need to do differently.


I remember having this exact issue when trying to do something fairly basic with selenium (I was trying to pick it up, so it was something akin to "hello world"). Sadly, it was too long ago for me to remember exactly what my problem was, but when my coworker who does regularly uses selenium got back the next day he helped me fix my problem in about 5 minutes.


People probably keep asking "give me the code for x" because they know that someone out there will give them the answer. If they knew that the only reply they could expect to get to that query was a link to http://whathaveyoutried.com (or a curt "RTFM"), they'd be forced to develop their own skills.

By giving them the answers without pushing them to work harder at answering their own questions, we're actually hurting them, not helping them.

But this is a very old observation that long predates programming or the internet. The old Chinese proverb is: "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime."


Doesn't this go contrary to one of the greatest "benefits" of software - that it is reusable?

But you are arguing that if someone says, "Just give me the code, I don't care how it works, I have a test and if it passes then I am happy" that this is a bad thing.

What is wrong with that?

"Give a man a fish you feed him for a day, Teach a man to fish and you feed him for a lifetime, but you reduce the efficiency of society since the fixed cost of catching and feeding yourself one fish far exceeds the marginal cost of a fisherman catching one more fish." - American Proverb.


In the case presented, the code is, in fact, already written: it's in Cocoa. So all the person needs to learn is how to call that code, which will be generally be different for each application. The reusable bit is already written; they're asking for the specific bit, and they should learn to write that.

A library only abstracts the solution the problem; you still have to understand what you want to do to solve the problem at some level, so as to integrate the library into your solution. When someone just asks for code, it is clear that they are not interested in putting in the work to solve the problem; they are interested in getting paid (or getting a good grade, or whatever).

I think that one of the reasons that this rubs us the wrong way is because hackerdom, by definition, loves the process of solving the problem, with getting paid being a pleasant side-effect. The person who asks "can I just have the code" is, in many ways, antithetical to the idea of a "hacker".


The problem with your philosophy in the age of the internet is that the question and answer stays up for others to use a search engine to find for themselves. In the style of the Chinese proverb, "Give a man a fish on the internet, and you will be giving a million men a fish"

By requiring everyone to deeply understand every conceivable task they might need to do, you are limiting the amount of tasks a person can do in a certain amount of time.


Instructions on how to use NSURLConnection are already on the internet in the Cocoa docs, Cocoa tutorials and Cocoa sample code. Anyone who has the desire to look for them can already find them. So in this case, "teaching him to fish" would be to encourage him to look up the already existing information on his own and spend the time to actually understand what it means. Learning how to do this will make him a better programmer and save him countless hours of time in the future.

Someone doesn't usually need to "deeply understand" an API in order to use it. But if they can't even create the simplest working code that uses the API, then they don't understand it at all. And if someone's just going to throw around someone else's code without even understanding how it works, they probably aren't writing code that's very useful anyway.


What if someone is rapid prototyping? Maybe they just need to perform some one-off task. Maybe they're an entrepreneur and have other things to do then learn an api when then just need to do one simple thing.

The guy probably doesn't speak English very well, and maybe resources and documentation in his native language is lacking, so he doesn't know where to look. Besides, him asking the question and getting an answer can help many more people who need to do the same thing.


I think at least part of this phenomenon can be attributed to what I call the StackOverflow effect, that being point-based incentives. People on SO answer questions much of the time because they believe their answer will earn them karma (or whatever it's called on SO). In fact, I'd be lying if I said Hacker News karma didn't have at least a little influence on my decision to actually take the time to write this comment.

Because of the StackOverflow Effect, people will choose to answer even the worst questions as if they're fair play, simply because they have an answer they believe will earn them a couple points. If points were not involved, I'm willing to bet a lot more people would get told off for their poor quality questions, and a lot less people would continue to post them.


I'm not even sure the gamification or point/karma scoring of the question and answer space is responsible. The same behavior was evident in comp.lang.perl.misc back in the late 90s. People would ask "bad questions", and people with barely more experience/knowledge than the questioner would happily provide answers/solutions. I'm guessing this is at least partly showing off "Hey look! I worked out how to do that last week!" And often they'd provide lousy or even dangerous advice, and the "old hands" would be left to try and explain why (for example) copy n pasting from Matt's Script Archive was such a bad idea.

There's probably an endless supply of new-but-inexperienced coders who're happy to show off their new-found skills by offering advice to the even less experienced. I'm less sure there's an endless supply of "old hands" to keep an eye on them.

And I've seen this in areas other than programming too. It's _really_ common for motorcyclists with a year or two of riding experience to be offering all sort of advice to newer riders - advice which riders with 10 or more years of experience will sometimes just roll their eyes at, and sometimes will step in and say "that's not just wrong, but dangerous enough to get you killed if you're not careful".

(and yeah, I've been on both the "barely experience" and "decades of war stories" side of the advice giving in both coding and motorcycling…)


And I've seen this in areas other than programming too. It's _really_ common for motorcyclists with a year or two of riding experience to be offering all sort of advice to newer riders - advice which riders with 10 or more years of experience will sometimes just roll their eyes at, and sometimes will step in and say "that's not just wrong, but dangerous enough to get you killed if you're not careful".

Tell me more, I'm curious about this :)


kinda true, but on the other hand there are enough people on SO that will comment on the question instead of answering it, and the comment will be "what have you tried?" Sometimes I even see comments that really try to puch the OP to start thinking. Although I'm really in doubt if that helps, you cannot expect to change someones mindset with some comments.


I agree with most of this well-written post. However, I think this deserves consideration: some percentage of those posters are not, will not, and do not want to be developers. They may be the accountant who is the designated "IT guy" in the office because he is able to unjam the printer or the office assistant/intern who is being given the "do this miscellaneous stuff we don't understand" task and has no idea where to even begin.

It may be hard to believe in this day and age, but there are still companies out there that have no idea that they even need real technical help (and might not be able to pay for it if they did.) Some of you who have done freelance custom software development work for small/long-lived businesses trying to come into the modern world may have seen this phenomenon (I've seen it plenty of times when I freelanced regularly.) The examples used in the post may not fit this, but plenty of SO questions I've read could fit this pattern.

If we /were/ able to be truly frank about it, we would perhaps suggest that they talk to their boss about hiring a professional developer (or Sysadmin, in the case of Server Fault) to do the job that they've been unwillingly thrown into. (edit: There's perhaps a great opportunity to connect small businesses with freelance developers/custom dev shops buried in here somewhere.)


On StackOverflow I quite often answer questions by explaining what they should read/who they should read up on, and the names of the technologies: A simple answer might be on the lines of:

"What you are looking for is AJAX. You'll need to store your information in a database – as you mentioned PHP, you most likely will use MySQL. The javascript library jQuery has a really nice way to use AJAX, so I'd start by reading up on …, …, … and …. ."

Rather than:

"Here is the code in 3 files that i've just written without testing anything."


This is a waste of your time for certain questions, though. The ones ending in "urgent please help" just scream that the poster is going to wait 15 minutes, briefly scan the answer sections for code snippets, and move on.


If it's a public, indexed forum, I'd say answering is not a waste of time. Someone can use a search engine and find good answers years after the original question was posted.


That's exactly it – SO has become a list of everyones problems ever, with solutions. I frequently find answers to things I need to know on SO, sometimes years after the person asked.


That is what "Close as too localized" option is for.


My problem is often in the other extreme. I tell myself "I don't want to bother so and so, I still haven't tried x." But there's a point at which you should ask for help if you're no longer making progress. Especially if your question is expected to have a relatively quick answer ("take a look at y and do z") that you just don't happen to know yet.


This phenomenon has always existed, and is more famously known as the 'PLZ SEND TEH CODEZ' phenomenon. What happens is that rookie coders get in way over their heads and are unlikely to finish their tasks regardless of the amount of support received. In a desperate last attempt, they turn to the internet looking for a saviour who will hand them a complete solution.

IMO, the best thing you can do in this situation is to inform them that they won't get their homework done for them, and what type of questions are considered reasonable.


One time my friend trolled another friend of mine by pretending to be one of these "PLZ SEND TEH CODEZ NOWWW" people. It was quite amusing. The "victim" did a write-up here http://buffered.io/posts/go-with-your-instinct


that is hilarious


My wife and I were just talking about this today but in a different context. She is a recent PhD grad and the new PhD students entering her research group email her quite often asking things like "I am TAing course X and I heard you did as well, what should I be doing?" They ask one sentence questions and expect some rich essay of an answer that is going to solve all of their problems. Just lazy if you ask me. So this pattern seems to extend beyond just software (as pointed out in the original post).


Just a little while ago a family member who has signed up for a Coursera statistics course was asking if I could help "Download an R program". It took me a minute to figure out she really did mean the programming language, she didn't tell me straight off it was a statistics course, and she's about the last person I would have expected to take a course that involved programming of any sort. But the class does say it's "quite literally for everyone", so good on her.

When I asked if they have instructions on how to do that in the course material, she told me there's a thing that says "click here to download" but she hadn't tried it yet. She literally hadn't even tried clicking the thing that said it did exactly what she was asking me to help her do. Not "I tried it and I got an error" or even "I tried it and it didn't work", or better yet, "I downloaded something and don't know what do with it" no, not even tried.

I'm now dying of curiosity to find out what happens the first time she has to actually write code vs. just typing stuff in she's been handed. I might have to send her this article, we'll see! I've never done any R programming, though it now seems inevitable that I will be doing some in the near future.


I'm not sure about your family member, but folks who don't use their computers often may be more hesitant to randomly click a "Download" in case they accidentally download a virus or do irreparable damage to the computer. It's annoying, but totally understandable.


I am tempted to make the mistake of asking for the solution almost daily. I am guilty of asking for the solution every few days. Thank you for writing this. I will use these two metrics as way to measure my growth as a programmer.


I think one reason this is happening more and more is that programming is becoming easier. Anyone with a basic understanding can download sample code from an iOS tutorial, modify it slightly with code they are given on a forum, and start selling an app. Often when you see people asking for 'sample code' and you ask them a basic question about their project they can't answer because they don't understand. Their project is just a patchwork of code from around the web.


This isn't just a phenomenon in software development. Maybe it was just me, but I distinctly remember classmates getting mad at me back in school when I tried to help them with their work without just giving them mine to copy.

There are people who understand that working at a problem develops skills that make you a more capable, valuable person, and there are those who haven't yet made that connection and seek to avoid work whenever possible. Giving the latter kind of person easy answers strengthens that mental pattern, and can lead to a sense of entitlement.

You can find this behavior everywhere, from school and work ("gimme the answers!") to consumerism ("I'd rather pay $400 to have someone come replace my door/toilet/network router than learn how to do it myself") to trivial troubleshooting ("Oh no, all the text in my web browser is big! Welp, better call tech-savvy friend" or "Oh no, my AC filter needs replacing! Welp, better get handyman friend to do it").

It's everywhere, it's endemic to human nature, it puts an moratorium on personal development, and I'm sick of it.


The problem with people hunting for working solutions and not knowledge is that, if you're the kind person who provides said solution, you may be inadvertently thrown into a situation where the poster loses all form of initiative and depends on you to get things done.

You might post a code sample, and they will then return to you asking why it "doesn't work." There will be no attempt to debug it, and you realise you might just have left a syntax error in there by mistake. You fix it, and still it "doesn't work." Your frustration increases with each complaint, and the urge to tell them to figure it the fuck out if they've half a brain becomes more irresistible.

It's almost parasitic, even if well intentioned or in good faith, and it's such a drain when you're giving the help that you'll stop answering questions where the poster evidently never tried, or didn't want to.


This is the exact reason why I gave up on trying to help a particular co-worker of mine. When he still couldn't seem to write the syntax for a basic dictionary in Python after over a year of working in the language, I realized every attempt to help him was a complete waste of my time. He wasn't even trying to learn.


Don't have anything substantive to contribute but this is risible:

http://blog.atnnn.com/p/cheating/


4 hours in, and not a mention of ESR's "Smart Questions." Here it is: http://www.catb.org/esr/faqs/smart-questions.html

It's a wonderful document and covers quite a bit, going far beyond just how to ask smart questions.


Over decades I've developed a stock reply to those who don't know how to ask technical questions:

1. What happened?

2. What did you expect instead?

3. How does (2) differ from (1)?

I can't tell you how many times the above simple procedure turned out to be entirely beyond the coping ability of a young programmer expecting a quick solution.


Does anyone ales feel as though the majority of questions like the example in the article are asked by children? I almost always assume it is a young child asking a question like that and one who is still in the process of "learning how to learn".


It used to be like that for me, until I met someone in real life who's a few years older than me (late twenties) and who is a self-proclaimed programmer and who acts like that.


Its a valid problem-solving approach. The aspiring programmer might be in a bit of trouble if thats his/her only approach, but aside from that its fine.

Also, I dare say most people start by hacking together random bits of code they found on the internet.


What's the motivation behind buying the whathaveyoutried.com domain name just to point to a single blog post? Does anyone know why Gemmell did that?


Makes a handy shortcut if you want to link lots of people to it.


He may have been inspired by http://justfuckinggoogleit.com.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: