SB Apprenticeship: Day 64

In completely unrelated news, I have finally collected all the cats from Neko Atsume! This game is silly, adorable and completely addictive.

In completely unrelated news, I have finally collected all the cats from Neko Atsume! This game is silly, adorable and completely addictive.

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

It’s been extremely hard to focus on work stuff knowing that as of Wednesday I won’t be here anymore. Yesterday I looked at my bookstore code for a bit and then finished editing my resume and put it and some more recent work on my portfolio site. Brandon mentioned that he thinks I would do well at a product shop where I can do a deep dive into a pre-existing code base and there will be people around who can help me get up to speed, so I think that’s where I’m going to focus my efforts.

I think today I’m going to work on some Code School/Treehouse stuff. It’s been a while, so a refresher would be nice. I’ll still have access to the Code School stuff for a little while after I leave SB, so I may as well get as much out of it as I can!

Advertisements

SB Apprenticeship: Day 52

It’s Smashing Boxes’ 5th birthday! We’re having a field day this afternoon! I’m mostly hoping there will be cake. 🙂

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

Yesterday I got a lot done: I finally got the cart to show up on the homepage and populate with the number of items that were in it, Brandon and I fixed a wonky thing that was allowing me to save negative books as long as I had copies of that book already in my cart, I figured out how to make case insensitive search work (add a freaking I in front of LIKE in postgreSQL, sigh) and we determined that the acceptance criteria for the bookstore doesn’t currently require me to be able to increment books in the cart, so I’m just not going to do that. Apparently after I finish Brandon’s going to challenge me to add one more feature, which might be the incrementing thing, but I’m going to worry about that when it happens.

We also determined that I have somehow not managed to retain any of the things I learned about hashes. I know the basics about them, but when it comes time to manipulate them I just never can remember how. Brandon is going to loan me his copy of Eloquent Ruby and wants me to read at least the first half. He mentioned that my pairing tour is at least partly a judgement of my skills; the pairings with iOS, Front End and Android people won’t be, obviously, but when I pair with Brandon, Patrick, Joe or the other back end folks, they’ll be watching and have the ability to give me a thumbs down when it comes time to decide whether or not they’re going to hire me. Treehouse has a course on hashes that I’m going to work on this weekend too, I think. This is really basic stuff that I need to understand. I got Kevin to explain it to me yesterday, and it made sense, so either there’s some sort of disconnect between having it explained and actually doing it, or the third time’s the charm and it finally just actually clicked.

So, realistically speaking, I’m not going to get a lot done today: we have our backend standup at 9:30, the company-wide standup at noon and then field day, but I’m going to add the list of things I need to do in order to have it in one place that isn’t a raggedy index card.

  • Learn hashes
  • Add a page to show book details
  • Cucumber tests
  • Add logout
  • Remove the number box for quantity
  • Add the Carrierwave gem? Brandon said it would be super impressive if I could get it working.
  • Make sure and learn about PCI compliance when I add Stripe to my bookstore. Apparently the documentation is so good that it’s easy to just install it with no actual understanding of what’s happening. I guess good documentation is a double-edged sword.

Today I expect to remember how to add a logout button and change a number field to a text so I don’t have to worry about the incrementing stuff yet. I feel like those are two things I can definitely get done this morning.

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 28

The shirts are here! I got mine on Monday, and yesterday there were easily a dozen people walking around ATC wearing theirs. Man, I can't wait to tell Time Warner to stuff it.

The shirts are here! I got mine on Monday, and yesterday there were easily a dozen people walking around ATC wearing theirs. Man, I can’t wait to tell Time Warner to stuff it.

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

Yesterday I ended up spending most of the day on the Agile Web Development with Rails 4 book; I didn’t actually realize it was a great big tutorial. I think that’s why it took me so long to pick up, 434 pages is lot when you’re reading about Rails. The tutorial is great, though! I haven’t hit anything totally unfamiliar, so it’s nice to know that I haven’t *forgotten* Rails, it’s more that that knowledge got buried under other stuff in the five months since code school. I may work on that a bit more this morning before Brandon and I get together to talk about the API stuff. Speaking of the API stuff, I got Kevin to explain some of it to me last night, and I think it’s making a bit more sense. He doesn’t know Rspec at all, though (finally a thing he doesn’t know!) so I didn’t write any tests, instead using an app we discovered at TIY, Postman, to run the code and make sure that I got the correct responses.

Today I think I’m going to work on the Rails 4 book until around 1, when Brandon and I are going to work on the API stuff. While I think I get it more than before, there’s still a lot going on that I don’t get, and testing is just basically a black box to me. I downloaded the slides from the Code School API course and have been trying to use them as a guide, but I’m never really sure what’s actually relevant and what’s overkill. For instance: are we doing integration testing? Or am I only specifically testing the code I wrote, which is in the controller and model? *Is* that integration testing? I understand the value of TDD, but the process itself is still vague. I think part of that is because the code itself is still vague, so hopefully someday I’ll have a big “AH HA!” moment and it will be glorious.

I expect to learn how to write tests for APIs, probably the difference between integration tests and model/controller tests and how the whole thing works together to form a cohesive whole.

SB apprenticeship: Day 27

Huh?

Huh?

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

Yesterday I learned that there is a difference between installing the “rspec” gem and the “rspec-rails” gem, and it’s a gigantic pain to go back and fix having installed the wrong one. Sigh. Also, I have apparently completely forgotten how to Rails, I was fighting with something and asked Ian for help, and it turned out that I hadn’t actually made a database. It’s pretty disheartening to realize that I’ve forgotten the very basic stuff like that, but I guess it means that Kevin was right when he pestered me to write code every day while I was unemployed. Damn you, hindsight!

Today all the mentors are out of the office; Josh is on vacation, Ian has an appointment and is working from home, and Wednesday is always Brandon’s wfh day. I have no real idea of what I’m doing with this Rails API stuff, so I think I’m going to take the day and read Agile Web Development with Rails 4 and work on Code School/Treehouse stuff. I feel a little guilty doing this stuff on company time, but I guess they’re paying me to learn and I should take advantage of it! I’ve been hesitant to ask Brandon for help too often, he’s so busy with other stuff all the time, but I finally just sucked it up and asked him to block off an hour or so, and he sent me an invite to meet tomorrow for two hours. It actually hadn’t occurred to me to literally invite him to help me at specific times, but it makes sense now that he’s done it. At any rate, yay being assertive and getting help!

In the conversation with Brandon I mentioned that I think I’m going to take today as a reading and tutorial day, and he said he thought that was a good idea. So I think I’ll read the Agile book and maybe try to go through the Code School Rails course again. Maybe it’s gotten less buggy since the last time I tried. If not, there’s always the Treehouse ones, or I could work on the Hartl book some more, I haven’t touched that one in ages.

Hopefully, today will be a reviewing day and not a learning day, but I’m sure it’ll be valuable either way.

Mental exhaustion

It’s weird, since I started code school I’ve noticed that, at the end of the day, I am tired in a way I am thoroughly unused to. It’s hard to explain, but my brain is foggy in a way that it doesn’t get when I’m doing more physical work. When I go to bed, I am out pretty much as soon as my head hits the pillow.

This is actually kind of gratifying. I like to think of my brain doing little brainy calisthenics, deep knee bends and jumping jacks. I’m stretching it in ways it hasn’t been stretched before, which means that, even though this week has largely been an ongoing exercise in frustration, I must be learning, or else why would my brain be so tired?

I don’t think I realized how firmly I had been stuck in my comfort zone.

Code school: day 1

Well, today is it. Today I give up on my liberal arts education and dreams and turn down a more practical path. Although I remain hopeful that I will be able to use my so-called “soft” skills once I find a job. Every company needs someone who can write, right?

That actually sounded a lot more pessimistic than I’m currently feeling. Learning to program does feel like a huge move away from the path I thought I would follow, but I put a lot of thought into the decision, and it makes a lot of sense for me.

So: day 1. Aside from forgetting my wallet, ritalin and water bottle at home, it went pretty well. Our first assignment was to write out how to play Battleship, in “code-y” language. It was strangely difficult to write down directions in plain english and then go through and translate them to something approximating code. Should the people playing be player_1 and player_2 or attacking_player and defending_player? How do I explain that each ship requires a different number of hits, and all five ships have to be sunk before you win? It would be far easier if the win case was simply “Hit the other player 17 times.” I’ve never paid attention to things like this before, and it’s already making my programmer friends’ mental processes make more sense to me. This weekend’s long assignment will be to actually code it, but this assignment made me realize how I need to change my attention to detail. It’s incredibly frustrating to have something not work and discover, 45 minutes later, that’s it’s solely because you have a space in the wrong place. I’m used to writing, where stuff like that is easily corrected and doesn’t really impact anything, but clearly those days are gone.

The Iron Yard staff are super supportive and enthusiastic, and they made a big deal of how many of the other students are total newbies to programming. I know that’s all over their promotional material, but it’s hard not to shake the feeling that I was going to be the only one who didn’t know what they were doing.

I am going to try really hard to update this continually as I go through this course. In addition to wishing I had some kind of resource like this when I was making my decision and attempting to prepare, I think it will be interesting to look back on as a personal journal. As such, I am going to try to list my fears and triumphs (and maybe failures, if that would be valuable) and moods as I go.

Mood: cautiously optimistic
Fears: That I’m too stupid to finish the class
Triumphs: I feel confident that my work today was good
Failures: None yet!