The pace is starting to pick up.
We learned the basics of Active Record over the weekend, which let us use Ruby syntax to manipulate database information. A big part of the learning curve was practicing how to precisely define the relationships between data tables and translate those relationships into AR associations. We were given a few challenges over the weekend, plus a link to the necessary documentation, and told to get to work. Just like that, we’ve entered Phase 2, where students begin to learn faster than they can be taught, and self-instruction starts moving to the forefront.
Code challenges are getting complex enough that it now takes more time to explain to an instructor why I’m stuck than it takes for them to help me get unstuck. Multiple folders for models (data), views (pages), and controllers (logic) create a new challenge: when something breaks, any one of four or five files could be the cause, and figuring out which one is at fault only gets me a little closer to a fix.
And the clock is always ticking.
It would be an overwhelming situation without the time crunch. But there’s a time crunch. Getting hung up on a challenge and falling behind means playing catchup late into the evening and flailing to stay above water the next day, when they pile on more complexity and take off more training wheels. Today I felt the crunch in a big way, and it wasn’t even really my fault, and it sucked.
The task involved loading a huge list into a database and working with selections from it in Ruby. I had completed the challenge last night, but my pair for the day hadn’t, and I can always use some extra practice, so we got started. After a reasonable hour or so of work, things should have been going smoothly, but for some reason, results weren’t showing up like they were supposed to. Instructors stopped by to give us a few debugging suggestions, and we hammered away at our methods like lunatics, but we couldn’t dig to the core of the problem. We started throwing up Hail Marys, printing every little thing to the screen in hopes of catching where we were going wrong.
In a moment of desperation, we tested for a ridiculous edge case, and that’s when we finally saw the issue: the database hadn’t seeded correctly. Our logic had been perfect since before lunch, and we had been spinning our wheels and questioning our grasp of the material for no reason. To make matters worse, it was now 4pm and I was exhausted and headachey. My day was basically shot, my energy spent.
And the next challenge was the real test of the day. We worked at it for an hour before the official day ended and I realized I couldn’t maintain focus any longer. Defeated, I slunk home for a nap and a blog break to clear my head.
Now it’s 7pm, I have at least one more challenge to attack on my own, and I’m still hurting from last night’s late recording session. I never like Tuesdays (too much structured lecture, not enough open coding time), but today was the hardest one yet, and it’s not over by a long shot.
So it goes. Not every day is a party. Frustration is definitely part of the package. But I’ll get through my work tonight, and tomorrow I hopefully won’t have to flail so hard. Maybe I’ll even pull ahead a little bit.
Whatever happens, my motivation still runs deep. And we’re actually making simple web applications now, which fires me up even more. Even on a crappy day, the reality is that I’M DOING THIS, I’m becoming a web developer, and the occasional outrage (why did you not seed properly, db?!?!) isn’t enough to knock me off course.
Every setback is a lesson. Every struggle strengthens my resolve. Days like this are the ones I’ll cherish the least, but ultimately they’re the ones that will matter the most. Bring them on.
But please, not again until next week at least. I’m tired.