SB Apprenticeship: Day 34

I finished it!

I finished it!

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

Yaay, I finished the Agile Web Dev with Rails 4 book tutorial! I skipped the last two chapters, because I didn’t want to bother with internationalization and deploying to a server. I was right yesterday, they wanted me to actually pay for instances on something like AWS, and I just don’t care that much about that tutorial. It was pretty rewarding to finish it, though. The rest of the book is a big deep dive into the various part of rails, which isn’t really something that you can read straight through, but it is super informative.

Today Brandon and I are going to pair and get started on the bookstore app. I was talking to Patrick about how I was actually pretty nervous about it because it’s such a huge project, and he had some good advice: instead of thinking about the whole intimidating project, break it up into small sections and think about those. I have a general tendency to miss the trees for the forest, so this is valuable advice. Today we’re going to set up the rails project and getting the authentication working. I guess it’s finally time for me to learn Devise! Yesterday we did a little bit of mapping on paper, I’m going to spend the morning filling that out.

Today I expect to learn Devise! We sort of covered Devise at TIY, but it was at the very end, taught by the TA and irrelevant to my final project, so I didn’t pay the attention that I should have. Time to make up for that!

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 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 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!

SB apprenticeship: Day 22

I read an article in the New York Times yesterday that was talking about how information sharing is important in an organization, and asking for advice or help actually makes coworkers think you’re smarter. I share this in order to make my mentor feel better about my constantly asking him questions about how to do things. 🙂

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

Yesterday I spent most of the day working on the rails refactor assignment. My goal of breaking up the day into chunks of reading, tutorials, katas and assignments has not really been met at all. Alas. The rails refactor was super frustrating for a while, but one of my fellow apprentices got me started, and after that it went pretty well. I realized that one of my assignments for TIY was very similar to what they wanted for this, so I looked it up and used it as a template, and that worked! I need to better internalize that it’s ok to ask for help and look up old code; I still have it in my head that I’m really bad at coding because I feel like I should just *know* this stuff already.

Wait, you mean people who have been doing this for years and years feel the same way sometimes?!

Wait, you mean people who have been doing this for years and years feel the same way sometimes?!

Last night we also had a whole conversation on Slack about how Github/git is hard and it’s way too easy to mess things up. It’s really nice to be surrounded by people who are both kind and knowledgeable!

Today I’m going to hopefully finish up the rails refactor assignment and start working on the TODO app. Also, the big Apple fall event is this afternoon, and at least one other dev is planning on watching it, so I may join them. There are some interesting potential hardware upgrades, the new iPhone and iOS 9 (that will allow ad blocking, yay!) and last night Kevin noticed that the dev website newly listed the Apple TV as a thing you could make apps for. I’m not an Apple dev, and I don’t think I have a lot of interest in moving to that world (it would be weird to work in the same field as my boyfriend, right? But on the other hand, I could get a lot of help with iOS stuff…I dunno. Right now I’m focusing on Ruby on Rails, but who knows what the future might hold.) Perhaps I will watch the announcement while reading Pragmatic Programmer.

Today I expect to learn how to refactor my views!

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 15

A excerpt from Close to the Machine, by Ellen Ullman, written 17 years ago but strangely prescient.

A excerpt from Close to the Machine, by Ellen Ullman, written 17 years ago but strangely prescient.

I think my mentor’s back from his cross-country drive today! Now I can stop pestering everyone else!

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

I really need to remember to take notes or start a blog post on Friday afternoon, I have no idea what I did. I think I finished the TDD book?

We had a Labs Showcase, so everyone could show off the projects they’ve been working on on Fridays. It was really interesting, everything from a new tool for scripting to the latest version of a mural that Meredith is painting to the preliminary plans for a laser harp (!) that Brian wants to build. Brian needs some help with the physical stuff for his harp and I volunteered; I’ve missed getting my hands dirty like I did making the art car. Speaking of the art car, it’s Burning Man week, and I’m feeling slightly regretful at not being out there getting dusty. It’s weird when lots of people posting frantically on Facebook makes you nostalgic! Ah well. Maybe next year.

Today begins the second quarter of the apprenticeship! For this part we’re getting more into Rails, doing new katas and reading The Pragmatic Programmer and The Clean Coder. My ex used to talk a lot about Pragmatic Programmer, so I’m looking forward to digging into that and discovering what he loved about it. So far I’m really enjoying this apprenticeship, Smashing Boxes is a great company that is really supportive. Everyone has been really giving of their time and expertise, and it’s been super interesting to see how a real shop works. Plus there’s just such a great culture here, everyone is friendly, and while there’s obviously a lot of work being done, there’s also a lot of joking around on Slack. I can make jokes and ask questions without worrying that people are going to think I’m dumb, or judge my programming skill based on my gender. There’s an expectation that, assuming I don’t screw anything up, we’re all going to be hired as junior devs after we work through the apprenticeship curriculum, and being here and seeing how everyone works has made me even more determined to achieve that. Man, time’s flown, though. Three weeks!

Today I think I’m going to work on some of the online courses that are recommended for this quarter: Rails for Zombies 1 and 2, and Surviving APIs with Rails. I think it’ll be a good refresher for the stuff I learned at TIY, and will be a good starting point for the rest of the assignments.

Ruby: For newbies, by newbies

I keep thinking that what I need to do, while I’m still new and ignorant, is to write the kind of guide to Ruby and Rails that I wish I had. I think there’s a certain level of ignorance where you kinda realize what you don’t know, and what you wish you had, but you still feel like you can do something like that. Know what I mean? I think the problem with a lot of the Ruby tutorials that are available online are written by folks who are looking back and thinking, “This is what a new developer *needs* to know in order to be successful.” And they may be right, but they’ve forgotten that feeling of being utterly lost, so it doesn’t occur to them to, like, maybe specify when you’re moving from working on the command line to working in the project on your text editor.

And sure, maybe that’s stupid, and someone who has been doing this for long enough to feel like they have the expertise to write a book has forgotten that once, long ago, they needed that hint, but right now *I* need that hint, and when a tutorial doesn’t include it it’s incredibly frustrating.

So, maybe I should think about doing this. You know, in my copious amounts of spare time.