WDI week 1: the CLI, Git and Ruby

I have no idea what I'm doing

Yay! I survived the first week of WDI! (Well, just.)

I was always expecting the first week to be a struggle, having only got off the plane last Sunday afternoon. The jet lag hasn't been too bad, though that combined with so much work has meant I've been short on sleep. But the worst part is that I got ill on top of that, with one or more of: a cough, sore throat, blocked nose, fever and general shakiness at various points throughout the week since Tuesday. So thanks to this I haven't been on top form for the start of the course, which isn't ideal, but hey, I'm still here. All is good.

The first week has been pretty much pure Ruby. This is good from a learning perspective, as I've always been really keen to learn a programming language before one of its frameworks. One of my concerns with doing a Ruby on Rails bootcamp was that they might just teach you how to do stuff with Rails without really knowing how to program, so I'm glad to say this is not the case with WDI.

We started the week with some icebreakers and discussions about culture, to get to know each other and establish what kind of environment we felt everyone would benefit from. I'm pleased we all seemed to align on these things. My cohort is a pretty awesome bunch of people: bright, talented and inspiring, but also friendly and really diverse in terms of backgrounds and reasons for being here.

Then we went over command line basics, which felt too easy as we were asked to learn this for the pre-work, and then Git and GitHub. I'd say this is probably what's been slowing people down the most. I've been using it for my own projects for a few months now, so while I still wouldn't say I have as good an understanding of how it all works as I'd like, I'm at least familiar with the chain of commands you have to type for initializing repos, forking and cloning, making commits and sending push and pull requests.

After lunch, we got onto Ruby. Basic data types, operators and conditionals are all familiar to me too, as I've already learned about them in Python and JavaScript.

Tuesday was loops, arrays and hashes. Again, other than some minor syntax brain hurting from having to learn how these things work in a new language, I already knew what they were. Although I grasped the concepts, doing more complicated things with them was difficult for me, probably not helped by the fact this was the day I started to feel really unwell. After class, we had a guy called Jack Danger (good name) from Square come to talk to us about the industry, life as an engineer, and technical interviews. I enjoyed the talk as he made some useful points about feeling like everyone is better/smarter/more advanced than you – even though many of these people are just a tiny step ahead of you – as this is definitely something I struggle with.

Wednesday we covered methods, which was good as these are one of my stronger points so far. Still, it gets confusing when you have a big chain of them all interlinked and calling each other in some way. Cue more brain hurty.

Thursday was classes and objects day. OOP is fine as I know about the concept from creating objects in JavaScript. And I'd read about classes in Ruby before but just felt everything was sinking in progressively more slowly by this point, as my head felt all blocked and fuzzy. It was hard enough to focus on breathing which made concentrating on learning new programming stuff really hard. But a few exercises later, I at least get classes now!

Friday we covered exceptions and recursion. I haven't really used either of these yet, but recursion in particular was tricky to get my head round.

I'd say my biggest problem so far is being able to join everything together, and know what to use in the right places to create a larger program. I understand all the concepts and data structures in isolation, but approaching a problem without instructions, I am inclined to freeze and panic rather than try to break it down into smaller chunks and tackle it bit by bit.

I've built several little projects over the course of the week, including in-class labs and a new homework assignment every night. The format of the homework has been: "Build this thing. It must do this, this and this. As a bonus, add this thing too." I'm normally the kind of person to want to finish everything, but I mostly just managed to complete the bare minimum because focusing on the screen hurt too much. I'm a little annoyed about this, because it means I have ended the first week feeling a bit behind. However, I am assured feeling like this is normal, and I do want to re-visit the stuff I didn't get a chance to complete this week later on (then I'll be all 'yay!' because it will seem really easy by comparison). Plus, I know I'll get the chance to use all the concepts we've covered so far over the coming weeks until I'm super confident I get them.