CONTENTS OF THIS SITE

OUR OTHER CONTENTS

RECENT BLOG ENTRIES

Teaching kids, part 1

March 2nd, 2007 by comment Victoria

While chatting with the Obtivians the other day, I discovered that there were 12 kids between them all. “Hey, we should put on a course for them!!” I joked. Couple hours later, the idea of developing a grade school-level programming course had completely consumed my mind. Next week, I’ll actually be starting on this endeavor by mentoring just one of the kids, Dave’s 8-year-old daughter Rose. I thought I’d toss out my initial ideas to you guys before I get too far — I’d love to hear any thoughts you might have!

There are a bunch of questions I’ve been keeping in mind as I work on this:

Code Quality: Is it better to show a child how to write clean code from the start, or is it better to teach a verbose, inefficient manner of coding in order to inspire more appreciation for clean code later? For example, would it be worth teaching the deprecated HTML font tag to help the child understand the benefits of CSS later?

Languages: How beneficial is it to begin with programming languages designed for kids rather than starting a “real” one? Along those lines, which would be the easiest programming language for a kid to learn?

Projects: Is it better to assign projects that mirror real-world tasks (keeping a blog), or should I assign projects that are just for fun? (Here I think of the crazy little MIDI-playing, marquee-scrolling, secrets-filled website I made when I was 15: “Victoria’s Galaxy.”)

Motivation: What’s the ideal source of motivation for kids learning to program? Is it the more intrinsic motivation stemming from solving low level problems and seeing the beauty in well-written code, or the more extrinsic motivation of ending up with a cool product they can show their friends? Obviously, the latter would come more naturally; I’m just wondering which would be the ideal — or if there’s something else that would be an even better motivator.

Health: I tend to believe that in order to really get good at skills that take a huge amount of time and dedication, you basically have to get addicted to the activity for a while… is it possible for a kid to learn these skills without spending an unwholesome amount of time sitting at a computer screen? What are ways to get this knowledge to stick beyond just plain “programming a lot”?

In a week or two, I’ll post on the specifics of the curriculum I’m starting to put together.

ˆ Back to top

On code and luck and the start of journeys

February 14th, 2007 by comment Victoria

I still remember how it was when I first started programming, as it was just a couple years ago. It was like a game. The first thing I ever coded outside of book exercises was a mini command line RPG in Ruby. It was fun, like a complex, living version of the HTML and CSS code I was used to. As the months went by and it became more apparent that my organization was desperately in need of experienced developers, programming seemed less like a game and more like a rare superpower I did not yet possess. I couldn’t help but look down on my design and CSS skills as I sat in on meetings regarding our need for senior programmers. During one of these discussions, such a strong feeling of inferiority and helplessness hit me that I actually burst into tears (yes, the one thing I dread doing most in front of my all-male IT department… groan!).

But I was lucky. The very same day, we got a call from Ryan Platte, a developer who had been doing some contract work for us. He was looking for someone to mentor. In the next couple months, he introduced me to practices like test-driven development and refactoring and essentially gave me eyes to see the artistry in code. I came away with a new passion as well as a need to someday pass on his goodwill by giving back to the community, just like how he did. Programming was now much more than a game, or a power, or some skill superior to design. After my organization sent me to a couple amazing developer events over the next year and as more developers invested in me, it became more clear what it was. But I didn’t see it completely until my first college Java course last fall.

I skipped the intro course and went straight into the intermediate course, even though an advising professor said I couldn’t. I was too hyped up to listen. I read through the textbook the couple weeks before the semester began and entered the classroom on the first day with a smile and a huge desire to learn more. What I found in that room shocked and almost horrified me — everyone was completely lacking in the excitement and inspiration I had become accustomed to. Most of my classmates were not college students but rather people who had been sent here by their employers for work reasons; but no one, not even the professor, seemed to regard the Java learning experience as anything above work. By work, I mean the kind of irritating, difficult, tiring work that makes one yearn for the weekend. And it began to make sense.

Despite the fact that students should have already taken a year of programming-related classes before entering this one, we were never told to use anything more than the easiest, messiest methods of doing things. One time when I was asking how to convert month names to numbers (I was needing SimpleDateFormat), my professor’s first suggestion was to write 12 if statements. She never bothered looking at our code; we only had to show her that our programs ran to get the credit. But I couldn’t blame her; the stuff we were writing was practically too mangled to read. How could anyone be excited or inspired by stuff like this?

I’m grateful for that experience because it helped me fully appreciate everything that had caused me to regard programming as a profound art and a life-long journey. A journey that’s about to get way more exciting, because I lucked out again! Just last month Ryan notified me that the software company where he works, Obtiva, was looking to hire apprentices. I’m beyond thrilled to say that I’m one of the students they’ve decided to take in. These are people who not only specialize in agile and test-driven development, they actually teach classes on the topic. I expect to have many more things to share with you as I progress :-)

ˆ Back to top