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 32

I made this!

I made this!

Yesterday Brandon and I had lunch and had a good conversation about how I’m doing. I told him that I feel like I’m not as far along as I should be, but he said he thought I was doing great. As everyone I know has said, and maybe someday I’ll actually listen, he told me I shouldn’t be comparing myself to the people around me. David’s an apprentice, sure, but he worked for a year at a shop doing Rails APIs. Brandon’s on the cusp of being able to call himself a Rails expert, but he’s been programming since he was 13. I haven’t even been doing this a year yet, I really ought to stop beating myself up for not knowing things. We also talked about pairing more, and now we have a set time for it — from 3-5 on Thursdays! I’m excited about that. It’s interesting, Brandon mentioned that one of the reasons he hasn’t paired much with me is because the knowledge gap is *so* big that it makes it frustrating for both of us — I’m too slow for him, he’s way too fast for me. He thinks that I may be his last apprentice, and I think he’s really sad about that.

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

Yesterday I spent the entire day working on the Agile Web Development with Rails 4 book. The book’s tutorial has a lot of parts that will be really useful for the upcoming Bookstore assignment — so far I’ve done sessions and Javascript/Jquery, and they also talk about authentication, emailing users, testing and I think they cover credit card payments at the end. It seems like there’s always something little I forget, like a . instead of an _, which gets pretty frustrating. I’ve gotten better about figuring out where my error is, though, and I think working through this project is helping me actually understand MVC at last. I can follow the trail of what the code is doing and where it’s supposed to go.

I think today I’m going to work more on the book. It’s a fine line sometimes, deciding when I should put the tutorials away and dive into my own code, but I think this is worth the slight delay. Yesterday Brandon mentioned that the timeline they set for the apprenticeship was basically completely arbitrary; 12 weeks just seemed like a good amount of time. While he said that he thinks I’m making good progress, if I need some extra time they’re cool with that. That was a relief, I was a little irrationally worried that they would kick me out of the building at 5:31 on the last day of the 12th week if I hadn’t finished everything. Yes, I know that is a stupid thing to worry about. No, it didn’t stop me. Sigh.

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 29

Today is Friday! Yaaay! This morning I get to go sit on a panel at TIY about diversity and unconscious bias in tech. I’m wearing my SB t-shirt and everything, heh. Although my SB t-shirt is also one of the things I plan on pointing out — I personally haven’t experienced a lot of harassment or sexism in tech, but there are little things, microaggressions. My t-shirt, for example, doesn’t fit me right because SB doesn’t offer them in fitted/women’s style. It’s a little thing, but I like wearing t-shirts for places I’ve visited or value, and I can’t really wear this shirt because it’s too big. It’s little, but little things can build up. I’ve been thinking all week of a conversation I had with Joe earlier this week — apparently Brandon told him that my boyfriend does my homework for me. I know Brandon, and I’m pretty sure that he was joking, but it’s still hurtful to not have my accomplishments acknowledged. I’m looking forward to this panel, though. I hope that my examples are the worst I hear, but I’m afraid they won’t be.

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

Yesterday I paired with Brandon on my todo app. Since I didn’t understand testing, I had written the code and used Postman to check to see if it worked, but Brandon is a big proponent of TDD, especially when it comes to making APIs, so he made me throw out my code and do it again, this time writing tests first. We kind of ping-pong paired, he wrote most of the tests and then I wrote the code to make them pass. It was fun, but I’m going to have to look over his tests, he did some things that are unfamiliar to me.

Reload and merge and hashrockets, oh my!

Reload and merge and hashrockets, oh my!

Today I have the panel, then it’s Labs Day! I think I might see if I can get someone to help me pull this site, my website and my Github.io portfolio site together into one big thing. I was looking at the WordPress FAQs and it seems fairly easy to pull my content off? But who knows.

Today I expect to learn that all my sites are terribly coded (I didn’t make any of them from scratch), that they’re incompatible and I should just burn it down and start again. 🙂

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.

SB apprenticeship: Day 26

I am a feminist. I know this doesn’t come as a surprise to anyone who has really ever met me, but it informs my work and politics in a very real way. One of the things I want to do in the tech world is to make it more welcoming to women and girls, and to show them that, despite way too many reports of horrific sexism in the tech world, it’s getting better, and the way to keep making it better is to keep adding women. That’s one reason why I talk so much about the awesomeness of SB; because as important as it is to point out sexism, it’s equally important to show off the offices that are doing it right. I have also surrounded myself with people who are at least as feminist as I am, and I sometimes take that for granted in normal conversations.

Hence the conversation I had last night with one of the senior devs at my boyfriend’s new office, where I basically told him that the company’s hiring practices were discriminatory toward women. Oops. I’m hopeful that my suggestions and the links I showed him made an impression, or that he read them at all (if you’re in tech or interested in tech and feminism, you should be reading Model View Culture, specifically the articles about how looking for a job in tech is a full-time job in itself that privileges people with time and money and the one about how technical interviews are terrible). I was worried after the conversation, like, I know I’m a crazy feminist, but I’m in the south now and maybe I should be a little less militant about it, or at the very least maybe I shouldn’t accost Kevin’s brand new coworkers at a work function, but Kevin says he’s not worried. If they don’t like my brand of activism, they probably won’t like his either, and maybe it’s best to get that out in the open early.

Enough heavy stuff, here's a dog wearing a Smashing Boxes onesie.

Enough heavy stuff, here’s a dog wearing a Smashing Boxes onesie.

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

Anyway! Yesterday, aside from possibly offending Kevin’s new coworkers, I did actually work! I started out reading a chapter of The Pragmatic Programmer. I’m finding that reading it a chapter at a time is helping me absorb the info; the book isn’t difficult, but they throw a lot of ideas at you. After that I worked on the Rails APP for a bit and then ended up finishing the day by reading the chapter on Rspec in The Rails 4 Way.

Today I think is more of the same! I’m slowly making progress on the API stuff. As usual, I’m making my life way harder than it needs to be; David helped me a little yesterday and clarified the assignment. It’s still a good amount of work, but way less than I thought at first. Today is also a social day, we’re having the monthly backend lunch and then after work there’s a Ruby meetup that I’m planning to attend.

Today I expect to learn how to write tests in Rspec for my model, then write the code to interact with the API. Wish me luck!

SB apprenticeship: Day 25

Another office dog! This one belongs to Joe.

Another office dog! This one belongs to Joe.

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

Friday we met with the PM/PD team and learned about the process of figuring out the steps that will be needed to make a project. It was interesting, and they recommended a book that I think I’ll check out: User Story Mapping by Jeff Patton. After that I spent most of the rest of the afternoon finishing up the Rails API Code School course.

Today I think I’m going to start attempting to figure out the API project. I don’t know that the Code School course really helped me feel very capable, but hopefully it’ll be one of those situations where once I get started the pieces fall into place.

I expect to learn to to write tests and code to make a Rails API work!

SB apprenticeship: Day 24

I still think of programming in these terms sometimes...

I still think of programming in these terms sometimes…

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

Yesterday I learned that you are apparently SUUUUUUUPER not supposed to install Node from their website. I was trying to make things work and got to the point where even `sudo` wasn’t forcing stuff to install. Brandon had to go in and uninstall Node and do all sorts of crazy stuff to make it work on my computer. So, lesson learned: I have Homebrew for a reason. The assignment I’m working on involves writing an API, which is apparently fairly easy once you get the hang of it, but from the outside looks really hard. I’ve been going through the Code School Surviving APIs with Rails course, which makes sense, but I have to go back and use the slides every time in order to answer the challenges, so I feel like I’m not retaining anything. I think once I start actually hacking on it it’ll all make more sense. Also, one of my fellow apprentice’s former jobs was writing Rails APIs, so if I get stuck I have an awesome resource sitting right beside me!

Today is Friday, so it’s labs day! We have an apprentice meeting with the product managers/director team today, and they’re going to take an idea we have and do the whole storymapping thing so we can see how it works. I like these sessions; I think once we all get hired as juniors it’ll give us an advantage to know how the systems work. I’m also planning to finish the API code school course. My time block thing has pretty much entirely gone out the window. Maybe I’ll plan to spend Fridays doing reading and tutorials instead of attempting to block off time every day?

I expect that I’ll learn more about how product managers and directors work together with engineers to get products that clients are happy with!