Learning concepts and building dungeons

dungeon view

'dungeon view' by Flickr user iscari0t

I’ve just got to the end of Chapter 6 in Beginning Ruby – “Classes, Objects, and Modules”. I’d say the complexity has stepped up a gear and that leads me to question how I learn things – and by learn I really mean ‘remember’.

Let me just say again, that Peter Cooper‘s explanatory style throughout what I have read so far is excellent. He explains things very simply without being patronising and regularly reminds you of simpler point which are related and which were shown in previous chapters.

However, I do think he makes it too easy to go through large sections with many concepts without testing what you have learnt. What I would like to see after every sub-section is some kind of small exercise, with the answers at the back. Alternatively, more small tutorials to explain each individual concept with challenges to modify it to do something slightly different.

I’ve found it too easy to just read through the book and whilst I think I understand most things (okay, ‘most’ is maybe an exaggeration!) I’m never sure whether I’ve actually learnt (remembered) the concept such that I could actually use it in anger, so to speak. In fact I’d go as far as to say I’m pretty sure I haven’t in most cases.

Chapter 6 covers, amongst other things, Local/Instance/Global/Class variables, Encapsulation, Polymorphism, Module, Namespace, Mix-in, Enumerable and Comparable. At the end of Chapter 6 is a little exercise to create a text adventure-style ‘dungeon’. I went through the exercise, and yeah, I made the dungeon, but it’s hard not to when all the code is there for you. What I’m wondering is is this the best way to learn? Should I leave this chapter with the ability to go off and make a dungeon from scratch if I wanted to? I know I couldn’t. Or should I treat it as a having been introduced to these concepts and understanding (most of) them if not remembering them all?

Dungeon Master

This is not at all what Peter Cooper looks like. Peter wears glasses.

Peter does actually set a challenge after the dungeon exercise to make it really interactive. Also, he finishes the chapter by saying he’ll assume I have a knowledge of how classes and objects work, and how the different scopes of variables work. Well… I kinda got it when I read it, but I couldn’t tell it back to you now – I don’t remember!

So, should I stop here and go through Chapter 6 a few more times (and maybe Chapter 4) until I’ve cemented it in my brain and then play around with the dungeon a bit more? If I actually could play around with the dungeon I would really know that I’ve got it all so far. This could take a while though! Worth it? I think I’ve probably answered my own question.

I wish I had a photographic memory!

Tags: , ,

10 Responses to “Learning concepts and building dungeons”

  1. Peter Cooper Says:

    Thanks for trying the book, and I’m glad you’re enjoying it, even if not everything is sticking 🙂

    Here’s the cold honest truth.. books are compromises. There’s a battle of a lot of different things going on.. the schedule, coming up with the ideas, coming up with the teaching style, page counts, publisher bureaucracy.. and all of this leads, in most cases, to a less than ideal book. I’ve tried to make it as factually accurate as possible, but in terms of reworking things that don’t quite gel.. it’s really hard to get the time in the schedule to do that, and publishers hate it when you change tack half way through a book 😉 (and going back and entirely rewriting chapters that you’ve decided “don’t work” as well as they could is very rare if you’re on a publisher’s dictated schedule)

    So the book is definitely a compromise and I wasn’t 100% happy with it. I realized, though, that most books are like this. Some beat the odds and are near perfect when they come out the door. Some aren’t written with any love and suck from the start. Others hover around in the middle and are imperfect but workable. I’d hope Beginning Ruby comes quite high up in that third category 😉

    No single book is going to teach you all of these concepts (and this may be a flaw with Beginning Ruby – it does try to cover a LOT, but at a shallow level) but I believe Beginning Ruby can at least whet your appetite for learning more and give you enough “soft” knowledge that you’re confident about Googling for answers or inspecting more advanced books.

    I’m currently learning Objective C and iPhone development and I’ve done a video course and read a couple of books.. but I’m still having to look up concepts over and over and Google for stuff. It’s just the way it is, I think. There are no hard and fast rules, and people debate daily over whether certain techniques should be used or not. This is part of the fun of learning though, but you definitely need to rely on multiple sources. The publisher’s bluster about one book being enough to get from “novice to professional” is nonsense (and I really hate that they use that phrase) – the only way you become a professional is by testing, experimenting, and screwing up on an almost daily basis until it just “sticks” 🙂

    • majorgrooves Says:

      Hi Peter. Thanks for dropping by and commenting. I had wondered about the “novice to professional” thing, thinking that it would be fairly unlikely I could charge people for my Ruby skills by the end of a book! I should have realised it would be a publisher added thing – as a marketing phrase it worked – made me buy it!

      wrt to the contents of the book itself, there’s certainly nothing in there I would criticise so I’d definitely put it very high up in the third category. What I’m looking for is more! 😉 Specifically more linked exercises.

      wrt to the exercises, what I’d really like to see is something like this actually working: http://rubychallenge.com/

  2. Andrew Rodriguez Says:

    I recommend that you do this – write a blog on each of the topics you remember – in your own words – with examples. I think this will help you in learning the subject matter. Also, ask questions! Or post something and ask if you understand it correctly.

    The struggle I have is this – knowing I understand something correctly. Sometimes I just need confirmation that I understand something right.

    Explaining it to someone else or writing it out on the blog will help with this.

    • majorgrooves Says:

      You’re right – I’ll try and do this. Cheers! 🙂

    • Geoff Ford Says:

      I second this. I am currently working through the concepts of a compiler, and I have found it really helps to blog about each individual concept, with your own example, to really help to cement it in.

      As a result, others can see where I have been, and point out where I should be headed.

      I also find that working off one book, while it gives you direction, can limit your options. I’d suggest that when you find something that is not quite geling, look for an alternative source to see it from a different angle.

  3. moonmaster9000 Says:

    don’t stop. keep going, and look back only when something doesn’t make sense.

    at the end of the book (or as soon as you get the urge), write your own application. and just try to make it work. it can be simple. awesome. naive. retarded. it doesn’t matter. just give it your best shot. and when you’re done, delete it and do it all over again.

    • majorgrooves Says:

      The problem with doing that is it is quite easy to switch to autopilot when you carry on regardless. Due to the lack of exercises in the book, it is quite possible to make lots of things without ever really challenging yourself or being certain that you have really got it.

      Totally agree on making an app asap. Once I get beyond a certain theshold of knowledge I’ll give it a crack! 🙂

  4. brentmc79 Says:

    You’ve been noticed… http://twitter.com/peterc/status/8516212424

    • majorgrooves Says:

      haha, to be fair I did mention him on Twitter, so I was kinda inviting him over. Very nice of Peter to tweet out the link though! 🙂

      Also see Peter’s comments below (or above). Which reminds me I should really set comments to auto-approve so you would have already seen it…

  5. donaq Says:

    What I’ve found helps me to remember concepts is to attack them. For example, in a book about hypothetical language Blub, you’re introduced to the concept of arrays. Previously, you’ve learned about the + operator. So I’d find out more about arrays and + in Blub by testing their limits with small test programs, for example:

    array1 = [1,2,3,4]
    array2 = [5,6,7]

    array3 = array1 + array2

    print array3

    In some languages, this code would cause an error, which tells you that arrays cannot be added to each other. In others, it works as you might expect and you’d see something like “[1,2,3,4,5,6,7]”. Hope this helps. 🙂

Leave a reply to Peter Cooper Cancel reply