SB apprenticeship: Day 18

Luckily, someone warned me that this was alcoholic before I drank a big delicious glass and went to meet my boyfriend's parents for the first time drunk. *whew!*

Luckily, someone warned me that this was alcoholic before I drank a big delicious glass and went to meet my boyfriend’s parents for the first time drunk. *whew!*

I’m still getting used to this whole ability to drink (responsibly!) at work thing. Last week we had cider, and as I settled in to listen to people present their labs projects I kept expecting someone to take me aside and gravely tell me that the taps are just for show, and drinking at work is wrong, and they’ll have to let me go now. This is a different work environment than any I’ve ever had, and it’s really great. Yesterday one of the women messaged me on Slack and was like, “Hey, I think we should be friends. Let’s do that.” I’m not sure if it’s just kind of inherent to tech/startups, or because everyone’s relatively young, or if they select carefully for personality, but it’s awesome, and every day I’m glad to come in to the office.

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

I’ve been trying to organize my day into bite-size chunks, so I spend ~an hour on my kata, ~2 hours reading, ~2 hours on online tutorials and ~2-3 hours on the assignments. That ensures that I’m working on all the various parts I’m supposed to get done during the apprenticeship, gives me some structure and also gives me a stopping point when I’m frustrated. Yesterday it worked fairly well, but I still mostly feel like I’m hacking my way through the jungle with a butter knife.

Brandon just told me that today we’re going to pair on the Roman Numeral kata as a way to teach me Vim. Eep! I think I’ve build Vim up into this hugely intimidating thing that it isn’t actually. I’m looking forward to learning it better. One of my friends had a great way of putting it:

“I feel like learning how to use vi is like learning how to play chess. You could learn the basic “rules of the game” in an afternoon, or you could devote a lifetime of practice to becoming a grandmaster. Most people never go very far beyond the rudimentary level, with minimal costs to overall quality of life.”

Today I expect to learn Vim! Well, the rudiments of Vim, at least. I’m also going to try really hard to stick to my schedule and hit everything on my itinerary at least once.

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!

SB apprenticeship: Day 14

I would actually really like to see this mashup.

I would actually really like to see this mashup.

I don’t have a lot to say today, so here’s a silly screwup from the PlayStation store from last night.

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

Yesterday I worked through a lot of the Test-Driven Development book. I struggled for a while with this book; the code examples are written in Java and Python, and so I would spend more time trying to figure out what the code was doing than learning about the tests, but I finally hit a couple chapters that were more explanation than code, and that was really helpful.I like this book, but I think I’m going to pick up Rails 4 Test Prescriptions and see if maybe this makes more sense with code that is more familiar to me.

Today is labs day! Although I’m not really working on a project, per se, so for me it’s work on tutorials day! W00t!

I’ve been trying to go back through some of the tutorials I did before TIY, I feel sometimes like I didn’t actually retain any information from code school and I’m just like flailing at the keyboard and faking it really well. Objectively I know that isn’t true, but imposter syndrome is definitely a thing.

SB apprenticeship: Day 13

Isis Winger, an engineer in San Francisco, started the #ilooklikeanengineer Twitter campaign after getting negative responses to her appearance in another set of ads for her work.

Isis Winger, an engineer in San Francisco, started the #ilooklikeanengineer Twitter campaign after getting negative responses to her appearance in another set of ads for her work.

A friend recently sent me a link to an Indiegogo campaign to help the #ilooklikeanengineer folks put up a billboard representing more women and minorities in tech. I have to wait until payday to support them, but I was thinking of the rewards and which I would choose, and I like t-shirts, and stickers are cool too, but would I really wear a t-shirt that says “I look like an engineer” because, I mean, *am* I actually an engineer? And that kind of stopped me short, because I’m pretty comfortable calling myself a ‘developer,’ I’m slooooowly becoming ok with the label ‘programmer’, but ‘engineer’…well, those are people in hard hats, right? Who went to school for a long time and use lots of math. They make things, physical things, and huh, why is the mental image that pops up in my head of a white man? I can’t quite tell if this personal rejection of the label engineer is just another insidious appearance of our old friend imposter syndrome, or if the definition I have of what an engineer is and does is legitimately out of the purview of what I am learning to do. What do you folks think?

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

Yesterday I was doing pretty well until two things completely derailed my concentration: some asshole murdered two journalists in Virginia and used social media as a very effective way of publicizing it, and WordPress decided that it didn’t want me to be able to put tables in my post. I had intended to have a little table with the Vim and terminal commands I learned in the course of finishing the SSH assignment: the command, and then a brief description of what it did. Unfortunately, nothing I tried worked, and my table remained all mangled. I fell down the rabbit hole of attempting to add a plugin, only to discover that WordPress.COM won’t let you install plugins, I need to use WordPress.ORG, and also download the entire codebase of my blog and host it myself. Which, I’ll admit, is less intimidating than it was when I first started this blog years ago, but still. WTF. Would it be so hard to just explain that difference before I spent two house fighting this stupid thing? Anyway, that fractured my attention span for longer than it should have, and as a result, I ended up attempting the Roman Numeral kata and messing up so much that I just worked on the Treehouse stuff for the afternoon. I always used to joke that journalism was the perfect job for someone as ADD as I can be sometimes, but I am finding that it really is sometimes challenging for me to be able to put my head down and code for hours on end. Remembering to take my ritalin helps, and having a really interesting problem or lesson also helps, but it’s a thing I have to be really aware of.

Today I’m going to continue working on writing tests for my tic-tac-toe; I’m going to try to finish the Test-Driven Development book and Git Real 2 this week as well. Friday will be the end of my third week here! Man, the time has flown.

SB apprenticeship: Day 11

Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.

One of the interesting things about learning how to program is how much some of the other things I’m into make sense now. For instance, I’ve been reading XKCD for years, but honestly only understanding about a third to a half of them. The jokes about math or programming mostly went over my head, unless they were visual gags like the ‘compiling‘ one. When the comic above came out, in 2008, I not only had no idea what vim, emacs, ed or cat were, I didn’t even know what they were referencing. There’s nothing in that comic to explain what an editor is, or an IDE, or what the difference was, or why they were important. Which, of course, makes sense, Randall Munroe is a programmer and this is a comic for that audience. Also, to quote E.B. White, “Explaining a joke is like dissecting a frog. You understand it better, but the frog dies in the process.” But since I started learning to program, people will link to old comics and I find myself appreciating the humor in an entirely different way, and that is super cool.

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

Yesterday I worked on the Roman Numeral kata for the second time, and actually finished it! The first time I got super frustrated because nothing I was trying was making sense, so Brandon suggested that I work on Coin Changer some more. In one of her blog posts, Lindsey posted a link to a woman who worked through the kata in a way that really made sense to me, so I used that as a reference and managed to complete it. I was feeling pretty good about that, so I worked on adding tests to my 4×4 tic tac toe with Jordan for a bit, and then decided to tackle the next challenge: learning how to SSH into a server and post some static content. That…was a little less successful. The page describing the assignment was out of date, so I ended up needing Josh to sit with me for a bit and walk me though the terminal commands to get started, and just as I was nearing the end I discovered that using nginx to serve up an HTML file on a server required me to know Vim. Viiiiiiim….so daunting. (But see, that comic at the top was totally relevant!) Vim is an editor that I’ve heard is super awesome. Once you get the hang of it, it’s all keyboard commands to do what you want. It’s powerful and widely used…and has a learning curve roughly the size of Mt. Everest. The cheat sheet I found and printed out is seven pages long. Sigh. Still, I’ve known this day would come, and honestly I’m looking forward to learning Vim. I’m just a little nervous, is all.

Today I’m going to work on the SSH stuff. I’m not sure how much Vim I’ll actually need to know to get through it, but I have my cheat sheet in hand and am feeling ambitious. Also, yesterday I rewrote the documentation for the assignment and did a pull request for it. Ian is taking a look at it now, so if I need to make any corrections or add anything before it goes live I’ll do that.

I expect to learn enough Vim to be able to put a static HTML page on a server using SSH. Exciting!

SB apprenticeship: Day 10

Fridays are Pax days! Here he's helping David code.

Fridays are Pax days! Here he’s helping David code.

In our growth engineering meeting Friday we learned about SEO, one of the important practices of which is not duplicating content. So I think that means I should come up with different headlines for my blog posts, since the only thing that changes is the number of the day. Sadly, I have always been terrible at headlines (the advantage of being a reporter is that usually editors come up with headlines based on space and other editorial considerations. I never had to get good at them.) so this may be a work in progress.

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

I didn’t get a lot of work done Friday: we had the backend standup, then the growth engineering meeting, then the company standup, then lunch, then Ian showed a bunch of us how to do a simple project in Swift and Xcode, then we apprentices met with our mentors to discuss whether we should switch from Code School to Treehouse for online lessons. After that I decided to play with Treehouse some, so I could have an informed opinion. My only complaint so far is that Treehouse makes you follow a track, so I had to spend 10 minutes learning very basic Ruby things. As far as complaints so, though, that’s pretty minor.

Today I plan to start working on the Roman Numeral kata, then Jordan, who was in my TIY cohort and who finished the apprentice program right before I started, is going to help me go over some tests for my tic-tac-toe. I think this week I’m going to start working on the SSH & Webservers challenge also, so I can keep to the schedule they suggested for us.

Today I expect to learn how to do the Roman Numerals kata. I tried it last week, but got really confused, so Brandon suggested I go back to Coin Changer and make sure I really had that down.

SB apprenticeship: Day 7

There's a set of giant Durham chess at the American Tobacco Campus!

There’s a set of giant Durham chess at the American Tobacco Campus!

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

Yesterday Brandon and I went over my coin changer kata once again, this time completely without peeking at previous versions. I think I use the other ones as a crutch, so it’s kind of disheartening when I go to do it and can’t remember that I want to have “`it “does this code” do“` rather than “`if “does this code” do“` even though I’ve been doing this for a week now. I really just want the Matrix stuff to be available already. Download all the code knowledge! Doing it that way did seem to help me cement some of it, I think. Guess we’ll find out when I do the kata again!

Today I think I figured out how to implement the depth limit search into my minimax code for my 4×4 tic-tac-toe, so I’m going to mess with that some more. I’m not sure how good programmers are able to look at other people’s code solutions and see how it fits in with their different code. I can look at examples all day, but when I try to relate it to my own code it’s just a confusing mess. Hopefully that will come with experience.

I expect to learn how the depth limiting works in my code! After that I’m going to fix bugs and figure out rspec tests for my tic-tac-toe.

SB apprenticeship: Day 4

Friday friday! Fridays are interesting day at Smashing Boxes, everyone spends the afternoon working on what they call Smashing Labs. This is a time for people to work on personal projects that may or may not be work-related — you could learn Swift, or hack on a project or add features to the Spotify list that plays over the office’s sound system. I don’t really have any projects yet, but I’m looking forward to seeing what everyone else is up to!

SB's Senior Growth Strategist brought her dog in yesterday! Piper was popular with all the apprentices. (And I like alliteration.)

SB’s Senior Growth Strategist brought her dog in yesterday! Piper was popular with all the apprentices. (And I like alliteration.)

And now, with no further ado, today’s questions!

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

Yesterday Brandon went over my kata and wrote tests for it like he was just writing a grocery list. I know that that level of familiarity will come to me with time, but it was impressive watching him just tear through. Watching him made some things that I wasn’t quite grasping in concept click, so I think today’s kata will be easier.

Today I am going to do the coin_changer kata one more time, and then we participate in a training sessions with the Project Management team. I don’t really understand what a Project Manager does, so I’m looking forward to learning more about how SB works. After that it’s labs time! I’ll probably read more of the TDD book after wandering around a bit and seeing what people are working on. I may spend some time going back over some Ruby tutorials, I have a probably irrational fear that I’ve already forgotten everything I’ve learned at TIY.

I expect to learn what project managers do, how they fit into the organization and how I’ll work with them once I’m hired as a junior dev.

SB apprenticeship: Day 2

Tools of the trade.

Tools of the trade.

Urrgggg, I am dragging this morning. Kevin helped me refactor yesterday’s kata at midnight, which apparently woke my brain up from its ‘coding is work’ haze, and it took me forever to get to sleep after that. Fortunately, I have caffeine!

Today’s questions:

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

Yesterday I learned the basics of how Smashing Boxes works, and attended a really interesting lecture by Sandi Metz called Nothing Is Something. She presented it at RailsConf also, and I think I understood more the second time, but it’s still going to be the type of lecture that I go back and listen to periodically as my understanding of Rails and Ruby grows. I think one of my frustrations with learning programming is that I’m surrounded by friends who have been doing this since they were kids. I have to internalize the fact that I can’t compare myself to them, I have to recognize that I’ve been doing this for less than a year and measure my accomplishments on that scale. Still, it’s hard, when Kevin just effortlessly refactors my code into like three lines and I’m left studying it. He’s an iOS dev, he doesn’t even use Ruby! *grump*

Today I am going to refactor my kata from yesterday and add a test suite. In order to do that, I expect to learn Rspec! Smashing Boxes added me to their Code School group, so I can take all the classes for free! I’ve heard really good things about the site, and I enjoyed the free lessons that I was able to do, so I’m looking forward to digging in.

I changed one of my login phrases to “you are a programmer” this morning. I’ve read about how repeating positive affirmations can help you maintain a good attitude, and help prevent frustration, so I figured it was worth a try.

Smashing Boxes apprenticeship: Day 1

Yep, time to dust off this old blog once again. Writing a daily reflection is actually a requirement for this apprenticeship, so in theory I’ll actually stick to it this time!

books

Smashing Boxes gave me a whole bunch of books to help me learn the core concepts of programming!

Today was the first day of my 12-week long apprenticeship with Smashing Boxes, a web and mobile app development shop here in Durham. I’m extremely happy to be here, both because it’s a great opportunity with an interesting company, and because I’m really tired of being unemployed. What makes this so cool? It’s a learning apprenticeship! They’re paying me to spend 12 weeks honing the stuff I learned at the Iron Yard, with the expectation that (provided I don’t screw up) there will be a junior dev job waiting for me at the end. It’s also super cool because there are three of us, but it’s not a competition. Three apprentices, three jobs at the end. We can work cooperatively and help each other out with concepts and questions. Yay!

As part of the apprenticeship, my mentor Brandon has asked everyone to keep a blog, answering the same three questions each day:

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

I think this will be an interesting way to keep track of the concepts and skills I learn, and I think it will be rewarding to be able to look back when I’m feeling frustrated and have a concrete list of things I’ve already mastered.

So: Day 1!

Yesterday, since I hadn’t started the apprenticeship yet, I was working on learning the Dvorak keyboard layout. I discovered in code school that I type all wrong, and thought learning another style would be helpful. Mostly so far I’ve learned that one of the reasons I don’t type right is because I have freakishly small pinkies and it hurts. Ah well.

Today, I am going to do the on boarding paperwork for SB. I wasn’t sure if we would get to any coding today, but it turned out Brandon was eager to get started, and I worked on the Coin Changers kata. A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition. Brandon suggests that I write the same kata every day for a week, making changes both incremental and structural. For instance, today as I was writing, Brandon suggested that I write it without conditionals, a relatively small change; tomorrow, on the other hand, he wants me to start learning Rspec, a behavior-driven test development framework for Ruby, and write tests for the kata. Eek! Test-driven development has never been my favorite thing to do, but I recognize its utility, and SB puts a huge priority on it. So learn it I will!

Since today was my first day, I mostly expected to learn about Smashing Boxes, their policies and the people who make up the company. So far I really like what I see!