|
Re: Ethics 101: To re-use or not to re-use?
Marc
I agree that then end result has to benefit the students. However, there is a hole in your argument.
What do students learn from Kevin Watson's serial port code? That code is so complex that it has the potential to baffle even people that write software for a living. I would never expect a high school student to be able to understand it. Yes they can be taught how it works, but isn't the allocated time better spent teaching them how to use the interface? In this case, I believe that's where the real learning comes from. How many high school students are exposed to serial communication outside of this program? How many have even heard of it? So much can be learned in simply writing a protocol to talk serially between two endpoints. In theory, nothing about the guts of the serial code needs to be known other than "when I call this function, these bits get sent to the other end".
This is something that software professionals deal with on a daily basis. There are always modules that you will use that you haven't written yourself. If you're doing any sort of GUI programming, I highly doubt that you would write your own Button class. This doesn't take away what can be taught/learned if you can't see the internals of what a Button really is.
Why can't this principle be applied to robot code? Why couldn't a team re-use a PID control function from year to year? There is so much to learn from interfacing with the function and tweaking the parameters without needing to know the guts.
I do see how reusability needs to be done responsibly otherwise we would end up in the situation that you described above, where the students get very little out of this. This should be placed squarely on the shoulders of the mentors. After all, aren't we here to make sure that students get the most out of this program (whether it be education or inspiration)?
I agree that there is no substitute for actually writing a piece of code to understand what it does, but there is plenty to learn by interfacing with existing code.
Another thought:
Is prototype code written during the offseason legal for use? There has been plenty of discussion of being able to track multiple colors. If a team has perfected it are they forced to have to rewrite everything? What if the same team of people that are writing the robot software also designed and wrote that code? My stance is that if a team has put in the effort to go out and learn about something on their own, they shouldn't be forced to waste the time rewriting it when the time could be better spent creating the interface to it.
|