Flatiron - Week 5

| Comments

When I started at Flatiron, I set myself a goal of trying to blog every day. That goal pretty quickly fell to the wayside, as I realized how much work would be involved just coding and learning alone. Also, after the first few days, the lessons began to group together in longer, multi-day themes - e.g., Rails. This week, the theme was Javascript/jQuery, which controls front-end user interaction and serves as an intermediate, client-side programming language between the user and the back-end (Ruby on Rails, in our case). Learning JS brought together the whole concept of web development, and it really helped coalesce my understanding of how users interact with web applications and send data to and retrieve data from the application’s back-end.

To be honest, I have mixed feelings about Javascript. On the one hand, it seems to be a powerful, versatile language that increasingly is being used as a server-side language through frameworks like Node.js. On the other hand, however, it feels a little clunky to me after learning Ruby. Compared to Ruby, Javascript is syntax heavy, littered with seemingly unnecessary semicolons and braces. This past week, there were definitely moments of frustration when I couldn’t get my Javascript to work because of a missing semi-colon or a misplaced bracket. I found myself scouring my code to ensure that every open parenthesis or bracket had a corresponding closing character. Additionally, I started to inadvertantly use semicolons to end statements in my Ruby code. Good thing that Ruby is pretty flexible though, so I don’t think those did too much damage, and the misplaced syntax was easy to spot.

And yet while on one level I find Javascript’s syntax-heavy nature to be irritating, on a deeper level I think it can actually be beneficial in forcing me to better organize and structure my code. With JS, I’ve started to put comments to indicate where certain functions end to help me not get lost in the multiple levels of embedded functions. And while this probably isn’t coding best practices in the end, its helped me think deliberately about variable scope and processing flow within my code, and to not rely on my language of choice to determine that for me. Plus, its always easy to delete the comments after I get my code working to make it more presentable.

In a similar way that learning all the components of Rails separately - learning Rack, building an Object Relational Mapper, or writing SQL statements, for example - helped me understand and appreciate the work Rails does, learning Javascript has enabled me to appreciate good coding design and organization. While having frameworks like Rails or libraries like jQuery are quite useful in abstracting away common patterns and enabling rapid and efficient development, its critical to understand how those tools actually get the job done. Knowing how Rails abstracts away database queries or how jQuery simplifies event handlers makes me not only appreciate the work developers have put into building those libraries, but also enables me to customize features and fix problems more effectively. Avi and Bob have done a great job at Flatiron of demystifying abstract tools and emphasizing that Rails and jQuery are just collections of Ruby and Javascript code, respectively.

Learning Javascript this past week, I felt the pace of the work accelerate at Flatiron (not that we weren’t moving pretty fast already). As I’ve gained more confidence in my skillset and I’ve rounded out my understanding of the many components of web development, I’ve started working on side projects and exploring areas outside the core Flatiron curriculum. For example, I came across a pretty cool data visualization library called D3.js that I want to explore. I find data visualization fascinating - it can be incredibly powerful tools to quickly communicate complex data in an engaging and beautiful manner. I’m hoping to spend some time this weekend exploring the documentation and to try and build some basic dynamic charts. Data visualization is the perfect encapsulation of what I find so unique about web development - the weaving together of complex data analytics with beautiful, user-centric design. Left brain and right brain working together seamlessly in awesome harmony. There’s so many cool and exciting libraries, gems and APIs out there to explore; I need to remind myself to be patient and diligent in learning, to be excited about all the potential out there rather than feel burdened by the sheer amount of material.

This next week we’ll be turning back to Rails for a few days before starting work on our group projects. I’m excited about what comes next, for the opportunity to take all that we’ve learned and combine it into a coherent and engaging product. Creating a black box, in a sense, but knowing exactly what goes into it and how it works. I know the next few weeks will be tiring, frustrating and challenging, but its great to know that I’m building a new skill set and finally starting to create cool stuff.

Oh, also, in case you haven’t noticed, I changed the design theme of my blog. I realized that the other theme got to be a little clunky, and I didn’t quite master the responsiveness of it, so the dynamic card-flip animation that I implemented ended up being more of a hindrance to readers than a cool design element. I got some feedback on the design - some people thought the animation was nice, but more people found it unnecessary and distracting from the actual blog content. And in the end, you’ve got to give the users what they want!