Should People Learn To Code? Yes – If They Are Judges Ruling On Cases Involving Software

from the you-can't-fool-me dept

Recently Techdirt wrote about the heated debate on the subject of whether people should learn to code. We pointed out that some knowledge of that subject could be particularly useful in helping people understand why copyrighting APIs or patenting software is just crazy -- whatever the abstract legal arguments, in practice both make programming much, much harder.

An obvious situation where such practical knowledge could be crucially important is in court cases dealing with software. Rather neatly, the long-running court case between Oracle and Google, where the former is accusing the latter's Android of infringing on its code in various ways, has thrown up a perfect example of this.

It arose in an exchange between Judge Alsup and Oracle's main lawyer, the high-profile David Boies, best known for representing the US Justice Department in the United States v. Microsoft case. Boies claimed that the fact that the jury had decided Google's "rangeCheck" code had copied Oracle's implementation of the same function was evidence that Google was trying to save time. The argument of Boies was that Google consciously copied those few lines from Oracle in order to accelerate development -- and thus to start making money faster through daily activations of phones running its Android operating system.

But Judge Alsup was having none of it:

I have done, and still do, a significant amount of programming in other languages. I've written blocks of code like rangeCheck a hundred times before. I could do it, you could do it. The idea that someone would copy that when they could do it themselves just as fast, it was an accident. There's no way you could say that was speeding them along to the marketplace. You're one of the best lawyers in America, how could you even make that kind of argument?
This is a perfect example of a judge being able to draw on his personal experience of coding to dismiss what a clever lawyer probably thought was a clever argument.

Contrast this with another judge, talking this time about software patents, as recently reported on Techdirt:

Judge Michel seemed unaware of the depth of the software industry's dissatisfaction with the patent system. He suggested the patent system's critics were relatively marginal figures not representative of the views of the broader technology industry. And he didn't seem to understand the dynamics of the patent arms race currently affecting the software industry.

"If software is less dependent on patents, fine then. Let software use patents less as they choose," Michel said. "If other industries are terribly dependent on patents, then let's not wreck the system just because software people are unhappy."
No one who has tried to code in any depth could dismiss the problems caused by software patents so glibly -- it would be hard, for example, to imagine Judge Alsup saying this.

Learning to code certainly isn't a panacea, nor is it relevant for everyone. But for those professionals who must make important decisions about software -- judges, for example -- a basic programming literacy is indispensable. As it is, the tech industry must count itself lucky that the Oracle vs. Google case seems to have ended up in front of one of the few judges qualified to decide it.

Follow me @glynmoody on Twitter or identi.ca, and on Google+



Reader Comments (rss)

(Flattened / Threaded)

  •  
    icon
    G Thompson (profile), May 21st, 2012 @ 3:36am

    If Judge >= Software

    andif Argument == Strawman

    then Lawyer == null;

     

    reply to this | link to this | view in chronology ]

  •  
    identicon
    Anonymous Coward, May 21st, 2012 @ 3:58am

    "Should People Learn To Code?"

    Yes! Very yes!

    But not just "how to code". Schools should have courses on basic computer science and kids should be taught from an early age how computers work, and how to unleash their power.

    The goal of schools is to prepare kids for the future. How can we do that if kids these days have no clue of what goes on inside a computer?

    In the past, we had the excuse that computers were a niche thing. Today, we have no excuse not to teach some basic computer science in schools.

     

    reply to this | link to this | view in chronology ]

  •  
    icon
    That One Guy (profile), May 21st, 2012 @ 4:25am

    Man I wish I could have seen the look on David Boies' face when he realized he was dealing with a tech savy judge, he must have looked like he'd just been beaned with a 2x4.

     

    reply to this | link to this | view in chronology ]

  •  
    icon
    Andrew (profile), May 21st, 2012 @ 4:57am

    I haven't seen the rangeCheck code, but, like Judge Alsup, I'm pretty confident I could write something similar in about 5 minutes -- just like the hypothecated high school student. That Oracle's counsel suggests he "probably couldn't program that in six months" makes me question his competence to take part in this trial.

    See also What color are your bits?, which I probably found via Techdirt (thanks!).

     

    reply to this | link to this | view in chronology ]

    •  
      identicon
      MattP, May 21st, 2012 @ 10:21am

      Re:

      I haven't seen the code either but I can be relatively sure that varibles named i, idx or index were used in a loop for an index.

      They probably ripped off Oracle too by naming variables min, minValue, minimumValue etc.

      How dare they take an incredibly simple routine with minimal logic and then convolute it with meaningful variable names.

      I bet if we dig deeper we'll find out that Google took the concept of loops and methods and being the scum sucking pirates that they are used them throughout their program!

       

      reply to this | link to this | view in chronology ]

    •  
      identicon
      Lawrence D'Oliveiro, May 21st, 2012 @ 5:40pm

      Re: I haven't seen the rangeCheck code...

      Found a posting of both copies here.

       

      reply to this | link to this | view in chronology ]

  •  
    identicon
    Anonymous Coward, May 21st, 2012 @ 5:13am

    Naivety

    > You're one of the best lawyers in America,
    > how could you even make that kind of argument?

    This judge must have seen thousands of lawyers argue equally stupid things, so I find it ingenuous that he should (presumably) feign surprise that Boies, when representing someone with practically no case, would grasp at straws.

     

    reply to this | link to this | view in chronology ]

  •  
    identicon
    Rich Kulawiec, May 21st, 2012 @ 5:18am

    There's a secondary reason for doing this

    It's a corollary to teaching people mathematics, science, natural languages, history, and other topics: it teaches them how to think. In the particular case of programming, it teaches them how to think rigorously,because sloppy thinking in this context simply doesn't work.

    Good programmers learn to be careful with their assumptions, skeptical of their success, and committed to testing -- among other things. These are useful attributes for anyone to have, but they're especially useful for people whose work involves complex decision-making.

     

    reply to this | link to this | view in chronology ]

    •  
      icon
      Leigh Beadon (profile), May 21st, 2012 @ 7:07am

      Re: There's a secondary reason for doing this

      Programming also teaches you what computers can easily do, and what is challenging for them - which is something a lot of people badly need.

      Nothing infuriates me more than when someone complains about a facial recognition tool being imperfect, then sits down to manually transpose some spreadsheet columns or rename a folder of files.

       

      reply to this | link to this | view in chronology ]

      •  
        icon
        Marcel de Jong (profile), May 21st, 2012 @ 7:30am

        Re: Re: There's a secondary reason for doing this

        As for the renaming a folder of files, sometimes I have very specific wishes for the filenames, and none of the tools I have at my disposal (and I have plenty) fits the bill exactly.

        I could create a bash script to do it, but by the time I've written that one, and concluded that it works the way I want it to, I'd been better off doing it by hand. :)

        But I agree, that would be something best done automated.

         

        reply to this | link to this | view in chronology ]

        •  
          icon
          Leigh Beadon (profile), May 21st, 2012 @ 7:54am

          Re: Re: Re: There's a secondary reason for doing this

          Well, just the fact that you can look at the task, consider how it would be automated versus how it would be done manually, and then make that determination, is precisely what I'm talking about :)

          For sure, there are times when the challenge of automating is greater than just doing it manually - of course, multiply the number of files a bit, or make it a daily task, and then that balance shifts.

           

          reply to this | link to this | view in chronology ]

          •  
            icon
            Marcel de Jong (profile), May 21st, 2012 @ 8:09am

            Re: Re: Re: Re: There's a secondary reason for doing this

            Absolutely. And indeed, making that informed decision and knowing what a computer does/is capable of doing would be a boon to know for judges and politicians (or their experts) worldwide.

            Sadly, more often than not, even when confronted with experts in the field, these politicians stick their fingers in their ears and shout: "LALALALALA, I DON'T WANNA LEARN!"

             

            reply to this | link to this | view in chronology ]

          •  
            icon
            John Fenderson (profile), May 21st, 2012 @ 9:04am

            Re: Re: Re: Re: There's a secondary reason for doing this

            Indeed so. My rule of thumb is automate when:

            1) the time to develop the automation is less than the time to do the task manually, or

            2) the task is subjectively unpleasant enough, or

            3) the task will need to be done again at least once more in the future

             

            reply to this | link to this | view in chronology ]

  •  
    icon
    Miratus (profile), May 21st, 2012 @ 5:21am

    Knowing how to code helps lawyers in many ways

    As an IP/IT lawyer I am happy I started my lifelong programming hobby with the C-64 and kept at it, even when law studies, other hobbies and work made time scarce. Why? Not only do my clients (programmers or their employers) breathe a sigh of relief when they understand I might actually understand what (and how) they developed their software, but it trains the same skills a good contract writer needs: formulating use cases, functional design, good definitions, refactoring, structure and commenting. Even test-driven development works pretty well on contracts, in my experience.

    The best part, though, was standing up in court in front of a non-technical judge and refuting the other side's nonsense on how fast code is written ('no way an experienced developer can write hundreds, yes hundreds of lines of code in a week') by putting my laptop in front of the judge and rapidly whipping up an nice Mac program that printed the judge's name in a window on screen, demonstrating that (with the auto-generated code) I had just written a few hundred lines of code in minutes. The judge: "I am sorry, gentlemen, but I am going to accept the technical facts of this case from this lawyer: if he can do this, then his professional programming client can probably do more: you obviously are trying to abuse my lack of hands-on coding experience with your grand statements, but now that I see how it is done and that even your expert witness cannot refute what has been demonstrated I suggest you pipe down."

    So yeah, learning to play with and understand code is VERY valuable to lawyers in the tech field, if not to most people.

     

    reply to this | link to this | view in chronology ]

    •  
      icon
      Beta (profile), May 21st, 2012 @ 6:10am

      Re: Knowing how to code helps lawyers in many ways

      Oh, I have mixed feelings about this...

      I'm all in favor of crushing a bad argument with an irrefutable demonstration. I'm all in favor of educating judges. And I'm glad you won. But the judge seems to have missed the two real lessons:

      1) A non-technical judge should not accept an argument about a technical discipline without evidence, and

      2) there's really no limit to how fast a tech-savvy coder can generate lines of code. (Extra credit if the judge realizes that there's no upper limit to how many lines of code can be used to perform a given task.)

       

      reply to this | link to this | view in chronology ]

      •  
        icon
        The Groove Tiger (profile), May 21st, 2012 @ 7:03am

        Re: Re: Knowing how to code helps lawyers in many ways

        HUNDREDS of lines per week? Wow, that's almost like DOZENS of lines per day! I can only write like a COUPLE lines a day, and I can't even chew bubblegum at the same time!

         

        reply to this | link to this | view in chronology ]

        •  
          icon
          The Groove Tiger (profile), May 21st, 2012 @ 7:06am

          Re: Re: Re: Knowing how to code helps lawyers in many ways

          Here, let me try:

          a = "hello judge";
          alert(a);

          Man, I'm spent... think I'm gonna lie down for a while. Hopefully nobody asks me to add a THIRD line there...

           

          reply to this | link to this | view in chronology ]

      •  
        icon
        John Fenderson (profile), May 21st, 2012 @ 9:12am

        Re: Re: Knowing how to code helps lawyers in many ways

        Yeah, I was thinking similar things. LOC is a very squishy way of measuring production. What kinds of lines are they -- automated (like the judge did), freshly written, or fully tested & debugged?

        The industry-average rate of code production varies wildly, from the tens to the thousands, depending on what exactly we're talking about.

         

        reply to this | link to this | view in chronology ]

        •  
          identicon
          Lawrence D'Oliveiro, May 21st, 2012 @ 5:43pm

          Re: “fully tested & debugged”

          Please, let me know where I can find some “fully tested and debugged” code, because I have yet to see any non-trivial examples being shipped.

           

          reply to this | link to this | view in chronology ]

          •  
            icon
            John Fenderson (profile), May 22nd, 2012 @ 8:35am

            Re: Re: “fully tested & debugged”

            Well, yes. :)

            What I meant was "production-ready". The last figures I saw for this kind of code was an industry-average rate of 10 lines per day.

             

            reply to this | link to this | view in chronology ]

  •  
    identicon
    Anonymous Coward, May 21st, 2012 @ 5:58am

    I really wish Alsup had shot Boise down with the "With all due respect (I.E. none)" construction. as in "With all due respect it would take you 6 months to learn how to program a range check function, however I and the average high school student completely understand this in about 5 minutes."

     

    reply to this | link to this | view in chronology ]

  •  
    icon
    velox (profile), May 21st, 2012 @ 6:38am

    Boies: Clinton's Lawyer

    "high-profile David Boies, best known for representing the US Justice Department in the United States v. Microsoft case"
    In the IT world, Boies is best known for US vs. Microsoft, but the world at large probably knows him better from another case. He was on national TV for days arguing Bush v. Gore in the Supreme Court conclusion to 2000 election. Boies was Gore's lawyer.

     

    reply to this | link to this | view in chronology ]

  •  
    icon
    Mesonoxian Eve (profile), May 21st, 2012 @ 7:32am

    I wish today's programmers would learn how to code.

    Then again, having others try their hand means things can't possibly get any worse.

    RIP KISS (not the band, which is a problem if you thought "I wish I had his tongue").

     

    reply to this | link to this | view in chronology ]

  •  
    identicon
    Monday, May 21st, 2012 @ 12:56pm

    Knowing Code

    I truly think Miratus comment, May 21st, 2012 @ 5:21am, was/is the most insightful made so far. NOT knowing code at a Judgeship level, especially if they're looking to advance their carreer through the trying of High Profile cases such as this, is akin to not knowing how to type when you're in University. Yah, it's gonna take you a few days instead of 10 hours to get that 20 page paper in if you type at 1000 words an hour instead of 2500 words an hour.
    When it comes to code, you also have to remember how history has behaved in the past... Two people in different parts of the world came up with calculus at the same time... Three separate and equally secluded scientists were all coming up with the "Atomic Solution" at the same time. It is inevitable that these 'code infringements' are going to occur at some level; that's just unconscious knowledge.
    Coincidence is very convincing, but it is not a Guilty verdict...

     

    reply to this | link to this | view in chronology ]

  •  
    icon
    Andrew F (profile), May 21st, 2012 @ 4:06pm

    rangeCheck

    Went looking for the code, not sure if this is it, but here's what I found at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5103956:


    private void RangeCheck(int index) {
        if (index >= size)
            throw new IndexOutOfBoundsException(
                "Index: "+index+", Size: "+size);
    }


    Yeah, that saved Google lots of time to copy.

     

    reply to this | link to this | view in chronology ]

  •  
    identicon
    patent litigation, May 28th, 2012 @ 12:00pm

    transformation

    I expect that, over the course of the next few years, we'll see some major developments and evolution in the case law surrounding software patents. Though I'm betting that, in general, they'll survive, they'll have to undergo some sort of transformative/tightening-up process. It should be an interesting ride.

     

    reply to this | link to this | view in chronology ]


Add Your Comment

Have a Techdirt Account? Sign in now. Want one? Register here
Get Techdirt’s Daily Email
Save me a cookie
  • Note: A CRLF will be replaced by a break tag (<br>), all other allowable HTML will remain intact
  • Allowed HTML Tags: <b> <i> <a> <em> <br> <strong> <blockquote> <hr> <tt>
Follow Techdirt
A word from our sponsors...
Essential Reading
Techdirt Reading List
Techdirt Insider Chat
A word from our sponsors...
Recent Stories
A word from our sponsors...

Close

Email This