I've recently had several different people ask me about "flaws" and frustrations with the NXT - things that don't work the way they "should", or don't always work, etc. The canonical example, sure to be trotted out again this year, is the perpetual quest for grail of FLL: driving in a straight line (one aspect of dead reckoning). And I was wondering why I so rarely such frustrations.
I think this is a really important point: not just about the NXT, but life in general (especially with teaching). Real life is messy, unexpected, and constantly surprising - very often, if you expect perfection (in anything), you can end up frustrated. Especially for folks who are used to everything being pre-prepared, and exactly as advertised, every time.
That's not real life.
The NXT is in a rather unique spot. Billed and marketed as a toy, it's both far more and far less than that.
Far more in that it is, in every sense of the word, real engineering, and real robotics (as some of us have immense fun pointing out to "sheet metal" robotic hobbyists). And that means it has the same real-life problems. The world the NXT is interacting with is messy: specular reflections and saturation levels for color sensors, variable sound reflectivity and geometry for US sensors, uneven floors and variations in friction and surfaces for motors, sampling frequency for light sensors and sound sensors, etc.: the list goes on and on. Here is a product that unleashes an entire life-long (as some of us can attest to) world of learning and growing, because it makes no secret of being able to "cut it" in the real world.
It's also far "less" than a toy. It will work in unscripted ways. It will not always work the same way twice. It will challenge and puzzle the user, not passively entertain them. That's actually a problem, in that some people will get frustrated because, billed as a toy, they expect it to "just work".
I don't think, in my experience, you can have both of these constraints perfectly satisfied. And I don't expect them to be. NXT-G, for instance, makes some things very easy for the novice user... while frustrating the heck out of anybody who wants to take the NXT to a higher level (try trig... and no, tossing floats into the mix isn't the solution. Or arrays, a basic ability for any language, crippled in NXT-G). Having a color sensor that can selectively switch bright LEDs on and off looks great, but compromises in other ways on what the sensor can actually detect: color.
So which do you satisfy? Is it a flexible, messy real-world toolkit, or a safe, controlled, entertainment toy? I'd say you accept some compromises... while using the unique abilities to teach young minds. Making a kid (and some adults!) understand that the world is not simple, and that it doesn't work like a video game, is perhaps one of the most important lessons I think you can teach them. Too much in school ends up being "This Is The Answer", when often you later find out "this is an approximation, or a rule of thumb, or a good idea... but not an absolute truth".
That ability to be flexible, to find solutions to hard problems that no one has just given you a solution for, is something that I find really lacking in the people around me (both in grade school, where I help out, and even more so in college, where I actually teach). And the NXT is the ideal tool to work on these skills.
The next time you or your students complain about how the NXT "isn't working", or "isn't doing what it 'should'", you might want to realize that you've just been handed an amazing, rare, golden opportunity. Not the opportunity to "solve the problem", but something much more useful - to teach (or learn) how do find solutions to problems.