Week 5 Day 1 - Making my peace

Today's partner: Ben

The project today was sort of forgettable, like the last couple days. It's been good to get so much practice with Rails, and today was fun - we used Capybara to write integration tests, then wrote code to build the appropriate elements and views to pass those tests, learning a lot about how Capybara and integration testing work in general - but it was another one of those days where ultimately I'll forget what, specifically, we did.

Everything is just forming into a big ball of stuff in my head called "rails knowledge". It's kind of cool in one way, but in another: we're halfway through the curriculum, and a lot of it is a blur.

Story time. When I was in AP Calculus, I had a hard time keeping up with the class, but the AP test was a solid wall in front of me that was a) well-defined, b) had plenty of information available and c) had important consequences. So, the week leading up to the test, I gathered as much practice material I could, and then in the two nights before the test, I cherry-picked the problems I was having the most trouble with and did them over and over until I could do them easily.

The repetition drove the ideas into my memory, and to this day I can understand the concepts of calculus due largely to the intentional practice with a clear goal provided by that exam.

In the past year or so, I've come to understand that my primary advantage compared to others is my memory. When I have sufficient context and sufficient reason, I can remember just about anything quickly. When I don't have reason, context, or practice, I'm just an average person, sort of.

So with this rails stuff, I spent most of last night—the parts where I wasn't doing readings or tumblr posts or whatever—doing parts of the practice assessment, and came in this morning ready to graft more knowledge onto what I had been getting comfortable with. We were still slower than others today, but the difference is I didn't really care. We worked well together, our tests worked well, we wrote the auth model in under an hour (give or take), and we got a lot of knowledge, both core and ancillary, out of the lesson.

Sure, I can look at the bonus work and look into "completing" this project perhaps over the weekend, but really what will I gain? If I am able to do the things that these projects ask in a more synthetic context - creating polymorphic associations, writing tests with good coverage, etc - then what am I really missing? It would be like going back to try to re-do the test you failed in the third grade… of course you'll be able to pass it now.

This program, and TDD in general, really make me consider some things about how we educate in this country. You don't generally test every possible route through your application; instead, you perform unit tests on individual models, then you perform integration tests on inter-related structures. The former model would involve something like n^m tests, whereas the latter demands n+m tests - where n is the number of "objects" and m is the number of "relations".

When educating, you don't need to test to see if someone knows how to multiply on a boat, how to multiply with a goat, how to multiply nine digit numbers and ten digit numbers and eleven digit numbers… you need to see if they know how to multiply digits, then to perform carry rules, then to do more complex operations… perhaps curricula should involve unit and integration testing, like TDD. It certainly feels like a/A is doing this with us.

Tomorrow's another solo day, but more importantly it's the day of the assessment. I plan on doing it at least once end-to-end, and maybe focusing in on re-doing a couple hotspots before 9 am, but I'm feeling remarkably comfortable with myself at the moment. Let's see if it lasts.

Two more days until the weekend, and more studying. :)