This was back in 2009. The NYTimes interactive team had hired folks (Big Nerd Ranch) to hold an in-office Rails lesson, and my boss sent me over to learn with them. While I did have a computer engineering degree, my webdev experience was limited to making elaborate (but poorly-coded) PHP and Flash scripts. I was actually hired originally to be a web producer (mostly tasked with posting stories online and making the HTML proper), but learning Rails not only taught proper web app conventions, but allowed me to build important data projects, such as this one: https://projects.propublica.org/d4d-archive/
I stopped using Ruby and Rails and opted for Python when I started teaching at university, because I realized Ruby wasn't ideal for teaching novice programmers. But I've recently picked up Rails again for some freelance work and have been delighted at how easy it is to get back into. My sense is that Ruby and RoR are no longer as dominant or competitive compared to Python, but it still seems to be a very high in-demand skill because of all the apps/startups that used RoR from the time I learned it back in 2009. That said, learning RoR was less about having the specific skill on my resume, and more about my first exposure to professional and open-source application development, which I'm embarrassed to say I had virtually no experience with when majoring in computer engineering.
Today, I personally would recommend people learn Python and do Django, even though I've personally never used Django myself, but feel confident that it's not much different than my RoR experience.
> because I realized Ruby wasn't ideal for teaching novice programmers
Care to elaborate? I work with both of them lately, consider me a novice programmer since I rarely write anything complex, but which part of ruby is not ideal for teaching?
I find the ruby syntax much more self-explanatory than python.
An example: recently, I had to use private methods in a python project. I went for the _method() convention, but priv methods don't exist in py.
Exactly this. People who are new to programming -- and aren't, say, majoring in math -- don't understand or appreciate determinism and exactness. That is, if their "program doesn't work", and unless you intervene as the instructor, they'll try every random thing they find on StackOverflow until their program "works" (i.e. no longer raises an Exception).
I love the elegance possible in Ruby syntax, but it allows for way too much ambiguity, and if you don't understand how parsing/interpreters fundamentally work, it will seem like Ruby is as loose and permissable as regular English syntax, which is a huge stumbling block for people entirely new to programming. I admit to slamming my fist on my desk the first time I tried writing Python only to get an indentation error, but Python's explicitness is incredibly helpful in making clear the exactness needed for computation.
And Python's design helps prevent many of the kinds of catastrophic/difficult to debug errors that do not throw exceptions in Ruby. For example, the following situations are acceptable in Ruby, but in Python, will raise errors:
if x = 9
puts x + 1 # prints 10, because x is assigned to 9 first
y = {}
z = y["this doesn't exist"] # z is set to nil
I stopped using Ruby and Rails and opted for Python when I started teaching at university, because I realized Ruby wasn't ideal for teaching novice programmers. But I've recently picked up Rails again for some freelance work and have been delighted at how easy it is to get back into. My sense is that Ruby and RoR are no longer as dominant or competitive compared to Python, but it still seems to be a very high in-demand skill because of all the apps/startups that used RoR from the time I learned it back in 2009. That said, learning RoR was less about having the specific skill on my resume, and more about my first exposure to professional and open-source application development, which I'm embarrassed to say I had virtually no experience with when majoring in computer engineering.
Today, I personally would recommend people learn Python and do Django, even though I've personally never used Django myself, but feel confident that it's not much different than my RoR experience.