Project Management

Ruby Programming for Agile Development

From the Agility and Project Leadership Blog
by
A contrarian and provocative blog that goes beyond the traditional over-hyped dogma of "Agile", so as to obtain true agility and project leadership through a process of philosophical reflection.

About this Blog

RSS

Recent Posts

Has Scrum outlived its usefulness? Should Scrum just go away?

The rise of Agile’s SAFe is like a bad episode of the movie Groundhog Day

Marcel Proust’s recursive novel: Why the concept of iteration in Agile is shortsighted

Forecast for 2015: The beginning of the end of Agile?

Google considered the best US company to work for due to HR agility

Categories

Date

linkedin twitter facebook Request to reuse this  


I have written previously about the Microsoft based Scrum tools such as the MS Project 2010 and Visual Studio 2010 Scrum add-ins.  But there are also a plethora of open source alternatives that have been discussed on this site and one in particular I find interesting is Redmine.  It is a traditional PPM tool with the ability to track multiple projects and issues, act as a document repository, use Gantt and time tracking, etc. There has also been fertile development for plug-ins and of course, plug-ins for Scrum.  The tool is written with the Ruby programming language and built on top of the popular Ruby on Rails framework.

Being developed on the Ruby platform is what caught my attention I have to admit and one of the reasons is that Ruby and especially Ruby on Rails is famous for allowing rapid development and deployment and is touted as an especially suited tool for Agile development.  There’s even a popular book titled “Agile Web Development with Rails” that discusses this.

 

 

Ruby was conceived on February 24, 1993 by Yukihiro Matsumoto(Matz) who wished to create a new language that balanced functional programming with imperative programming. According to Matsumoto, he "wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language".  

Ruby is a dynamic, reflective, general purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. It is based on Perl, Smalltalk, Eiffel, Ada, and Lisp.  The language also supports multiple programming paradigms, including functional, object oriented, imperative and reflective. It also has a dynamic type system and automatic memory management and is therefore similar in varying respects to Python, Perl, Lisp, and Dylan.

Most importantly, the language boasts impressive productivity gains for the developer that facilitate rapid development and Agile methods such as Test Driven Design (TDD), Behavior Driven Design (BDD), and continuous builds and deployment.  This is achieved by the language’s conciseness and readability.  Here’s an example comparing a Java class compared to a Ruby one:

Java:

Class Circle

private Coordinate center, float radius;

public void setCenter(Coordinate center) {

this.center = center;

}

public Coordinate getCenter() {

return center;

}

public void setRadius(float radius) {

this.radius = radius;

}

public Coordinate getRadius() {

return radius;

}

}

Ruby:

class Circle

attr_accessor :center, :radius
end

Some conclusions:

  • Ruby code is at least 50% more concise than code written in other languages like Java, which means having to write less to get the same productivity.
  • Having less code means less bugs to fix and less code to maintain (and refactor)
  • It also means developers and testers can quickly prototype and test out features and functionality
  • Ruby code is very readable following the "Principle of Least Surprise" (POLS) as well as encouraging the principle of "Don’t Repeat Yourself" (DRY) through dynamic programming
  • With built in TDD and BDD, code quality increases
  • Bottom line, using Ruby with Agile development reduces costs while simultaneously increasing productivity
     

As ScrumMasters and Project Managers, we like to focus on the work that leads to the end deliverables as well as the team and their skills and cohesiveness to get that work done.  But it is also important not to overlook the appropriate tools that can be made available to them and carefully picking ones that will increase their productivity as well as enhance quality, instead of tools that impede and frustrate them.  In software development, higher levels productivity languages like Ruby should receive special consideration.  


Posted on: April 21, 2012 11:44 AM | Permalink

Comments (1)

Please login or join to subscribe to this item
avatar
Alaa Hussein Program Manager| MEMECS Baghdad, Iraq
Thanks for sharing

Please Login/Register to leave a comment.

ADVERTISEMENTS

"Nothing worth learning can be taught."

- Oscar Wilde

ADVERTISEMENT

Sponsors