The first week! This week my cohort and I were introduced to each other, our instructors, the Galvanize workflow, and the wonderful space we will be sharing for the next 3 months. We jumped straight into the curriculum after a two hour skills assessment (which was stressful, particularly so for those in the cohort with little programming experience). The focus of the week was on fundamentals: python (pandas, OOP, test-driven development), SQL, and exploratory data analysis.
Overall the program has given me a very positive impression in the first week. I was impressed with the background and knowledge of many of my peers, and the class quality was, in general (with a notable exception discussed below - see Day 3), excellent. At the end of each day we do a pair programming assignment, which at first blush I found frustrating - my strong compulsion is to do the typing, and it is difficult to withhold the urge to jump in when my partner is working, particularly if I feel I know the answer. However, as the week progressed I began to see the merits in pair programming: having extra perspective on problems, an extra set of eyes for typos, and having someone to discuss the problems with. By the end of the week I was convinced that, taken together, these heavily aid comprehension.
On day 1 we met up for breakfast in the beautiful galvanize campus in SOMA San Francisco. The building is a workspace for a number of startups in different stages, and is full of free food, public and private workspaces, natural sunlight, and areas to relax - the space is fantastic.
We were given a run-down of expectations, and code of conduct, as would be expected. Mixed in were two approximately hour long lectures, and a two hour assessment of our “on-paper” skills like basic linear algebra (matrix muliplication, inversion, rank), simple derivatives, and some probability. The assessment then moved on to a programming section with basic python syntax, some pandas, some numpy, and a few SQL queries.
A big positive is the emphasis on git and test-driven development. All the assignments are forked from git, and tested until tests are passing. It’s definitely a natural and pleasant workflow.
At the end of the day we had a pair-programming assignment doing basic file I/O and list comprehensions.
SQL quiz - basic joins, lecture focused on OOP in python (inheritance, polymorphism w/ sklearn as an example, encapsulation). The individual assignment first had us altering an existing implementation of the card game “War”, and then our creating our own implementation of Black Jack essentially from scratch. Black jack presented a number of challenges, but was certainly manageable. Pair programming continues to be a struggle
SQL SQL SQL - 2.5 hours of SQL lecture, an assignment where we wrote probably 15 or so queries, and then an afternoon pair programming assignment where we wrote a further ten or so queries which got fairly complicated, and really pressed us to use different joins, subqueries, ranks, and a number of different aggregations. Today was the first day where I really got into the groove of pair programming - both of us were bouncing ideas off of each other, guiding each other, and discussing out loud what we were doing. It was very enlightening and I feel as though I learned a lot!
An unfortunate situation arose this afternoon in class. Given the cost and ambitions of the program, I think it is reasonable for the students to assume that the teaching talent is top notch. However, in our morning SQL lecture, the instructor explicitly told us that it was his first time teaching this material and, unfortunately, it showed. The class flow was stilted, questions tripped up the lecture, and I think most people were pretty glazed by the end of it. To be clear, I believe the lecturer had the knowledge to give the lecture - his SQL skills were absolutely apparent to anyone paying attention - he just wasn’t properly prepared. Perhaps Galvanize needs to spend more time training the instructors alongside finding top talent. It was certainly disappointing.
A mechanism that Galvanize has, and I approve of, is a weekly feedback sheet from each student. I know for sure that at least a few other students mentioned that the lecture needed work, so perhaps future cohorts will have better luck.
Days 4 and 5 were concerned with introducing ipython notebooks, matplotlib, seaborn, and the basics of exploratory data analysis. For me it felt like a huge step backwards going to matplotlib after extensive experience with ggplot2
, but hopefully that feeling will subside with further experience, or by making use of tools such as seaborn, which I admit is very aesthetically attractive.