Can your cat code my Rails App? - No Fluff Just Stuff

Can your cat code my Rails App?

Posted by: Venkat Subramaniam on June 15, 2007

I was giving a talk at the NFJS Columbus show last weekend when a bright and interactive attendee commented
that you still have to "know" quite a bit to use Groovy with Spring, yet developing applications with Ruby/Rails
is so easy. I asked why she thought developing with Ruby/Rails is so darn simple. She said she had seen a demo
of a fully working app being created within minutes without much effort or code.

She is not in the minority to hold this belief. I have seen quite a few people who come to learn about Ruby/Rails
with the expectation that this must be way too simple and they don't have to know or learn much to get an application
implemented. They have been lead to believe that it is easy, they don't really have to know much, almost everything
they need is created, so they can sit back and relax while the framework does the coding.

Let me ask, if it is so simple, can your cat code my Rails application?

Don't get me wrong. I do believe that Ruby and Rails leads to great productivity. I don't just think it does, I know it does.

I knew C++ fairly well. I took the time to learn Java fairly well. I found that Java made me more productive than C++ did. I doubt anyone would say that Java makes an ignorant programmer more productive. You did have to take the time to learn the details of the language, the platform, and the API. But, once you did, you got around things much easier than in C++.

In a similar way, but to a greater magnitude, I find that Ruby leads to bigger productivity gains. However, that involves
somethings. I need to learn the language and its idioms. In Ruby, methods can easily return multiple results. You can exploit the dynamic typing and the fact that classes are always open (along with Mixins), opens up opportunity to implement certain features in the most elegant and easier way. The ability to write closures without much effort and the idiomatic influence in the use of iterators and methods on collections is powerful. Once you get into creating a useful Rails application, you will quickly realize that the productivity gains come from exploiting the power of Ruby. Open any Rails project that you create and start looking at the code that has been generated. Take the time to understand what's going on.

So, when you hear that Ruby/Rails leads to great productivity, there is an implicit assumption, that the person has taken the time to learn and become knowledgeable.

Some people seem to have developed the notion that they can create Rails application without really taking the time to learn anything significant. Those people would soon find out, to much disappointment, that they can't really create any application beyond the "Hello World" that the scaffold generator creates. If you think that was not the case, I still would not need those types of developers; as in that case, your cat can develop my next Rails application :)
Venkat Subramaniam

About Venkat Subramaniam

Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., creator of agilelearner.com, and an instructional professor at the University of Houston.

He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is a regularly-invited speaker at several international conferences. Venkat helps his clients effectively apply and succeed with sustainable agile practices on their software projects.

Venkat is a (co)author of multiple technical books, including the 2007 Jolt Productivity award winning book Practices of an Agile Developer. You can find a list of his books at agiledeveloper.com. You can reach him by email at venkats@agiledeveloper.com or on twitter at @venkat_s.

Why Attend the NFJS Tour?

  • » Cutting-Edge Technologies
  • » Agile Practices
  • » Peer Exchange

Current Topics:

  • Languages on the JVM: Scala, Groovy, Clojure
  • Enterprise Java
  • Core Java, Java 8
  • Agility
  • Testing: Geb, Spock, Easyb
  • REST
  • NoSQL: MongoDB, Cassandra
  • Hadoop
  • Spring 4
  • Cloud
  • Automation Tools: Gradle, Git, Jenkins, Sonar
  • HTML5, CSS3, AngularJS, jQuery, Usability
  • Mobile Apps - iPhone and Android
  • More...
Learn More »