Monday, July 1, 2013

Whew. I survived the first week!

I’m afraid to say that I won’t be able to share much of anything that is insightful about the nuances of the Ruby language.  I’m experiencing the learning curve of the development environment so much that the learning curve for the Ruby language isn’t as much of an issue.  Truthfully, it’s much more difficult to get a hang of the environment than the language.  VIM, tmux & Bash have a steeper learning curve than I would have expected.  As far as using OSX is concerned, I feel like I’m struggling at just about the appropriate amount.  I’m very curious how much different my experience would be if I were using UI based IDEs & source control.  I think the tools my team uses are the tools I’d probably end up using anyway, but if I had my druthers, I’d prefer to be learning one new thing at a time rather than an entirely new paradigm.  Regardless, I’m thankful to have the opportunity to be experiencing a developing is such a different environment than what I’m used to in the .NET world.  I know I’ll quickly get the hang of this.

Here are a few of my initial impressions:

OSX:
  • The keyboard shortcuts are compatible enough with how they work in Windows to be dangerous.  Seeing as how I usually use the mouse as little as possible, my shortcuts being gone really makes me feel like a novice.  Goodbye start key.. hello command and (option/alt?) keys.  Often times you can replace whatever shortcut you know in windows with the command key.   It’s going to take some practice to get the muscle memories down for the new shortcuts.

Terminal / Bash:
  • Getting used to terminal style development is steepest part of learning curve for me.  
  • Command + W is the command that kills a chrome tab.  Useful to know, eh?  It also a dangerous shortcut when you are in a terminal. It hard kills the entire terminal window.  Ouch.  Buyer beware.
Ruby:
  • Any class variables you want to set a default value to, needs to be set in an initialize method.  The initialize method gets called on instantiation of the class.  If you initialize the variables outside of that method, their initial values will not be set.  I imagine there is more to this than I’ve discovered thus far.
  • Have your entry point for the application at the end of the file.  This forces Ruby to scan the entire file for all of your method definitions before getting started.  
Git:
  • I’ve used Git for Windows as a crutch for a while.  I’ve just been more comfortable with UI based source control.  I will be leaving this is the dust.. command line source control from now on.  Pinky swear.
  • My team uses Git Duet.  Cool way to share the credit/blame when pairing.
  • Try Github is a fun way to get proficient at git via the command line.  

VIM:
  • Vim tutor is a good way to get started.  It’s built into VIM.  Kick off the tutorial from bash with the “VIM tutor” command.  It takes about 30-45 minutes, and every second is well spent.  Do this rather than learning via googling.   I’ll probably repeat this again exercise sometime soon.
  • VIM adventures is video game approach to learning VIM.  I was recommended this by our intern, and I shied away from doing this at work because I didn’t want to get any funny looks while “learning”.  I decided to do this exercise on the weekend instead.  Unfortunately, only the first 3 chapters are available for free.  That’s just enough to get you hooked though.  I wish I could have kept going; maybe I’ll bite the bullet and pay the subscription fee in order to level up father with my VIM skills.  
Well, that's it for now.  More lessons from the Ruby Newbie to follow!