Friday, 24 April 2015

Unknown Unknowns

I was talking about my experience on Stack Overflow with a few other developers from work, and they all seemed to agree that developers are douchebags (though nobody specified that present company was not included, so I assume they all think I'm a douchebag - and I guess I did make that horrible homophobic-sounding joke at lunch, but I asked later, and he said he thought it was funny).

One of the things I see a lot on SO, is when someone who is obviously new to programming asks a question, and it seems like a fairly innocent question. Sidenote: You do get those questions that are from people who are obviously just saying, "I have homework due tomorrow, please do it for me" - these people are termed help vampires by the community. They are people who post questions that show little to no effort on their part of trying to solve the problem themselves, or even the effort required to format the question to make it easy for someone else to read. They suck time out of the community, as knowledgeable people waste their time clicking on those posts, sometimes trying to fix them, or other times, finding another question that already exists which answers that exact problem.

But for the innocent questions, it's often someone asking something that's second-nature to a novice programmer, and quite a few times, I've seen some fairly abrasive responses. Quite a few times, I've seen someone instantly jump to the conclusion that the person is a help vampire. I can understand valued community members being frustrated by help vampires, as I do find it disheartening when someone basically pastes all of their code, with a description saying nothing except, "It's broken, please fix."

Rewind back to my first year of uni. My only programming experience at that point was programming my Casio graphics calculator with functions to simplify calculations and crappy text based games. I was completely overwhelmed within the first couple of weeks of classes. It was the first time I had used a *nix system (I think we had gnome?), was my first time using vi, and I just felt like I was completely out of my element. I hear a lot of people say that they don't understand how people can struggle to learn programming, as there are tutors, and lecturers, and other students, as well as the computer science help desk. But I understand.

When you don't know what you're trying to ask for, how do you know how to ask for it? It's like when you're trying to remember the name of a movie, and you can see glimpses of it in your mind. You try describing it to another person, in case they can help, and you end up with stupid sounding things like, "It has a man and a woman." and "There's a computer." You feel like you can see the movie right at the edge of your brain, but you just can't seem to articulate it. Two weeks later, it jumps out at you, it was You've Got Mail, but at the time, you found it really hard to describe something, even though you kinda knew what it was.

I feel like that's how my first few years of programming went - and even now, I have that feeling every now and again, when I know what I'm trying to do, but I struggle to put it into words to be able to form a proper Google search. It's especially frustrating when it's something you're new at, and so your knowledge is only a tiny fraction of the possibilities out there. So you might stumble upon a really elegant solution, but because you don't understand 90% of the text that accompanies it, you don't realise. So you keep searching, and refining your search, and then grow frustrated.

I can't remember what the question was, but there was a question that had a lot of comments over whether to close or not. The asker was asking how to do something, and the answer was, "duh, there's this incredibly common thing, just use that". Half of the comments were arguing that the question is valid, and that many beginner programmers might not have heard of this particular term, and so they wouldn't know what to type in the search box. Others were arguing that if the asker didn't know this incredibly basic thing, then they obviously haven't put much effort into learning. To give some context, it'd be like someone asking if there's a book on putting raw ingredients in a metal container, then heating that container up until the raw ingredients heated up enough to become soft enough to combine and make something suitable for putting on some form of carbohydrate. And you'd say, "Yeah, it's called a cook book."

I believe that anybody can learn to code. I try not to pre-judge people as a help vampire, as I feel like that will drive them away, and they will give up on their learning journey. But I do agree that there needs to be some form of effort on their part. I am giving up my precious spare time, and I'm not going to do it so that you can hand in your homework and not fail your class despite having put in no effort. Imaginary internet points isn't enough motivation for me - well, now that I have enough reputation to be able to comment everywhere, which is the bare minimum that I try to achieve on all of my Stack Exchange accounts. As another sidenote: You need to reach a certain threshold of reputation before being able to downvote (125), and unlike Reddit where you can downvote as many things as you like, downvoting things costs your reputation. So I like to think it makes people a lot more wary about downvoting. Unless you are Jon Skeet and you have SO reputation rolling in like marbles.

No comments: