Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
First I am staggered by the range and strength of opinion my post as aroused. This is my 4th attempt at answering my own question. My previous attempts were abandoned because they had either become rants against a particular response, or an inconclusive ramble, or both. This time I will attempt to structure my response in some fashion.

What prompted the post

Over the past few weeks I had seen several posts and CB chats revolving around "homework", including one where the AM questioner, was adjudged, probably through the standard of his English (a non-native, English speaker) to be a "kid" asking for help with his "homework". Amongst some of these was the allusion to "cheating". And finally, a response to a situation similar to that I posed as Scenario 2 in the Bootstrapping techies thread. I had also seen various responses to the "Use no modules" constraint, even to the extent of "Why don't you want to use modules?". Please note: If you recognise yourselves in any of this - I am not saying you are wrong. The thing that came out of this was that at various times I found myself on both sides of the same argument, and I tried to resolve why. I think I have done so. It all comes down to one word. Assumptions. We all make them, and sometimes we have to. Sometimes we shouldn't.

My take on the responses

Long boring, possibly controvercial waffle.
  • Comparing apples and orangutans.

    Where did you see the word compare? All I asked was "Did you...".

  • Why are they not working together

    It's the weekend

  • ...right up to the point he started cutting out the comments...

    Adjusts a few comments. Removes some bits [of code] that are redundant...

    Adds a line to the Change/When/Who/Why block. Removes some hooks into its original system.

  • Did Programmer B comply with the licensing terms of the source code he downloaded?

    Of course he did. Why would you think otherwise?

  • Was the source code of equal quality to the code written by Programmer A?

    Was the code meant to just get a job done, or was its purpose to improve the programmer's skills as well?

    ...required for a demo....

    Any boss sets me a tight scheduled task to do over the weekend as a "training exercise" or as a test of my commitment will get nothing except my resignation. You want me trained, send me on a course or allot me time (at your expense not my family's) in which to do that.

    If you want a test of my commitment - wait until the chips are down and see if I'm still there at midnight when I need to be. Better still, be there with me at midnight even if the only thing you can do is fetch the coffee. But if this happens every time a checkpoint or a schedule date looms large, get your act together and learn how to manage a project.

  • The As will have learned more than the Bs.

    Depends entirely upon

    • How much they knew to start with. Maybe B knew (roughly) where the code was to solve the problem Friday afternoon.
    • As Jerry Pournelle has been fond of saying down the years, "If you don't know what you are doing, know a man who does"!

      And as any university teacher will tell you. The greatest asset to the student is the library. Knowing how to find what you need is the most valuable lesson you can learn.

      As a series of adverts here in the UK would have it. "Work smarter, not harder!".

  • ...people who think that cheating is OK...

    Cheating: To act dishonestly; practice fraud.

    The task for the programmers was to "construct a program to do X". What is dishonest about solving the problem? Who was defrauded?

    The children's task was to either learn something new, or practice something they (should) have already learned. Maybe A had to work hard because s/he hadn't worked as hard as B during lesson time...Maybe B is an enthusiast and had seen, read and understood the code he downloaded a few days/ weeks earlier whilst looking for something for his own pet project.

    In any case, for B to be able to recognise that the downloaded code was close to fitting the requirements, and understood enough to edit it to fit, he must have come close to knowing enough to write it himself anyway.

    If he didn't know enough and simply lucked out in finding the right material to satisfy the assignment requirements, who was he cheating?

    The teacher? Obviously not. The other kid? Do we send our kids to school to compete with other kids for highest marks and honours? Or to learn?

    Or is the real purpose of school to teach kids how to learn? How to use the resources available to them in order to acheive a specific goal? If a child uses a dictionary or an encyclopeadia to complete their english comprehension assignment, is that wrong? If the child types the homework on a computer and the encyclopedia they use is Encarta and the dictionary, is this, did they cheat? What consitutes "own work"? Does re-typing snippets of code from different examples in the book and stringing them together count as "own work" or plagersim?

    If B didn't understand the code he downloaded, the only person he cheated was himself. As he will find out when the end of term exams roll around and he can no longer rely on internet for his answers.

    In the big scheme of things, this would probably be one of the best lessons he could learn at school. Many don't discover this till much later in life.

    As an aside, I think most people would view the springing of a last minute task on the programmers, to be completed over the weekend as unfair. Long held plans and promises could be compromised. Maybe a child's birthday.........

    I think that it is equally unfair of a teacher to set kids a task that requires them to work over a single weekend without regard to what the child has planned, whether its a long planned family event, or a movie with a girl /boyfriend.

  • ...but we know enough to make an informed guess....

    Do we? Based upon what assumptions?

    dws put this one to bed.

  • ...it depends...

    Agreed. There is (deliberately) not enough information upon which to make a judgment. And why are we trying to judge anyway?

  • ...careless/sloppy attitude...

    Again dws and clintp addressed this better than i could.

    I've been programmer A and paid the price.

    I've been programmer B, and enjoyed the fruits. "Work smarter, not harder".

  • The children's goal was to learn.

    And learning the lesson that a little research properly applied can save hours of slog is not a good lesson to learn?

  • Assuming Programmer A and Programmer B....

    Why assume?

  • When using existing code you have to take into account licensing, quality, and maintenance considerations.

    The program was for a demo. Most demo code is thrown away.

    See lower down for the real-life situation I drew on for the example.

  • ...it seems prudent to assume...

    To what end? Making your judgments easier?

  • ... I struggled with the point of view aspect of the stories ...

    The exact same conflict (in me) that instigated the thread.

  • This is a pretty unlikely situation. One day of coding from scratch, and then give a demo?

    Scenario 2 was drawn (loosely) from a real situation. The demo was to a bunch of politicians for a half finished project that had slipped badly and had been brought up in the national parliament. The politicians were dispatched (on a weeks notice) to "investigate" the problem. Upper management had sat on the information for 3 days before passing it down. The head of the project asked at 4pm Friday, if there was anyway that we (20 programmers) could "fill-in" one of the unfinished, conspicuously visible bits of our part of the project that would simplify and clarify the demonstration of that part. It wasn't a demand, just a request "if possible". I was programmer A in this situation and worked my weekend trying and finally achieving a solution. Programmer B was one of those quiet guys that didn't say much, but always seemed to do stuff quicker than the rest of us. The code he downloaded was actually his own code from a previous project available on the web site of the previous employers "customer download" area because it had been written by him for one of their customers. It was only a "close match" and was possibly breaking licensing agreements, but it did function better than my solution in several ways and so was used for the demo. After that, he and I applied our combined knowledge to turning my code into the production solution.

    (* Additional info: The error was most definitely that we (the group) did not take the time to discuss who would try what before leaving. We also did not get together on the Monday morning either. Stupid possibly, Without going into (even more) details its hard to justify, but it was not as bad as it seems from this description *)

    My conclusions...

    We all have a tendency to make assumptions and draw conclusions that are way outside of our frames of reference. I am as, if not more guilty of this than the next man.

    So, the next time you see a "use no modules" constraint on the answer to a question, don't blindly assume that it's because the questioner doesn't understand the benefits of modules. It could be a constraint applied to them by external forces. It could be that they (like me) prefer to understand why they should use CGI.pm (or alternatives) before following the advice.

    I mean, what is so difficult about parsing a few parameters from an environment variable and/or stdin and then throwing a few lines of print to standard out anyway.? That's a rhetorical question. I now understand. And I would/ will use CGI or one of the alternatives for any real project, but it was valuable (to me) to try it without first.

    The other day, I saw a questioner ask: "How do I redirect a GET to another page?". "Use CGI.pm" was the standard reply. I'm sorry if I speak heresy, but using CGI in place of

    print "location: http://some.other.dom/page.htm\n\n"; is overkill!

    While I am at it, I might as throw in one other request on behalf of all newbies and/or non-native English speakers/ readers.

    Please don't be so quick with the RTFM's!

    As stated here, there are 72,000 lines in the user documentation of Perl. The user asking may have only read a little of it. S/he may have read a lot of it. They certainly won't have retained it all, or remember where they read what they half remember. Even if they do locate the exact place in the documentation to solve their problem, they (I) often do not understand what we read. Much of the example code is written in terms of Perl. The very thing they are trying to learn. Other parts are written in terms of unix system calls which they may have little or no experience of. Trying to resolve the questions raised in the section that holds the solution, takes them to another section with its own questions, and that to another and so on....it is very easy to loose track of what one started out looking for.

    So please, if you are sick of answering a particular question, don't just throw a RTFM at the questioner. Move on. With luck, a near-newbie who has just made sense of it will happen along and be only to pleased to show off his/her new knowledge by helping the newer newbie. Let them!

    I've seen Perldoc touted as "one of the assets" of Perl. It may well be. A good reference manual is a great bonus for the experienced.....The absence of a good User Guide is a great hindrance. Newbies aren't sure if what they are doing is wrong, or if their installation is broke, or if they discovered a bug. Unlikely it seems you say, but when the newbie tries something and it doesn't work the way they interpret the documentation, it sure seems like they found a bug to them. Now double the troubles for the non-native Englisg-speaking, non-*nix grounded newbie......and then double it again.

Thank you for reading me.


In reply to Re: Initiative or otherwise? by BrowserUk
in thread Initiative or otherwise? by BrowserUk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (5)
As of 2024-04-19 13:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found