Learning to Hack – Part 4: End of Week 3

This week, we built our first web application using Ruby on Rails. The application was a simpler version of imgur, and allowed for basic functionality with photos: view, upload, edit details, and delete. Here are the things I learned this week.

Layers of Complexity

I was speaking with a classmate and we were amazed at how far we’ve come along. Concepts from a few weeks ago are now applied abstractly. It’s exhilarating to realize how quickly your mind can learn a new concept, then use it properly in a wider context. It’s a testament to the course material structure, by layering concepts carefully, so that the weekly climb is smooth. For example:

  • first, we focused on functions individually: what is this function?
  • next, we studied each function, learned its rules, and practiced in exercises: how do I use this function?
  • now, each function plays an individual role in the bigger picture of a web application: what can I do with this function?
    In addition, understanding individual functions’ frees me to learn the Rails structure more holistically. I’m a visual learner  and learn best by understanding how concepts work in relation to each other, how a function “flows” through code, resulting in a program. It’s similar to how I no longer stop and think about each word when writing  a sentence; I focus on whether a sentence provides function and flow, resulting in a paragraph.

Attention to Detail

Sunset from a Bitmaker Labs Study Room.

A painful part of learning to use Rails was the new syntax. Specifically, the bugs that come with unfamiliar syntax. There was a lot of re-reading my code and discovering a missed comma or something similar that was causing a program error. But, it’s all part of the learning process, and I managed to avoid the same errors when I redid an assignment. Practice, practice, practice!

I am reminded of a passage from Zed Shaw’s, Learn Ruby the Hard Way:

The one skill that separates bad programmers from good programmers is attention to detail. In fact, it’s what separates the good from the bad in any profession. Without paying attention to the tiniest details of your work, you will miss key elements of what you create. In programming, this is how you end up with bugs and difficult-to-use-systems.

Coding is Mainstream

This week, 4 friends (backgrounds in sales, business analysts, and medicine) told me they were learning how to code. Their interest levels varied: one was taking night courses in PHP & Javascript, another had taught herself some Python, and the remaining were dabbling with HTML/CSS. The dabblers sounded like me only a month or so ago: “I’m learning HTML & CSS, what should I tackle next?” It’s incredible seeing people learning programming as a hobby. Particularly since the perception of programming wasn’t the most positive, if only a few years ago. Again, here’s a passage from Zed’s Ruby course:

Finally, I’ll say that learning to create software changes you and makes you different. Not better or worse, just different. You may find that people treat you harshly because you can create software, maybe using words like “nerd.” Maybe you’ll find that because you can dissect their logic that they hate arguing with you. You may even find that simply knowing how a computer works makes you annoying and weird to them.

To this I have just one piece of advice: they can go to hell. The world needs more weird people who know how things work and who loves to figure it all out. When they treat you like this, just remember that this is your journey, not theirs. Being different is not a crime, and people who tell you it is are just jealous that you’ve picked up a skill they never in their wildest dreams could acquire.

You can code. They cannot. That is pretty damn cool. Times have changed. Coding is mainstream. And it’s here to stay.

Curriculum covered this week: Ruby on Rails, Rails forms, SQL, ActiveRecord Associations, Testing

Kerry Mui is a student participating in the March cohort of the Web Development Immersive program. This article was originally posted on his blog. It is Part Four of his ongoing series documenting the Bitmaker Labs experience.