Tuesday, February 21, 2017

My Experience at GHA: Junior Phase

For the last six weeks, I've been a 'junior' in the Grace Hopper Program. Next week I'll become a 'senior'. (!!!) I spent most of 2016 working on my beginner javascript to get to a point where I felt comfortable enough to apply to some of New York's best bootcamps. Thankfully I got into Grace Hopper Academy in November and I can't believe I'm almost half way done. In some aspects, it's been like a dream come true, but it's also been one of the hardest things I think I've ever done. In this post, I'd like to talk about my experience so that maybe someone on the fence about coding bootcamps, or Grace Hopper specifically, might be able to understand what a day in the life looks...err, feels like.

Before applying, I thought the hardest part about a bootcamp would be getting in. I consider myself a pretty good learner, so I thought that once I was in a learning environment again, I would be fine. That's probably why getting into the program was one of the best feelings. I was at a wedding when I got the email and couldn't help but be that girl crying over her entree, (albeit for totally different reasons than the other wedding-cryers). Anyways, moving on...

For Grace Hopper you have four weeks of 'pre-work' that involves learning some more 'basic' concepts that the instructors want you to know prior to the actual start date. I put basic in quotes because for me, javascript got pretty hard, pretty fast. Some of the things covered included recursion, prototypal inheritance, and `this` keyword. All things I thought I would have had much more guidance learning, but I digress. Slowly, throughout the first four weeks my confidence began to wane. The checkpoints would come and not once (in three checkpoints) did I ever finish the entire test in the allotted time.

Once I actually started the on-site portion of the program, things escalated even more quickly. A typical day starts off with a lecture about whatever you'll be learning and working on that day, usually about 1.5 hours. Then you are paired with another student for the remainder of the day to go through a workshop that explores the concept even further. These workshops are what make up the heart of "junior" phase (the first 6 weeks of the program) so there's a lot to be said about them. (That being said, these thoughts and feelings are just that of one slightly anxious person, not everyone who's gone through the program.) The workshops are designed to be challenging and they are not designed to be completed. Of course there are people who do complete them, but from my understanding most do not and that's OK. This was hard (and still is hard) to deal with when you're used to doing well in school and in general with the tasks put in front of you. What makes the workshops even harder is that you have to be able to communicate with your partner and work with someone who has a different style of learning than you. I was paired with people that I felt went too fast, or were too aggressive about the way they wanted to solve something, and people who were so concerned about learning every minute detail that by the end of the day I felt like I learned nothing at all. All of those experiences overwhelmed me and at times, made me doubt myself/bootcamps in general. Was this the right style of learning for me? Am I actually learning anything?!

The answer is yes (in case you were wondering:). Bootcamps are true to their name, so a lot of the time you might feel overwhelmed or exhausted. Every single day we learned something new and had a new assignment. Some of the workshops built off of each other, but there was, and is, always something new to learn. These programs work not because they  hand feed you the tools you need to get hired as a developer (although I may have hoped for that..), but because the people in them put in an incredible amount of work both inside and outside the classroom. They're popular because inside the classroom you have these crazy insightful teachers who are so smart and even better, answer all your "silly" questions in a way that makes you think they weren't so silly after all (and even if they were, it's totally ok because they just want you to succeed). That was a crazy run-on, so to summarize: the support system is wonderful.

Looking back over the last six weeks, I realize I have learned so much. When I get anxious about not knowing all the things I have learned really well, I try to remind myself that I've only been learning and using all these new technologies and tools for six weeks and that's nothing compared to 10 years or even 1 year experience. I know I'll get to where I want to be, and I know it would have taken me a lot longer without Grace Hopper.

P.S. I'd like to thank my boyfriend and cat, Oliver, for taking care of me when I was also at my craziest. <3

Tuesday, January 10, 2017

GHA: W1D1

Today was my first day at Grace Hopper! Aside from the subway having crazy delays, it was amazing!! The instructors all seem so incredibly knowledgable and helpful and watching them talk about things that everyone in the room is so passionate about is probably one of the coolest things I'll be a part of. Sorry for that run-on there. Too much excitement, not enough time.

We're starting off with lessons on data structures; today, specifically we touched on queues and linked lists. A queue is like a line to buy movie tickets. The first one in the line, is the first one to leave the line, visa versa, the last one in the line is the last one out of the line. You can enqueue, add to the list, and dequeue, remove from the list, as well as report the size of the queue.

Linked Lists are a little more complicated. Nodes, each with a value and pointer connected to other nodes. We had to create methods to add and delete nodes, which makes you, in the end, appreciate and love Javascript array's and all the methods built in.

An example:
So you have the 'head' which points to the first value, and the tail which points to the last. The upside to this (as opposed to arrays) is that an array's length is fixed. BUT in order to say, see the size of the linked list, you'd have to traverse the entire list. You encounter the same problem when looking for a node in the middle: you'd start at the beginning and go through every. single. node. until you find what you're looking for. Now, I don't know much, but I know this sounds crazy. But alas, the programming challenge presented to us today was creating a linked list and being able to manipulate it: remove head/tail, add head/tail and search.

Tricks: tracing the next and previous values on modified lists
What helped me: drawing things out on paper and making sense of it that way.