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 17

This is my life now…

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

Yesterday was frustrating, I started three assignments, struggled for a while and then asked Brandon for help, only to have him be like, “Oh yeah, that’s really hard.” On the one hand, it’s good to know that these are actually hard, it’s not that I’m just dumb or whatever, but on the other, having everything you start end with frustration is hard. The assignments for this quarter have ramped up pretty sharply. I think one of the hardest things for me about programming is accepting that its ok to ask questions and that no one thinks I’m stupid. I got a lot of help with the tic-tac-toe game that I submitted to apply for the apprenticeship, and so I’m constantly worried that I’ve somehow committed fraud, and that any moment now Brandon and the rest of the people at Smashing Boxes are going to realize it and kick me out of the building, after standing in a line to point and laugh at me. I’m aware that this is also pretty much the dictionary definition of imposter syndrome. The way this plays out, though, is that I ask the other apprentices for help, or I text my boyfriend and ask him for help, when what I really should be doing is asking Brandon, since he’s my mentor and all. I’m pretty sure that no one’s going to point and laugh at me, but my head is dumb sometimes.

Today I’m going to work some more on the Roman Numeral with Math and the Gilded Rose katas, and then do some more of the Rails Treehouse course.

I expect that I’ll make some progress on the katas, but I’m trying to be realistic and ok with the fact that I may not get them done. Slow and steady wins the race!

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.

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!