View Single Post
  #3   Spotlight this post!  
Unread 04-12-2006, 18:26
Dave Flowerday Dave Flowerday is offline
Software Engineer
VRC #0111 (Wildstang)
Team Role: Engineer
 
Join Date: Feb 2002
Rookie Year: 1995
Location: North Barrington, IL
Posts: 1,366
Dave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond repute
Re: Ethics 101: To re-use or not to re-use?

Quote:
Originally Posted by Alan Anderson
Dave, I infer from your posts that you consider the source code for a software module to be the equivalent of the blueprint for a hardware assembly, and the compiled bits to be the equivalent of the assembly itself. Is that a fair assessment of your opinion?
Not really - my point is that you cannot equate the software directly to a mechanical piece. I contend that a software implementation (especially in C) includes elements that are roughly equivalent to the design of a mechanical part AND elements that are roughly equivalent to the fabrication of that part. So all I'm saying is that it's unfair to treat the software as either the direct equivalent of mechanical design or the direct equivalent of mechanical implementation.

I feel strongly about this topic because treating software as if it were equivalent to an implemented mechanical part is an error that is being made not only here in FIRST but in industry as well. Many companies are starting to treat software implementation as a manufacturing job - something that is able to be farmed out to any group which claims to be able to write software. The fact of the matter is that software engineering is a very immature discipline - unlike other engineering practices, the tools and processes in software have not been developed to the point where the design and architecture can be cleanly separated from the implementation. The tools and processes we have to do software design with right now do not allow us to create a design which can be implemented blindly by someone writing the code without them having to interpret the design, "read between the lines", and generally know how something is supposed to work.

In FIRST, you can take a blueprint (either one you created or something you're borrowing from another team), send it out to a machine shop, and they can send you back a finished part. This machine shop really doesn't need to know anything about how the part works or how it fits into your robot or anything. Right now there is no equivalent to this with robot software - there is no artifact which your team has that you can ship off to a 3rd party software shop and have them build you the exact same software that you had from a previous year.

So, I come back to my original point, which is stop trying to equate it to something from the mechanical world and instead focus on making rules that makes sense and address the underlying concern. To be honest I'm not sure 100% what the underlying concern really is (if someone truly knows please respond here and fill me in), but I suspect it has something to do with wanting the new kids to learn and have the experience of writing the software that the kids from last year did. Now, if this is the case, how is reusing software from last year (which the new kids didn't write) any worse than using Kevin Watson's software (which the new kids didn't write either)? How is it any different for my team to reuse camera code that we ourselves wrote in a previous year than to use Kevin's? What problem are we really trying to solve with this rule anyway? Is this just another attempt to make things more "fair", even though Dean repeats often that this competition is not fair?

When a similar rule to this first came out in 2005, it was clarified that year that anything written after ship date would have to be retyped at competition. We diligently followed this - we had 4-5 people sitting at the top of the stands furiously retyping code at Boilermaker on the practice day. Many people came by and asked what on Earth we were doing. When we explained that we were retyping all the code that we wrote after ship date, they almost all said "Oh, I didn't know we were supposed to do that. We didn't retype ours..." So, it's great that people are talking here about what high standards everyone holds in FIRST and everything, but I personally believe the vast majority of teams really are just ignoring this rule, which ends up punishing the teams who honestly try to follow it.
Reply With Quote