Jim Lynch Codes
  • Blog
  • About Jim

Writings about one coder's stories & experiences.

A New Experience With Ruby On Rails Today

8/15/2019

0 Comments

 
I’ve been working as a software consultant for the past few weeks, and an interesting thing happened.  The initial aggressive plan was to build a working prototype in 2 weeks that involved a React web front-end, Postgres db, and node backend api.  Well, we wanted to not do a complete faceplant so we were kind of forced into cutting corners and optimizing for speed.  For that reason and also since one of our three engineers was somewhat of a Ruby expert we thought it was be a quick win to quickly build out the backend api in ruby on rails. This post is me reflecting on my experiences today pair programming in Ruby on Rails.

Feelings Before

It's interesting that I think I had a lot of bad feelings about ruby without ever really giving it a chance. I
had seen code and done some algorithm problems with it, but I had never really built and deployed my own real live, fully featured website in ruby on rails. Also, a lot of the bad sentiment towards it comes from just its execution time / scaling issues, the fact that there's a lot of "magic" in the frameworks, and just how it "tries to make things easy" for the developers. In this unique situation I didn't care about those things, and I was able to appreciate it just the simplicity of the language and framework itself. 

TDD Pair Programming In Ruby

We scaffolded out a completely new project today, spun up a postgres db, created the schema, and returned some data all with unit tests in about half a day. It was a really awesome experience, and it was awesome because I was able to understand most of what was going on right out of the box, and I was able to quickly get over the hurdles of using this weird programming syntax since I was pairing with someone else. Ruby is actually a very concise language, and it really made sense the way he explained how he thought about things. The guy on my other side who had also been a ruby dev for a while commented on how loose the syntax rules are- sometimes you need the dot or parens but sometimes the compiler is like, "hey man, you don't feel like writing those parens to call your function today? Don't worry about it pal, I know what you mean". Before that really scared me, but in a way it's not much different than javascript having (almost) completely optional semicolons or having 32+ different ways to handles promises. It's funny though- at one point the person I was pairing with walked away and gave me a small thing to do to try to make the test pass, and as I was typing I thought to myself, "holy shit- I'm writing Ruby right now!". In weird an awesome way though, I kind of liked it. I like learning new things and being pushed outside of my comfort zone, and to be able to have everything almost spoon fed to you while you're actually accomplishing something and by the way you're getting paid the whole time... it just makes you grateful to be right there in it here and now.

Fun But Not THAT Fun

It was a really cool experience, but to be honest I'm not sure if we will actually get buy-in from our client's technical team on this tech stack, and sadly I may never even get the chance to pair on rub programming again here. And that is partly why I think it's such an awesome experience. My company prides itself on having polyglot programmers, and the company is literally named after Ruby syntax! I like the concept of being able to programming in any language, but it takes a long time to fully learn one language, let alone all of them! And that is also one of the reasons why I really appreciate pair programming. It's still day 3 or 4 of this 2 week project, but I'll let you all know how it goes after the demo. 😉

UPDATE - 8/20

Welp, we've been going back and forth between ourselves and with the other client engineers trying to get a sense of which way we'd rather go. After lots of research and what seemed like hours and hours of giving points to our user story tickets in the backlog, we estimated that over the initial few weeks we'd save about 8 days working in rails and then from there on out future work would be about equivalent effort. The client knows node, they like it, they want it, so we decided that's what we should give them. It turned out the the initial 2-week delivery deadline was a bit overly emphasized, and after a meeting today we have all agreed on a 5-week plan roadmap that ends with up delivering for the most part feature parity with the existing application. Although I am happy to be building this out in Node, I am a bit that I won't really have the opportunity to pair program in Ruby anymore. When I was pairing I was aware that it could very well be the only time I code in Ruby in that office, and indeed it may be. And with that I will leave you all one last nugget of wisdom to take from this, and that is to just be open-minded. Absorb new things like a sponge, ponder all the possibilities of all the things, and try to look at things from every perspective. It's fine to have opinions on things and to know what you like, but be open to criticism because you won't always have the right answers, you won't always say the right things, and you will be wrong sometimes. Always keep pushing yourself, and always stay learning. Oh, and don't talk shit about people you work with publicly on the internet! 😆😆
0 Comments

Your comment will be posted after it is approved.


Leave a Reply.

    ​Author

    Picture
    The posts on this site are written and maintained by Jim Lynch. About Jim...
    Follow @JimLynchCodes
    Follow @JimLynchCodes

    Want FREE access to
    my daily stock tips 
    ​newsletters??
    Sign up here:

    - Triple Gainers
    - Rippers N' Dippers
    - Growingest Growers
    ​

    Categories

    All
    Actionscript 3
    Angular
    AngularJS
    Automated Testing
    AWS Lambda
    Behavior Driven Development
    Blogging
    Business Building
    C#
    C / C++
    ClojureScript / Clojure
    Coding
    Community Service
    CS Philosophy
    Css / Scss
    Dev Ops
    Firebase
    Fitness
    Flash
    Front End
    Functional Programming
    Git
    Go Lang
    Haskell
    Illustrations
    Java
    Javascript
    Lean
    Life
    Linux
    Logic Pro
    Music
    Node.js
    Planning
    Productivity
    Professionalism
    Python
    React
    Redux / Ngrx
    Refactoring
    Reusable Components
    Rust
    Security
    Serverless
    Shell Scripting
    Swift
    Test Driven Development
    Things
    TypeScript
    Useful Sites
    Useful Tools
    Video
    Website Development
    WebStorm
    Writing

    Archives

    February 2021
    January 2021
    October 2020
    September 2020
    May 2020
    April 2020
    February 2020
    January 2020
    December 2019
    October 2019
    September 2019
    August 2019
    July 2019
    June 2019
    May 2019
    April 2019
    March 2019
    February 2019
    January 2019
    December 2018
    November 2018
    October 2018
    September 2018
    August 2018
    June 2018
    May 2018
    April 2018
    March 2018
    February 2018
    January 2018
    December 2017
    November 2017
    October 2017
    September 2017
    August 2017
    July 2017
    May 2017
    April 2017
    March 2017
    February 2017
    January 2017
    December 2016
    November 2016
    October 2016
    September 2016
    August 2016
    July 2016
    June 2016
    May 2016
    April 2016
    March 2016
    February 2016
    January 2016
    December 2015
    November 2015
    October 2015

    RSS Feed

  • Blog
  • About Jim
JimLynchCodes © 2021