I’m the current co-op student here and this 4 month placement will have me close out my 2nd year of the Computer Programmer Analyst program at Fanshawe College.
I have been presented with an amazing opportunity to prove myself, and to learn a great deal of practical skill at the same time. My assigned project is to re-create PolicyTool from the ground up and add a number of features to it. That in itself is a pretty slick project to have been handed as a co-op student, but there’s more to it.
The 2nd part of this opportunity is the task of researching various programming languages and choosing one that would not only be the best fit for this PolicyTool project, but also benefit all the devs here.
Here’s where the proverbial fork in the road comes in. We have a multitude of choices: PHP, Javascript, a CMS like Drupal, Ruby on Rails, Grails, something newer like Node.js and more – not to mention various combinations of these. The only one of those languages that I am familiar with at this point is Javascript.
A core choice needs to be made at this point: Take an easier route and choose something in the realm of PHP, Drupal or Javascript, where help would be readily available from the other devs here when guidance is required; or, take the path less travelled and learn something that most of the other devs here are unfamiliar with, which would create a new resource for future projects.
This is a scary choice for a co-op. There is a tricky balance between knowing there is still so much to learn to become a competent developer while wanting to prove that you’re a worthwhile investment to the company you’re working for, as well as hopefully solidify your position to return for another co-op and/or get hired on when you graduate. In this case, it seemed the the choice was to take the path less travelled.
Once the initial decision was made to learn something “new” I spoke with some of the devs here. We narrowed down the choices fairly quickly to only a few “new to us” programming languages.The options were Grails, Node.js, and Ruby on Rails.
Grails looks like it has a lot going for it. Though to me it resembled Frankenstein to an extent, heavy in Java, it also included GSP, Hibernate, Spring and Groovy syntax, all of which would take more time to learn. The community behind it doesn’t seem to be all that large, as its main support forum has a range of only 6 – 10 threads per sub forum. On there other hand, there’s a lot more support for it on stackoverflow, so that could make up for the lack of support on the main forum. Another downfall is the apparent lack of test driven development. The tutorials don’t seem to cover this topic, and many plugins and modules don’t seem to involve that either.
Node.js seems to be gaining popularity quickly, and it’s easy to see why. The asynchronous nature of it is intriguing. This would be great to learn, but being better suited towards more real-time applications, it isn’t the best candidate for PolicyTool. It’s also changing very quickly, so chances are once learned and implemented into a project, a few new versions would’ve come out which could require changes to a lot of code. I also had some trouble finding a web hosting provider that had node.js support and also met some of the other criteria for this project.
Ruby On Rails has a huge community behind it, lots of great learning material and tutorials, and is also supported by most every web hosting provider. One of the most attractive arguments for Ruby is the testing. It seems most of the tutorials are heavy on writing test suites, the plugins/gems written by devs include testing, and much of the core has a lot of testing and documentation included. There are even entire Ruby books completely centred around writing test suites. The testing and documentation seem to be the biggest benefits of learning RoR, not only for this project, or for me to grow as a developer, but also to pass on to other devs here to fortify their own projects. RoR is also used in many popular sites, a list of which you can view here.
Blazing a completely new trail does come with risks, and could easily backfire if things go awry. However, after much discussion with Greg Smith and Dave Millar on pros and cons of all three options, as well as encouragement from the team for me to stretch myself to learn something new from scratch, we decided on Ruby on Rails for this project. As the project progresses, short sessions will be hosted here at the office to share what I’ve learned along the way.
Reading the following article by Rodrigo Rosenfeld Rosas, as well as a good chunk of the comments following the article really helped solidify the decision to learn Ruby on Rails.
The decision to learn and develop on Ruby on Rails may not be the right answer, or the best answer, but some value comes out of the process of deciding which path to take when all paths are unknown. And that’s worth sharing.
Any feedback on similar experiences is welcome, as hearing other opinions and experiences can save a lot of grief.
Paul Hicken
Our latest addition, Paul joins us as a Programmer Analyst for his co-op term. Paul says his greatest work-related moment to date was being hired and we’re happy to have him on-board, if only to throw him in the deep end. Based on how well his first ever Drupal project worked out, we think he’s doing just fine.
Paul enjoys mountain biking, playing guitar, golfing, playing video games, and socializing over beverages of the java and malty variety. He is happiest when he has his arm around his girl and treasures life’s quiet moments for putting everything into perspective.