should there be a award for programming skill?

In the 4 years I was in first, I never appreciated the work the programmers did.

But now that I am a computer science major and taking intro to java, I now understand that there is both some skill to it and that there is an unwritten code of conduct to it.

So my question is…

should FIRST have teams submit a printed copy of their initial code to be judged (the code they shipped the robot with).

The criteria for this award would be

style:
did they use comments, did the separate functions with spaces, did they name their variables in a way that describes their function well. overall, is it easy for another programmer to tell what the various parts of the code does, and be able to easily fix any prolems in the code.

Function:
This category basicly covers what the code does. does it work, does it work well, are there any errors such as overflow and underflow, ect.

Creativity:
this would basicly be brownie points for thinking outside of the box. did you find a unique solution to the problem, ect.

The purpose of this award would be to prepare the students for their future. most college professors (including mine) leave a quarter of your program’s grade for the style category. The style category also encourages programmers to gain habits that make debugging MUCH easier. Overall, this award would help prepare the future programmers for what the world expects. And in my opinion FIRST is the best organization to start doing this.

So if you think that FIRST should include this award in future years. Vote yes in the poll.

They already have one. Rockwell Automation Innovation in Control Award. It covers at least the last two parts. OK, so you could add a code section–but there are at least 2 available languages, and each has at least 2-3 different methods of doing the same thing, and every programmer (or programming team) is going to have a slightly different style of doing it. I wouldn’t want to judge that one. The FLL one is hard enough! (One language, maybe 2, and there aren’t a whole lot of possible variations.)

Ok so I see your point, there might be a logistics problem.

But I still hold my ground in that many students in FIRST are more focused on finshing their code than the ethics that goes along with it. And while I was on 624, I saw the same situation happen over and over again: there would be a logic error in the code or even a runtime error, and it would take an hour or more to find the error.

My point was that we need a way to encourage students to write their code in a way that makes it easier for them to debug and prepares them for college and their career.

and while an award may or may not be the best way, the need is still there.

How about having a professional programmer look over each team’s code? One programmer could foreseeably look at several teams in one area. So you get a dozen or so at each event, they look over the code and make suggestions. One restriction, though: Can’t look over your own team’s code, if you’re on a team. Offer constructive criticism to help the team out. If he says, “I can’t make heads or tails of this”, then you know you don’t have enough comments, descriptive variable names, whitespace, etc.

Hmm, even before the events, too, maybe.

There are competitions that have this sort of thing on a regular basis, though maybe not in programming.

I actually really like that Idea.

Programming is a means, not an end. I believe official program awards should be given to recognize accomplishments rather than “skill”.

How to judge programming skill is a difficult issue in any case. It’s both easier and more appropriate to judge programming results.

While I agree that it is definitely easier to judge programming results, I believe that that isn’t the point.

I was my team’s head programmer for the last two years, having learned how to code in EasyC on my own. When crunched for time, and only focused on results, I would drop convention, commenting, and proper style. I was just focused on making the robot work. I didn’t care how proper my code was. I believe njamietech’s point is that this occurs too much, and that an award for good practices and style would make us programmers more focused on good technique and style.

That said, implementation of any type of programming award would be very difficult.

Then who decides what “good style” is? How do you determine “good technique” from a finished program?

In c, which would you award points for: putting curly braces on the same line as the if statement, or putting them in the same column? Do you penalize a test for equality to one because it’s redundant, or do you reward it because it’s clearly readable? Do you want to promote block comments or line comments? What do you think of Hungarian Notation? How would you grade Duff’s Device?

I just don’t think it’s a good idea to try to judge style. I don’t think it’s possible to do so unless there’s a single person doing the judging, and I think there is too much subjectivity about what makes style “good” to make it a positive experience for those involved.

Design is also a means, not an end … but: General Motors Industrial Design Award

Fabrication is also a means, not an end … but: Motorola Quality Award

I believe that the OP is correct that there should be an award for programming and it should include things like clean, understandable code with comments, error trapping and standardized variable naming. It should show creative usage of the languages available and accomplish the tasks at hand without superflous (is that a word?) code.

However, I believe that the code should not be the ‘code that the robot shopped with’ but instead should be pulled from the RC prior to a (random) match on the Friday of an event. This would show working code in it’s normal state as it is used on the robot (not some cleaned up version that we have no idea of functionality).

Just my $.02

I think that there are little to none awards for programming. It’s about time that the programmers get their share of the victory.

Why shouldn’t we honor a great programming team? I don’t know why?

we don’t necessarily have to make it an award or judge it. We just have to find a successfull way to make good style appealling. the way we do that is where we need to think.

take for example my professor’s take on what “good” style is:

The rest of the sheet just refers to the report we have to make

while some of the requirements above are not applicable to FIRST, I think they get the point across.

the applicable requirements above are really all we need to judge on. my teacher does not care whether we put our brackets in line-end style or next line style and most of the other criteria we could come up with can be solved just by following these simple ones.

the only other applicable thing we do that I did not include in the quote is that we have to put an algorithm in quotes in our code. (an algorithm is a psuedocode or flowchart that describes the codes process and function).

besides that, we don’t need to make the criteria complex. all we need to judge on is the main style errors that cause the most problems (variable names, indentation, spacing, comments).

P.S.
If you want to see the rest of the sheet, just let me know.

but overall, we do not necessarily have to make it an award. There just has to be a successfull and appealling reason for the programmers to want to practice good style.

What do you mean, “but”? You’re giving examples that support my point rather than oppose it.

The General Motors Industrial Design Award is not based on the technique or skill of the people doing the design. It’s based on the “form and function” of the finished product.

The Motorola Quality Award is not based on the technique or skill of the people building the parts. It’s based on the “robustness” of the finished product.

As EricH pointed out, the existing Rockwell Automation Innovation in Control Award seems a perfect answer for someone asking about a way to reward the programming.

I agree with Alan on this… the awards we have can honor the work of the programmers through an existing award…

We already have asked our judges to do an awful lot in a short amount of time. For some reason many individuals seem to think that we need specific awards… If this is true how about Best Driver… Best use of fastners… Best Drive train design… etc etc etc etc…where does it end

In the real world you don’t get awards for how pretty your machine is… or how how robust it is…or how nice the programming looks…

You get the job because your machine does the job it was tasked to do, reliably, efficiently and for the cheapest cost to the buyer.

The company wins… because of the sum of the parts… and as a team…

No disrespect to the coders/programmers here… they do a terrific job…

Judging the pure layout of code is highly subjective, and will probably would never be judged in a consistent manner. There are definitely bad ways of programming, but there are also several good ways too. But in the end it all depends how well the code executes on the field.

One award that I always wish FIRST would consider would be a potential innovation award. Several teams including mine would try some bold and innovative that would have given them a clear advantage in the field. However for one reason or another it didn’t work because of a limitation beyond their control (mechanical, processing power, # of i/o, etc). Often this could be a unique sensor, or a better way to navigate through autonomous. If the team can successfully explain what the feature was, and what constraints they need to resolve it, then they should be rewarded for their hard work. The short time in the build season often doesn’t permit for much Test and Evaluation (T&E).Many times, some crazy and innovative programming ideas get dropped for more conventional ideas.

The Judge’s Award is one of the few that explicitly mention rewarding effort rather than focusing on results. It would seem to be well suited for the kind of situation you describe.

And it can be awarded for almost anything the judges like. So if you sell your good programming, you could get it.

I’m just glad there’s a rockwell automation award… it’s been a goal of mine to win it since I joined FIRST (see link at end of signature)!

-q

I think it should be based on how complex it is. The more difficult it is to understand the code, then the more complex it is. :stuck_out_tongue:

An award for spaghetti code? I think not.

Hhmmm…lots of people seem to be saying, “Please, young programming students, grow up to be really lousy programmers.”

I don’t personally care if there’s a programming-focused award or not, but let’s keep our eye on the ball here: trying to encourage good engineers. Some folks seem to be unaware that there is a field called Software Engineering, to which the general engineering principles still apply.

For example, I think we can all agree that there is a huge difference in the design/skill/quality of

A) a convoluted system of dozens of pulleys and counterweights (many of which are unnecessary) and cables,

vs.

B) a clean and simple pneumatic system.

Both might accomplish the same “function” or “results” (perhaps a lift of some kind), but there are clear differences in simplicity, in cost, in maintainability, extensibility, and several other “ilities” – which are a staple of engineering evaluation criteria.

So it is with code.

In industry terms, software maintenance and support costs typically rival software design and development costs. It is almost an industry standard notion that code which only “works” is not sufficient, it must also strive to be flexible, reusable, understandable, maintainable, and so on – all in balance with time and cost of course.

As a software team lead, I would never, ever, ever hire someone who didn’t understand this concept.

So regardless of the feasibility of an award, please don’t mis-inform students into thinking that nothing matters except the end results, or if you do, make sure you plan to hire them, because no one else will.