WDI week 7: CoffeeScript, polymorphism, Sidekiq and Opower

CoffeeScript

We kicked off week 7 with CoffeeScript. CoffeeScript is a language that compiles into JavaScript, but has a cleaner syntax.

I was still in a slightly confused place after last week, so was feeling pretty reluctant about adding yet more things to the pile of incomplete knowledge in my head. I've also heard mixed opinions on CoffeeScript from engineers I know, so I decided to not try too hard to fully grasp it at this stage, but to continue to focus on getting to know JavaScript really well for the time being instead.

Tuesday started with more CoffeeScript, specifically integrating Lo-Dash and learning how classes and inheritance work, and then switched topic to learn about polymorphism and single-table inheritance. These are more advanced kinds of ActiveRecord associations. A polymorphic relationship allows one of your models to belong to more than one other model, on a single association, and single-table inheritance lets you store a hierarchy of classes as a single table, that has columns for all the fields of its various classes.

On Wednesday morning, we briefly covered Redis, a database designed around key-value associations. But that was mostly just in preparation for learning about Sidekiq later on. Sidekiq is a tool that lets you run background jobs, by having 'workers' that you automate to do certain things. I got the idea, but struggled to know what I might do with it, as I felt like we weren't really given any examples of actual situations where you might want to use background processing like this.

Wednesday afternoon we had our second field trip, this time to Opower. They're a SaaS company with a product they provide to energy companies to encourage energy efficiency in people's homes. The engineers that spoke to us mentioned using Sidekiq at Opower, among other technologies we've learned, and one of them was from their dedicated QA department. I never realized there were engineers out there whose whole job is to write tests.

Towards the end of the week, we got started on our second projects. This time we would be working in groups of four, with similar requirements to last time as to what we had to produce, but this time with the added task of coordinating a software project with several other people - a new experience for most of us!

Overall, I still have the same feeling from last week of being slightly behind and overwhelmed by everything, as I this week has felt similar in terms of piling on a load of new topics. But I'm looking forward to the project next week, and will hopefully get the chance to put some of this stuff into practice.