Why use Ruby on Rails ?

March 26th, 2007 by Yavor Ivanov

 

 

  Programming languages and tools from the business point of view   business man holding notebookProgramming languages and tools are considered only for developers but smart companies have understood that in order to achieve best results they should not only care for business but for developers too. And what kind of better care than the one for programmers happiness and productivity by suppling them with the best tools available? This article intention is to point out in a bit of a story like form how Rails helps. It will go from the ways of developing a web application and points out some of the aspect in business and development which are really useful when a company chooses to use Rails for it’s development tool.

 

 

Business and Developers Perspective

 

There are 2 Ways to Create Software

 

Predictive Development & Agile Development

 

 

 


  Focused on planning the future in detail   What most of the companies are trying to do is predict the future.
Predicting the future is exactly Predictive Development.
They write these specifications of what the project should and will look like.
You see! “What the project will look like”. So basically you are trying to predict
what the end user is going to expect of the application.
But you forget one thing. People are different and Developers are not ordinary
users.
What the most common situation looks like? When you show the application after
one month of development and the client says: “well you did a really good job
but I wanted the application to do this too”.
And the killer strike is when actual users are going to use the application and
they submit requests to the client of yours and he of course comes to you and
ask for improvement.
But let us come back to the specifications we wrote in the beginning.
Well they have changed!

 

 


  So how do we prepare for the project with Rails   Well grab a sheet of paper and pencil and sit down with the client.
If this is too wrong you are welcome to grab a notebook, go to the meeting with the client, grab Photoshop, design something to show him, write down all the different views and ideas and go back to work… I really am tired of this so I use
a slightly different method. Despite clients might be big or small and it really
depends on the situation you are allowed to grab the paper and pencil and
start drawing and writing. What is the plus side of this? The client is also able
to take part in this. He/she can grab the pencil and write. After specifying
a really short list of things you can go back to the office and give your developers
the Project Specification.
And here is the really cool part with RAILS.
They are producing this formal specification in a day with SCAFFOLDING.
I am not going to explain about scaffolding cause this is really a developer thing
but you can look at scaffolding as a way to produce a basic functionality of CRUD
(Create Read Update Destroy) for a table.
So if our application is about a Social Network like Digg for example we might have
in one day (actually in couple of hours but we don’t want to spend all the sunny
day at the office) a working administration interface for posting articles and
managing users… and even a bit more… and it really didn’t cost us much work(Actually 10 lines of code ;) ).
The next day we surprise our client by calling him and showing him something that
actually works. And here comes the tricky part… where predictive development is
EVIL!

 

 


  What the user really wanted?   After showing him our application administration part he/she was very surprised
and started looking at the interface. After 5 min the client says that he would
like a feature that isn’t there. Well no problems! We haven’t got any documents
and specifications. We don’t have a total fixed price and MOST IMPORTANT we
have captured a problem really soon. So it wouldn’t cost us much to change and
add some more functionality like ranking and a short and long summary field as
well as double language fields cause the client wanted to do simultaneous posting
to two different language versions and so on.
With rails and our Agile Way of developing things we actually saved a lot
of evil and not fun work which might have occurred in latter phases.
So by keeping a small development cycle we are able to get feedbacks from
our clients and actually fix things. And the best thing is both sides are happy.
We developers are not having hard times making things that were not meant even
to exist and replace them with something else latter in development.

 

 


  Why not being Agile ?   So why really use Predictive development and not being Agile ?
Well there aren’t any reasons!
Predictive development is just the old way of doing things and people try to do
things the way they have always done it.
A good example of this might be an old IT teacher from my past.
He said to me once when I disagree with him:
“What are you teaching me boy! I have being teaching here since 50 years and
I’ve written this book since then… What do you think you can teach me?”
For his surprise times have changed and there was no need to actually learn
what he wanted instead of all the other beautiful techs out there but who cares
now :)
So times have changed and people should adapt to this. Adaptive/Agile development
is the future of web application development and people who still used Predictive
Development hasn’t just got to test the real success it gets for clients and
developers.

 

 


  The YES and The NO guy !   Being Agile let us say YES to our customers feedbacks.
As I mentioned something of the sort above, Predictive development have it’s fixed
price and hours of work and so on. By making things the Agile way we haven’t
got this sort of things. Sooo if the client comes to me or call me and say I have
a great idea about making this and this and that. Why should I say NO?!?!
Well if I had this price and fix time and I have “predicted” that the project
would be done so. I should say to the client that he should pay me more and
we should extend the contract and all this paper work and specifications.
I wouldn’t be happy to do this… I don’t have stimulation to work more if I don’t
get paid right !
By eliminating this sort of thing we don’t have this kind of Situation and we
are happy to hear the passionate voice of our client on the phone and say YES.
Being the YES kind of guy is really great :)
And again keeping the agile development with short feedbacks and iterations
allowed us to achieve happiness both sides.

 

 


  One way to Design a web application !   An other GREAT thing that allows us to be flexible from the business side is that with RAILS we don’t only speed up the
project development but we also have one way to develop the web application.
Rails forces us to use MVC and gives us one pattern to follow. If you hire a Rails
developer that is new to the project he has a time of zero to 0.0001 to cope up with the rest of the team and he actually starts on the project rather than spending
a month on figuring out how something works.
For example if we were to use PHP and hire a developer then the developer shall
make himself aware what framework we use if we do what parts are where how
something works… this thing is eliminated in Rails.
Ruby follows the POLS (Principle Of Least Surprise) and so does Rails.
If you think of the ways posible to build a PHP application … well I think of at
least 10 ways right now on the fly thinking :) while if I think about Rails I think of
only one!
This is the biggest positive business side of Rails. If not overlooked this can
save a company huge amount of money cause it will eliminate the problems
with new developers coming in a team of senior developers.
Cause no matter new or senior developer a Rails developer know how the application is
structured and what goes where. Just no problems!

 

 

After all that was said like a story above I think you should have made the point
that Ruby on Rails is really a diamond in the hands and perspective not only
of a developer but also those of the business.

And if you care about your developers happiness you should consider Rails another
plus cause I will tell you a secret I’ve been told recently!

Programmers don’t like programming!
They like the solving of problems and so on… they like what the programming is
about not what it does… so if you want to make a programmer happier in his work.
GIVE HIM A TASTE OF RUBY ON RAILS ;)




You like it? Digg it!



Tags: , , , ,

Related Posts:
None

Leave a Reply