Saturday morning, our teacher Matt delivered an awesomely helpful talk to the class about creating “personas and user stories” as a way to plan out an app. It’s important to think about not just who will use your app, but also just what each might do with it and how they’ll feel about it while they use it.

After spending an hour talking about this, creating a handful of personas and stories for each of them as they navigated through our app, it became apparent that 1, the scope of our MVP was too wide, and 2, we were pointed in the wrong direction anyway. By pivoting our plan, we were able to get started on something that will be far more useful to the users we’d most like to get and retain.

All that said, between planning all that UI/UX stuff, pivoting, and having to rework the ways our models would associate based on that pivot, I think it was probably around 4pm before we got a single line of code written. This was incredibly frustrating for all of us, but I kept reminding myself (and sometimes the guys) that with the amount of planning we put in, things would move very quickly after these first few steps. Personally, I’m glad we did that “extra” planning; I would have been far more aggravated had we worked on writing code for those first six hours and then realized that we had to change the plan up. Refactoring is not my favorite part of coding, particularly while I’m still sorting out what I’m doing in the first place. So, planning, hooray! (I know we’ll still have to refactor code on this project, but I’m also sure it will be less annoying because we made a plan first.)

And there were still victories on Saturday. The final count of database created and in use for our project right now is nine. Even counting the join tables, that’s still a pretty intense amount of data compared to anything we’ve done before in class. (Join tables exist to associate other tables to each other and allow things to have more than one of each other–for example, bananas can have many desserts they are used in, and desserts can have many ingredients besides bananas; join tables make this work when you need to keep track of all of that, without having to create and log a separate instance of bananas every time.)

I didn’t count the authentication-related tables there, by the way, because I’m still working on all of that. Last night when we presented the current state of our project to our classmates, I was grumbly because I had to take a break from learning about using OAuth to allow our users to log in to our app with their Facebook accounts.

In any case, after the presentations, I was pretty much done. “Nope, sorry, can’t brain anymore, I’m all out for the day.” So, it was time to party at the DevHouse for a bit. I got tired early and was about to head home, but Nick ended up convincing me to stay out for a little bit longer and we spent the next couple of hours at pretty much my favorite bar in Austin.

Which brings us to today. My only day off this week, and my first in over two weeks (Justin and I spent all of last weekend coding too, trying to make sure we were up to speed on ActiveRecord::Associations… if only we knew then what these last couple of days would hold). This will be the last thing I do on my computer all day. Tomorrow, I’m back to work, but the only things I plan on looking at on a glowing screen today are cartoons.

If you’re interested in following our progress as Justin and Nick and I work on this final project over the next few weeks, feel free to watch our GitHub repo.

Things have been looking up. I’ve become terrible at blogging, but I’m still powering through MakerSquare. Really, I’ve become terrible at blogging in part because I’m still powering through MakerSquare. Understand that when I say “powering through,” I mean it. When I ask questions of my friends who have been developers for a long time, they often express amazement at the level of understanding I must be at to ask the questions I’m asking, for having been doing this for under two months. (Lesson: don’t let Impostor Syndrome get to you… no matter how little you think you know, you’re probably doing just fine.) So when I say that by the end of the day, I’m often too tired to even look at a computer screen, much less write a blog post, that’s a testament to the sheer amount of data my brain is processing.

Anyway. Blogging. I haz it. Here we go:

In week 4, the day after most of us deployed our first ever Sinatra apps up to Heroku, we started out on Rails. Having a framework to create apps in makes life so much easier! Lightbulbs went on over the heads of many in my class as a bunch of “think like a programmer” type logic clicked beautifully into place.

In week 5, we got deep into Backbone.js, and deeper into Rails. Working on learning two MVC pattern syntaxes at once notwithstanding, just having a solid idea of how model-view-controller patterns work makes a lot of other logic make sense. I won’t say I’ve never put Ruby syntax into my Javascript code at the end of a long day, but at least the logic is correct. And, y’know, I eventually notice and fix it. 😉

Week 6 was rough, I’m not going to lie. I had been feeling pretty good up until that point. I’d been taking good care of myself, getting enough sleep, making sure to have a day each week where I didn’t code, and just doing all the things one should do to avoid burnout during a 10-week learning marathon. My energy was high, and I felt like I had a reasonable understanding of most/all of what I was doing in class. And then… I hit burnout anyway. I hit it hard. There may have been tears involved. And by “may have been,” I mean I was crying over my Underscore.js templates in the front room while the amazing @elyseholladay was leading a class on SCSS in the back room. Luckily (although admittedly also embarrassingly), Nick happened to come out and see me losing it. I’m actually pretty decent at Javascript, but in that condition I was no use to anybody, least of all myself. He pointed out what were essentially a couple of dumb typos on my part (lesson: stop freaking out and check your spelling) and then dragged me outside so I could rant some more before I headed home and he headed back to the DevHouse to get some rest.

Thankfully, the next day was a half-day, because of the Austin Startup Crawl. In theory, Nick and I spent that afternoon at a coffee shop to work together on some Rails stuff that was confusing us both in different ways (lesson: different teachers have different teaching styles that will mesh well with different learning styles; find a friend who learns best from a different teacher than you do and teach each other ALL THE THINGS), but mostly, we shared some badly needed decompression time and just goofed off a whole lot.

Anyway. That night, after my shift as the arbiter of sign-ins and drink tickets at MakerSquare’s front door, Nick and I grabbed our homeboy Justin and headed out for some networking (and drinking, for the first time in weeks). Long story short (she said, at the end of this gargantuan post), after that night of loud drunken bonding, the three of us will be working together over the next few weeks on a really terrific final project.

And no, I’m not going to tell you about that project just yet. Tomorrow is the first half of our second hackathon. The guys and I have a pretty sweet minimum viable product planned out, and no way am I going to spoil the surprise before we even start building it. 😉 Stop by next week for details of what we accomplished. I promise I’ll be good about blogging again and post them.

PS – I did finally manage to get in on a SCSS lesson. CSS with math! Sassy, indeed!

That’s been the theme of the last couple of weeks. Truly non-stop. Now that my fourth week of MakerSquare is over with (holy crap, almost halfway!), and I have a minute to get some thoughts down again… I can barely remember the third week. I do remember that we learned about Sinatra, and did Javascript “exercises” for hours and hours, and had our first introduction to APIs.

And then there was the Hackathon. Instead of a weekend off, we had two days to work on projects of our own choosing. My team made this Lorem Ipsum generator. It’s pretty satisfying to be in class and notice people using it when they need filler text. I personally am having way too much fun plugging songs in from bands like Mindless Self Indulgence, Ke$ha, or even Insane Clown Posse, and just doing dramatic readings of the results.

The process to make Lyric Ipsum would not have been terribly intense if not for the APIs we had to/tried to use. Primarily, it runs with a Ruby gem called Lyricfy that has two APIs for lyrics databases wrapped up neatly inside. This was a pretty cool find by my teammate Jesse, but we wanted more from it by Monday than it was willing to give. Specifically, we wanted people to be able to search for, say, “Wu Tang,” and have our app understand that the user means “Wu Tang Clan.”

I learned quite a lot about a lot of music-related APIs this week in the name of bringing that idea to life. In the end, I have unfortunately learned that there are a lot of APIs (and gems) out there that are a pain to work with, and more than a couple that don’t do what they claim to (and in one case, that doesn’t even connect to its own database using its own methods, but anyway…). The idea isn’t dead yet, but it is definitely on hold until we learn more about AJAX calls in jQuery. I heard a rumor that this might solve the problem.

Also within the last week, after my class built our first functioning web apps, the team at MakerSquare (finally) introduced us to Rails, which I am a little in love with already. The first few days were rough, but then the lesson on Thursday made everything make sense. I had a few moments (and all of Friday morning) of frustration while trying to complete my lessons using individual concepts without connecting them to each other, but for the final lessons, making everything in Rails work together the way its supposed to was easy. I suppose this is why the term “Rails magic” gets tossed around a lot.

I finished Friday’s assignment in a short amount of time, and took a look at the extra credit “extensions.” I didn’t like the look of the extensions (i.e., I was in no mood to deal with another API-wrangling session late on Friday afternoon), so I made my own “extension,” based on a small feature that I thought the project should obviously have. In doing so, I discovered why this seemingly simple little thing had not been included in our lesson, but I did still make it work; I want to shout out some love for my classmate Lynda here, because she took a look at what I was trying to accomplish, said one thing to me, and that was The Thing I needed to get my idea working in under 10 minutes. Suffice to say, I’m incredibly excited that Lynda will be my pair-programming buddy for this coming week.

I’m not even going to discuss in detail how far behind I felt in class for most of this week. Really, pretty much from last Friday on, my confidence was dropping as fast as my own assessment of my abilities.

Luckily, I have some pretty great instructors who are incredibly responsive to the needs of their students. When they realized that a good handful of the beginners in my cohort were feeling the burn maybe a bit faster than they meant us to, they set up office hours so we could get extra help. Between attending office hours, Shehzan and Mike’s patience in answering my questions well after 6pm, and learning about RSpec in regular class time on Wednesday, everything started to gel. A lot of what was eluding me in Ruby now makes sense.

On Friday, I finished both my evaluation projects (like weekly tests, except we don’t get report cards in bootcamp) with enough time left in the day to get one last pull request in on GitHub (for a total of three that day): the project that had started my spiral of frustration last Friday. I have no idea if three is a lot, a normal amount for a productive day, or total amateur level stuff, but I’ve been coding for two weeks and it’s my personal best, so I feel pretty damned good about it.

One thing I’m really loving about this immersive “bootcamp” learning experience is the absolutely ridiculous level of intensity, no matter how stressed I sometimes feel. I simply do not have the time to fully indulge in things like insecurity. The only way out is through. (Totally jacking that phrase from a classmate’s t-shirt, by the way.) I will do this. I can do this. I made 14 RSpec tests pass in 3 hours (again, no clue if this is a lot or not, but all that green made me happy). I got this.

# don't actually run this code:
life = ['code', 'sleep', 'eat']
life.each do |activity|
puts activity
life << life
end

MakerSquare. The big game-changer for my life. The reason I made this blog. It was taking up most of my time all summer even without having started yet. I completed tracks on Codecademy, started others that I only got partway through, completed classes on Codeschool, read bits of documentation and so many blog posts about different concepts, worked through a few more tutorials, and then spent most of the last week before Labor Day reviewing as much Ruby as I could on Rubymonk.

I am now here to tell you that no amount of preparation is really enough.

Since my cohort had all of the aforementioned prework (the first cohort apparently didn’t), the MakerSquare team was able to start us off “easy,” but still with more advanced concepts than the first group had in their first week of class. Of course, “easy” is a funny word. People were struggling on different concepts every day, and I know that at least a couple of us (myself included) were (not figuratively) near tears on Friday as we worked on the projects meant to evaluate how far we had come this first week.

That said, if I had any doubts about how much I was learning, I can look back to last night. I was showing off my projects to a friend, joking about how it took me all day to create the 100 or so lines of (still incomplete but) working code, and my friend pointed out that I had just explained to him exactly what every bit of it did in such a way that he completely understood it. That was pretty cool.

Also pretty cool: Harsh (one of the instructors) came by at the start of my first solo HTML/CSS project to give me some help. A while later, I called him over to have him check the finished product, and the first thing he said when he looked at it was “wow, that was fast.” He didn’t make a big deal, it was a very casual statement; but that casual tone made me feel better about my work and grasp of the ideas than a big deal would have.

I am pooped, to say the least. Part of this is that I am, by nature, a night owl (take note that this is the most extraordinary of understatements), and starting last weekend, I’ve been waking up at 6am. On Tuesday, my cohort and I arrived an hour early for the “breakfast/meet and greet” before class, and since then, I’ve been getting on the bus at 8am to be at class before 9am. Except for Thursday, when I stayed late to push myself through a project and understand a bit more about class instances, I get out of class at 6pm. I’m in bed most nights by 10pm, 11 at the latest.

No matter how tired I am (my body is starting to adjust to the new schedule; I don’t hurt so much in the morning anymore and my skin is calming down), and how frustrated I get (that 100 lines of Ruby code from yesterday still needs (what feels like) a few hundred more for the project to be complete, but I think I can do it faster now), I need to stress that I am loving this. The team at MakerSquare really knows what they’re doing, and just as importantly, they really know how to teach it. There have been a couple of curriculum hiccups (as the second cohort, we’re still guinea pigs for a curriculum that will always be evolving), but the team’s response times on adjusting to the level of the class are nothing short of amazing. If my teachers in school had always been this good, my life would be a very different place. Of course, I’m now happy they weren’t, because my life led me instead to a place where I get to do MakerSquare. 😉