SB Apprenticeship: Day 35

Turns out you shouldn't leave your water on the floor unaccompanied when there's a dog around. :)

Turns out you shouldn’t leave your water on the floor unaccompanied when there’s a dog around. 🙂

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Monday! I’ve never been one of those Garfield people, but I will admit to dragging this morning. Blerg.

Friday I didn’t end up pairing with Brandon because I signed up to help out with a labs project that ended up taking more time than I anticipated. I was able to make a lucidchart to diagram out the bookstore project, which made it look a lot less involved than I thought, but that was about the extent of the work I managed to get done on Friday.

Relationship chart for my bookstore app.

Relationship chart for my bookstore app.

Today I’m going to work on the bowling kata in the morning and pair with Brandon at 1 to start working on the bookstore app. He said he would help me with the initial Devise stuff, which I think will be helpful. I don’t think Devise is hard, there’s just a lot of moving parts, and having someone who knows it really well will help. I’m still a little nervous about this app, I feel very unprepared, but I’m sure it’ll be fine and I’m just being paranoid.

What do I expect to learn…I think that there is probably some best practice that I’m not doing when it comes to starting new projects, and Brandon is great for showing those. Hopefully I’ll learn Devise to the point where I can use it again and not have to be walked through it. And I think today is the day I start figuring out Cucumber and Capybara. Moar testing frameworks!

Advertisements

SB apprenticeship: Day 33

Forget Battleship, Tic-tac-toe and bowling, I want to make an RPG!

Forget Battleship, Tic-tac-toe and bowling, I want to make an RPG!

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Yesterday I worked on the Agile Rails 4 book for most of the day again. I only have a chapter left! Well, assuming I don’t do the deployment chapter, which looks like it actually needs me to have a server I can deploy to, so I was planning to skip it. I guess I could put it on Heroku, but man, I had the worst luck with Heroku in code school. It never, ever worked for me. So maybe I’m a little prejudiced against deploying things…hm. Anyway, I’m going to finish that up this morning and then I think start on the Bowling Kata. I keep making all these games that I never actually play — Battleship, tic-tac-toe and now bowling! I should suggest that Brandon change the assignment to make a nice RPG, like Dungeons and Dragons. Wait…actually…can we do that? That sounds AWESOME! I wrote that kind of stream-of-consciousness, but now I actually want to try.

Anyway. First book, then bowling. Well, first book, then reading the Wikipedia page on how to keep score in bowling, then kata. Today I’m pairing with Brandon for two hours! I should figure out if he wants me to have a plan or something to work on or if he’s bringing something.

Today I expect to learn how bowling is scored. Man, I hate bowling. I’m not very good at most organized sports, but it makes me mad that I’m bad at bowling. It’s just throwing a ball down a greased wooden floor! How can it be so hard! Argh. Hopefully working on the kata will not be as frustrating as actual bowling.

SB Apprenticeship: Day 31

This is called foreshadowing...guess what I'm doing today?

This is called foreshadowing…guess what I’m doing today?

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Man, yesterday was a challenge. I spent literally the whole day on the Ruby Bits tutorial, and I said to Lindsey and David that I think it might have to be my kata for this week, just doing it over and over until I get it. I think it assumes a level of familiarity with Rails that I haven’t quite reached, so it was frustrating. It was the first tutorial that I’ve had to look at the hints on almost every question. I can see how useful the knowledge will be once I get it, though, and even Brandon said that some of the concepts they covered, like yield, took him a year or two to fully grasp.

Today, I was planning on doing the second Ruby Bits tutorial, but I’m not sure I’m up for it. David shared a link to The Cucumber Book, which I’m going to need for the book store, so I think I’ll work on the Agile book some more and then tackle Cucumber in the afternoon.

I expect to learn Cucumber! I don’t actually know anything about it, other than that it’s yet another testing framework, so there’s a lot to learn. How is it different than Rspec and Minitest? Why is it better? Is it better for some projects but not others?

SB apprenticeship: Day 30

W00t!

W00t!

Friday was the end of Week 6, which means we are halfway through the apprenticeship! Man, this has gone by quickly. I remain thrilled to be working at Smashing Boxes, where I am learning SO MUCH in such a supportive environment. When I was looking for jobs after TIY I couldn’t quite decide if I wanted to be working in an agency like SB, where you work on several different projects a year, each of which could be very different, or if I wanted to work for a single product company, where I could do a deep dive on a codebase. I can still see the appeal of both options, but watching how the people here work, I think this suits my nature better.

Weeks 7-9 are going to be more challenging than the previous weeks; the goal for the quarter is to make a bookstore where you can actually buy things. I have to learn Cucumber, yet another new testing framework, authentication with Devise and online payments with Stripe. I have to admit, I’m a bit intimidated. We talked a bit about Devise in code school, but I’ve never actually done anything with it. On top of the huge project, we have two more Codeschool courses to work through: Ruby Bits 1 and 2, the Bowling scorer kata  and a blog kata (hey, maybe that will motivate me to migrate my blog off WordPress!), plus reading Practical Object-Oriented Design in Ruby (all hail Sandi Metz!) and Refactoring: Ruby Edition. Busy busy!

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Friday I didn’t end up working on migrating and combining my website, blog and portfolio site after all. I decided to work some more on the Rails 4 book, since the bookstore I’m going to be building will use a lot of the stuff they cover. I also ended up doing the panel at TIY, which was really great. There were six women, and we had a nice discussion. The students asked a couple questions, which were all insigntful, and I think it went well. One of the students asked if, since we had all been in the humanities before becoming programmers, we ever felt like our employers were pushing us to kind of do less programming and more of the writing or whatever we had done before. That question was pretty thought-provoking for me; we have lots of task forces at SB that we are encouraged to sign up for, even as apprentices. I signed up for the blogging task force, mostly because I miss writing, and once my apprenticeship is over I’m not sure how encouraged I’ll be to keep this up. Also, I’m *good* at writing, much better than I currently am at coding, and sometimes it feels good to be reminded that I’m good at something. But now I’m wondering…should I be turning my back on writing? At least for now, certainly not forever, but should I spend my time working on things that I’m *not* good at, that are a challenge? I don’t think that anyone at SB is going to pigeonhole me as a writer rather than a coder just because I blog for them, but I am a coder now, and I want that to be the first thing they think of when they think about my work. On the other hand, blogging for SB means that I’ll be writing about tech stuff: projects and technologies and things I’m learning, so maybe it’s actually the best of both worlds? Man, I just don’t know. I think this is something that will be in the back of my head for a while.

Today! Today I think I’m going to work on Ruby Bits 1. I was talking to David last week and realized that I’m going about this all wrong. I’ve been working on the katas and challenges without doing the basic knowledge work of the books and tutorials first. I have three weeks to complete the work, taking the first couple days or so to work through the tutorials is really the smart way to do it. Kevin suggested this time-tracking app called Hours, it’s typically used by people who have to invoice out their time, but I’m finding that it’s useful to keep track of what I’m working on. Last week I spent almost 4 hours reading, 6 hours programming, and about 7.5 doing tutorials. I wish I could track something using multiple labels, for instance, tutorials are also programming, but it doesn’t work that way. Ah well. I’m also not sure what I did for the other 12 hours of the week, I guess I just forgot to set the tracking.

Last week's stats

Last week’s stats

I expect to learn more about the details of how to write Ruby! Ruby Bits 1 goes over expressions, methods and classes, classes, Active Support, modules and blocks. It should be a great refresher.

SB apprenticeship: Day 21

I don’t actually know the difference between repetitive stress injuries and carpal tunnel…

My wrist is making this weird kind of clicky noise when I twist it, and has been hurting lately, so it looks like it’s brace time again! Anyone have any suggestions for alleviating what might be the beginnings of RSI/carpal tunnel?

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Yesterday I basically spent the entire day working on the Gilded Rose kata, which I can’t link to because I forked a private repo and apparently didn’t save it correctly. Hm. I should figure that out. Anyway, I was quite proud of myself because I figured it out, and had code and tests and it was all lovely, and then I got to work this morning and Brandon told me that I was supposed to be working on the Rails stuff and he wasn’t going to look at the kata until I finished it.

Sigh.

So I guess I’m working on the Rails refactoring stuff today! It’s been a while since I’ve worked on Rails stuff, so this should be interesting.

I expect to learn that I have forgotten too much about Rails and feel bad about being lazy.

SB apprenticeship: Day 20

Working from home means I can make elaborate dinners!

Working from home means I can make elaborate dinners!

Due to some misunderstanding about my status as an apprentice, I have to work today. Happy Labor Day! I’m not actually upset or anything, we were given the option to either work today or make up the hours by working a couple hours extra each day for the rest of the week. As I told Brandon, we don’t have any plans for the holiday, and I’m probably just going to be sitting in front of my computer anyway; I may as well get paid for it! Working from home mostly means I can play with my kitties and make elaborate dinners that require multiple steps that, though short, I can’t do from the office. Today I’m making Oven-Roasted Chicken Shawarma and lemon risotto, using the lemons my friend brought me from San Francisco! Om nom nom.

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Friday I spent the entire afternoon working on the Gilded Rose kata. Derek, the apprentice who is ahead of us, sat with me for about two hours and helped me figure out how to do it, which was a tremendous help. I’m ending up rewriting the whole thing — tests and code — and making it neater. This may be a little more than is strictly expected, but I’m looking at it as kind of my big ‘let’s learn rspec’ exercise, since I did tic-tac-toe to apply for the apprenticeship and wasn’t very good at shoehorning tests in later.

We also had a meeting with two of the three mentors on Friday to chat about what we like and dislike about the apprenticeship, to raise any concerns  and give credit where credit was due. I honestly don’t really have any problems with the apprenticeship so far; I kind of wish Brandon had more time to do pairing, but I understand why he hasn’t. Now that he’s back in the office maybe that can happen more. The thing I like the most about the apprenticeship is definitely that they structured it so the apprentices aren’t competing with each other for a job at the end of the 12 weeks. They hired three apprentices with the expectation that at the end they’re going to hire three junior devs, and that has allowed us to be friends and work cooperatively. We all three come from very different backgrounds, and it’s been great learning and helping each other as we go.

Today I’m going to work some more on the gilded rose. I think Derek helped me to a solid place on Friday that I can work from and not need to ask for help, so I figured that would be good for working from home. If I get stuck I plan to work through some more of the Treehouse videos.

I expect to learn that I have great hubris expecting to not need any help with the gilded rose kata. 🙂 But hopefully not!

SB apprenticeship: Day 19

Seriously, what is this?

Seriously, what is this?

I am ok at building new projects from scratch. I’m not good, but we did a lot of that in code school, so I at least know where to start, and where to look for help, for the most part. But man, legacy code…what even is that. This quarter of the apprenticeship is focusing on refactoring, and one of the katas we have is the Gilded Rose. For this kata, we take a whole bunch of ugly code that is a method to update the inventory of a store based on the number of days the item has to sell by, and the quality of the item, which either increases or degrades daily.

I opened this file and literally said, “Whaaaaaaaaat…” It’s just a single method, with tons of nested if statements. I tried to read through it and still didn’t really understand what was going on, I ran the test suite, which didn’t help, I asked Brandon, but he’s super busy this week and hasn’t had the time to go back and refamiliarize himself with it. I even asked Kevin, who had basically the same reaction.

So…like, how does this refactoring work? Am I supposed to go through and rewrite the entire thing, making more methods for each category of item? Brandon mentioned that I had to add like seven lines of code, but I can’t even see where to add code to this. I looked online, and the solutions, like the link up there, are exactly the same as the code I have, so either I’m missing something big or they’re not actually posting their solutions? Sigh. This is what I’m going to tackle today. I don’t actually want anyone to tell me the solution, I just wanted to complain a bit.

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Yesterday was pretty much entirely spent learning Vim. Brandon came and installed Macvim (with a whole bunch of plugins) and iTerm because I apparently need a terminal emulator? I spent the afternoon doing the first three levels of VimAdventures, which is super cute but requires you to pay to play past that, and the VimTutor that comes with the editor. I also found a whole bunch of videos covering the basics, and Brandon suggested that I check out Vimcasts.org.  I will admit that using Vim, even as slowly and clumsily as I currently am, makes me feel like a l33t hax0r, which is pretty cool. I have an unironic love for the old 90s movie Hackers; last night I told Mason, my Ruby instructor from TIY that I was going to take up rollerblading and hack the Gibson next. 

Today I am going to work on Gilded Rose some more. The apprentice who was right ahead of us did that assignment, so I think I might pester him to get a hint of how to begin. If I get frustrated I’ll learn some more Vim.

I expect to learn some more ways of dealing with terrible legacy code! I know this code is deliberately bad, and with any luck I won’t have to work with anything quite so bad in my actual career, and that helps.