On Wednesday 28 December 2005 10:42 am, ssmoot / gmail.com wrote: [clip] > One of the coworkers is going to be learning Ruby, and the other is > going to be more Rails focused. I don't think it's necessary for the > first to learn Rails, but I'd like the second to get as good a handle > on Ruby in addition to Rails as I can offer. > > I'd like to think I and a coworker are pretty decent Rubyists, and one > on one I think I can get the message across with an eager learner, but > I'm anticipating a less than eager reception, and I'm not very good at > marketing. (Which I think is really key here). > > Any and all tips/criticism are appreciated! Rather than commenting on the structure of your curriculum, I have some ideas for how to present that curriculum. I might have started Ruby 3 years earlier, but was put off by the constant OOP wardrums of Ruby evangelists. When they touted Ruby as "fully OOP", I read that as "all OOP all the time" like Java, where you need to create a class to print "Hello World", and there's really no such thing as a quick and dirty program. In teaching these reluctant learners, I would work from the known to the unknown -- a standard technique for teachers. These people have probably been hammering C for years -- start by showing them that they can write Ruby the same way as C, while promising that as time goes on they'll probably want the advantages only Ruby'esque coding can offer. Have em start with HelloWorld, then a loop, then an if elsif else. Demonstrate that most functions are methods of objects, and that integers, floats, strings and the like are really objects with methods. With a few programs under their belt, you can say "the stuff you did is the hardest Ruby you'll ever do. Now let me show you the easy way", and proceed to show them the real Ruby way of doing things, in each case demonstrate why the Ruby way is easier. Personally (Litt dons flameproof suit) I wouldn't stress these long 1 liners so popular in the Ruby community. There's no shame in using 4 short statements instead of one long one, and I think the average programmer (not necessarily Ruby programmer) finds the 4 line version easier to understand. Remember the complex 1 liners Kernighan and Ritchie used in version 1 of "The C Language Book"? Weren't they obnoxious? I have the same feeling about long and complex 1 liners in Ruby. Show them how beautifully Ruby encapsulates object member data, and yet how easy it is to reveal them with methods with the same name. Show attr_reader, attr_writer and attr_accessor. That was a BIG selling point for me. Show them how, unlike Perl and Python, they have full public, protected and private methods. Show them how much easier inheritance is in Ruby than in C++. Show them just how easy it is to make an operator represent a method. Sure, you can do that in C++, but it's just not as easy. When you get around to demonstrating blocks: my_array.each{|element| puts element} make the point that this feature saved them the need for a confusing callback routine (pointer to function and the like). Show them how to use yield() to create a method that can take a block. HTH SteveT Steve Litt http://www.troubleshooters.com slitt / troubleshooters.com