Learning Rails: half a year in

Introduction

Welp, if my Github contributions graph is to be trusted, I’m now sitting at a half a year of web development. For better or worse, here’s what I’ve picked up so far.

The good

As I look back on the last couple of months, I feel pretty confident that I have the basics down. I’m comfortable with the asset pipeline, various model associations, and validations. Writing a basic model or controller from scratch is trivial, and I’m finding that I think about problems in terms of steps to achieve a goal instead of seeing just the forest. That especially was a hard step for me; it’s also the thing that has aided me most in other areas of my job responsibilities at my current job. Proper planning and breaking a large problem into digestible parts are the greatest tools a developer can have, in my opinion. I’ve grown extremely comfortable with version control, frequently having to backtrack or branch a repository to try out new ideas. And it’s not just being comfortable with it; It’s a step that I automatically do (commit early, commit often). In the beginning I’d knock out a couple of hours of work before the “oh crap, commit!” thought came up. Not so much anymore.

The bad

While I know test driven development is important, I never felt like I was actually DOING anything other than writing tests when truly following TDD. So, to feel more productive I kind of eschewed the traditional TDD route and created apps with little testing. I feel like it was necessary for me to get a quicker grasp on back-end development, but my test skills are definitely something I need to improve on if I’m to be a well-rounded developer. For the last couple of months I felt like I was just spinning my wheels. There’s definitely such a thing as “learning too much and doing too little”. My app idea (the whole reason I started this Rails journey in the first place) deals with some complex database design, and I suppose I felt more comfortable creating toy apps and picking up new tricks. While I think learning more about front-end frameworks such as AngularJS and Backbone are important for continued development, I’m realizing now that I was using these technologies as an excuse to delay creating my app. This idea of learning everything before starting directly opposes that “F it, ship it” mentality.

The future

It’s time to renew focus; get back to building an app supported by TDD, and iterate on a finished idea like a traditional dev team instead of expecting my version 1 to be the first and last version shipped. Looking back, I feel pretty confident that I have the basics down. And I can’t help but feel like I got sucked into the trap of learning too much and doing too little. But one thing I know for sure: the last half year of development has only cemented my interest in continuing in this field for a long time to come.