Over the past few months, I’ve become acutely aware of the species of programmer that drives the P. Newbieflamerous to attack. I’ve dubbed them P. Nogoogleus. This species appears on various programmer communities and tries to get more experienced programmers to write their code FOR them.
As fellow tech blogger Matt Gemmell wrote, “There’s an entire class of so-called developers whose first and final tactic when given a problem to solve is to simply ask for the completed solution elsewhere, commonly on web forums or other suitable help channels.”
And, ohhhhh BOY are there a lot of them.
Now, before I come across as having joined the ranks of P. Newbieflamerous, I should mention that I believe these individuals can be approached with respect. I am a recovering P. Nogoogleus myself, and all of the flaming in the world did nothing to change my mind about it. I only really started understanding the legwork I needed to put into my research after a programmer on one community politely filled me in on proper protocol. Granted, not all P. Nogoogleus are that easy to domesticate…
To be honest, this topic rather reminds me of the college essay trade – the shadowy individual who charges other students to write their papers for them (which is cheating, by the way), especially considering some of these programmers end up passing the finished collage of code from other sources as their own original work.
Read the Documentation (often abbreviated as RTD or RT#D…yes, I totally censored that) is a common cry from battle-weary programmers who find themselves drowning in obvious questions like “How do I comment out my code in C++”. Yes, there are perfectly legitimate beginners questions, but there’s a fine line between THOSE, and the bright blazingly obvious questions that could be answered by looking in the documentation.
Of course, the issue is further confused by the fact that some documentation is perfectly worthless. (Word of advice to all my fellow programmers writing software documentation – PLEASE STATE THE OBVIOUS.) All the same, there are quite a few brownie points to the beginning programmer who at least attempted to make sense of the documentation. I found that I would get much more positive responses on my newbie questions years ago by actually quoting the documentation directly, and then specifying my confusion regarding it.
There are, as I’ve mentioned in previous posts, totally illegitimate uses of “RTD” in responding to questions (looking at you P. Newbieflamerous…), such as when an answer is buried so deep in said documentation that Harrison Ford had problems unearthing it. The Python documentation is rather infamous for its vagueness, in my opinion, as it was written for the expert. Excuse me, isn’t the entire point of documentation to help newbies BECOME experts? Their documentation very nearly lent itself to my never programming again. When I was 14, I tried learning Python from the tutorial in the documentation, and was so confused after Chapter 1 that I gave up. It was several years before I approached (albeit with great trepidation) another programming language, Visual Basic. I learned that with the book “Learn Visual Basic 2010 in 24 Hours”. I highly recommend the book, though NOT the language, which effectively nullifies the recommendation for the book. (Would that be considered an infinite loop, then?)
I did come back to Python many years later, and it remains my #3 favorite language, but even during my SECOND attempt of learning it, I spent a good part of my day lurking in the Python IRC, asking dumb questions and annoying everyone out of their minds. (Apologies to all the Pythoners that put up with me that summer.)
Despite that unpleasant experience with documentation, I still recommend all programmers to RTD before asking a question. Period. End of story. No, you’re not going to find the exact code you want, more than likely. Programming is a creative process, meaning you actually have to contribute some of your OWN brainpower. However, there is a high probability that you will find some function or method in the programming language that is a piece of the puzzle for you. In the very least, you’ll find two or three ways that WON’T work.
While we’re on that subject, we forum-lurking programmers actually are very interested in what doesn’t work for you. Programming is incredibly subjective…there are about a hundred ways to go about solving any given problem, and some work better than others. When you ask how to accomplish something and we attempt to answer, we’re really taking a shot in the dark without knowing what you’ve already tried. We don’t know your project, even though there’s always one or two P. Takeitovericus that think they do. Nothing is more discouraging than us making a suggestion, and having you shoot it down because it doesn’t work. Trust me, we will almost never take a second shot at it.
However, if you’ve put in the effort to tell us about your project, your problem, and what you’ve tried, there are a LOT of programmers, myself included, who will go out of our way to help you. I actually wound up helping one programmer for an hour and a half on screen-share, not because he was experienced (he wasn’t), but because he put in the effort to explain the problem he was having. We want to see you, the asker, put the legwork in first, before we take time away from our own busy lives to help you. This may seem unreasonable to some, but it comes down to this: if you’re not going to put in the time to look for answers yourself before coming to us, and we give you the code you seek, there will be no end to your requests to us as a community, and sometimes, as an individual. We will, essentially, be doing your work for you.
There’s another reason for answering the question “what have you tried”…your question is not just for you! Whenever you post on Stack Overflow, Python.org, ActionScript.org, or any other online programming community, you are contributing to the massive reservoir of information online. Other programmers looking for answers will see your question, and I know from experience that one of the most annoying things in doing online research is in trying all the possible solutions, only to discover that none of them worked. By taking the time to write a detailed question, on the other hand, you are doing everyone a favor. Readers (whether they are answering or not) know what you’re trying to do, and several ways that DON’T solve the problem, saving them time.
Trust me, P. Nogoogleus is the natural prey of many vicious species of programmer. Avoid looking like one at all costs.