Learn me good

I have been struggling with programming languages. I really don’t want to program — yeah, that could be a problem. The outcome is what I want, to see the end-product make it from my brain to the screen.

For reasons I can’t talk about, I am forced to learn a programming language. Not just hack at some code, but really learn it so I can create something. This brings me today’s lesson: How do you learn?

Memorization is an issue for me. I can recite Joe Rudi’s stat’s from his playing days with the Angels, but can’t recall definitions of methods and arguments, not to mention when to use who and whom. This has always been an issue for me. One of the reasons this English major tried to ingest the language’s rules.

Do you know what I mean?

You read the best writers and you start to see the difference between sentiment and sentimentality. And the difference between descriptive writing and purple prose. I would struggle to explain to Madel why throwing a half-dozen modifiers in front of noun is a bad idea, I just know it is. Good teachers like McNally and Russo know this stuff, live this stuff and can teach this stuff. I can not.

Let me bring it back to geek things: How is it that I could pass every Microsoft SysAdmin exam on the first shot? Towards the end of my certification process, I studied a tenth as much as I did in the beginning. Microsoft server software made sense to me at some point — that was NT4 and Windows 2000 Server days.


I know it wasn’t the exam I mastered because Microsoft at that time was constantly changing the format. There was little similar between the Windows XP exam and IIS exam in terms of format or process — IIS exam used an adaptive algorithm, meaning the next question depended on getting the current question right and how difficult the question was.

At the time, I think I understood Microsoft server software on a different level. I never could tell you some upper-limit of AD objects or the like. Didn’t matter to me in my former position. It also required some sort of memorization. To my brain, Joe Rudi’s batting average and Frank Tanana’s ERA are important facts to memorize.

To fight my forgetfulness, I have turned to flashcard software (I’m using Mnemosyne). After a week, I can honestly say Ruby’s programming terms have not permeated my brain. Part of this is not doing what I have learned. The terms as applied to Ruby get jumbled and a class becomes a method and an argument… well, you get the idea.

Context is important. Doing is important. Only, when you’re first starting out, how do you make things coalesce in your brain? With the Microsoft stuff, I was taking the exams and working as a system’s administrator. For 40+ hours a week, I lived inside of server and workstation software.

I find it hard to reach the entry point with programming languages. After printing Hello World! to the screen, what’s the next step? Of course, I’m trying to learn web languages and you have to add in all the complexity of the web mix: HTML, JavaScript, web server software, CSS, etc.

Of course it isn’t programming that’s the problem, it is the learning method, understanding how you learn. I’d love to hear how y’all handle the new.

5 Comments

  1. Brad K. said,

    July 30, 2007 at 9:56 pm

    John Lyons, in ‘Lyons on Horses’, claims that once a horse learns a lesson, he needs to repeat the lesson successfully 50 times, to ‘master’ the material. I think people are about the same.

    If you aren’t taking good notes - notes you could use to recreate and present the lesson, you are missing a great learning tool. Dust off that mechanical pencil and notebook.

    Then next essential is an understanding of the underlying machine, and how the language manipulates that. Back in the keypuch days of my youth, we learned Fortran and Assembler, the names of the registers of the CPU, etc. A variable represented a memory location, in early System 360 days you could find the actual hardware memory address of the value you used.

    The virtual machines we use now prevent the close association of moving bits around with actual hardware. Explanations stop at the virtual level. Sometimes you get into the lists of storage that the compiler and linker construct as your source code is processed into executable programs.

    Then the object oriented people invented a new paradigm. It may be helpful to work through a ‘Hello, World!’ example to track the objects and classes to underlying memory. That might be reassuring to those of us that used keypunch chad to vandalize the carpet in the dorm room next door. But it will likely be disorienting, too. Pure object oriented programming comes best, I am told, with complete immersion. Which takes us back to taking notes, and what you observed you are skipping, practice.

    From ‘Hello, World!’, how about ‘What is your name?’, then ‘Hello, [name inserted here]!’ Every time I got an exercise to work, I would archive the sucker. Being able to return to something that worked can be extremely valuable. And never, ever, modify an archived file. Only copy them to look at, to tweak, etc. Use descriptive file names, and hierarchies of folders to manage file relationships. I grew up with computers that only allowed 6 characters for file names and directory names. Then eight characters, so this year’s human resources records could be more descriptive than HR07/E124386.DAT. Make your files tell a story by the time you get to the file name. My Documents\company\WorkOfArtsRUs\Human Resources\2007\Employee Records\E125386 Richard Roe.DAT lol!

    In class I learned you never let the instructor proceed with the lesson if I don’t get what he is presenting. Learning from a book lets you re-read as many times as needed, but can still leave gaps an instructor could fill in. You might check into some of the online learning options, such as the HTML Writers Guild and many universities and tech schools with classes. For Ruby check out the network of Adult web site webmasters resources - most are free, and have no adult content at all, and are excellent technical resources.

    Luck!

  2. scott said,

    July 31, 2007 at 7:16 am

    Brad, thanks for taking the time to read my meandering post. You’re right: The immersion is key for me. I am not one of those guys who can sit in the library and take a book and make the connections effortlessly. Damn hard work. I think that’s why I like learning new things even when I fail at it frequently.

    Do you read joelonsoftware.com? You may want to take a look.

  3. rebpak said,

    July 31, 2007 at 10:17 am

    Mistakes, Scott…you must do enough with it to make mistakes…heaven knows we both learned more from our mistakes than our studying. But that’s part of the immersion, I guess.

    There are things I will never forget because of the constant trial and error, and the notes I made from those errors - hence our wiki, yes? A place where we could log our triumphs as well as the pitfalls?

    Diving in, determining what my end goal and just trying to get there. I guess that’s been my method. Once I’ve mastered getting there, then I can fine tune after I’m done. And then it’s all about the notes I’ve taken so I can replicate, replicate, replicate. How many times did kat mat and I slick that box upstairs preparing for oracle upgrade? How many times did I install and reinstall, mirror and re-mirror the box for the linux firewall install. That’s how I did it with amanda, too, I guess, didn’t I?

    At least you can pass the tests…I can know something like the back of my hand and still choke. But of course, I’m a hot mess.

  4. Dena said,

    July 31, 2007 at 2:11 pm

    You all are correct. When I was studying, in the old days, I took notes, rewrote them on cards and carried them with me to study any time I had an odd moment or two. It really helped. It is amazing that I could recall what I read, even to the place on the page and it would sound familiar, so I could choose the correct answer. Now that I am old, notice I didn’t say older, I realize that I don’t need to take up space in my limited memory bank with “useless” information. At least that is my excuse. I’m finding that the Spanish endeavor is really a struggle, but immersion probably would help. It just is not readily available. Scott, you have always been able to learn from reading a book. Remember when you taught yourself to type by studying the learn to type book we had? Anything you wanted to know, you would get a book and learn it. Stop beating up yourself.

  5. Mom said,

    August 21, 2007 at 1:52 pm

    I think your main problem is not wanting to program …. repeat after me, “I love to program…I love to program…I love to……..”

Post a Comment