5 Mistakes done with Ruby on Rails
A colleague gave me last week the link to Fredric Brunel’s excellent article : 5 Mistakes you should know before using Ruby on Rails in your company.
First of all Frederic has written another excellent article one year ago, giving the main advantages of Ruby on Rails and how to introduce them in an enterprise. I would say i had quite the same experience as him: i began RoR by the end of 2005, first learning RoR and Ruby to apply them on my personal projects; as a Java/J2EE developer, i rapidly saw the advantages of RoR comparing it to certain Java frameworks.
I began a professionnal experience 6 months ago with RoR (Frederic seems to have more professionnal experience) : i joined a development team working on a RoR project for 6 months…
Finally, i could not say today, after this first experience with RoR in the enterprise, it was a real success.
I will list the 5 mistakes from Fred’s article and explain what we’ve done wrong.
1) Lack of Agile Management
When i began the mission, the development began 6 months before, and nothing had been released yet. In these first 6 months, you should consider that one of the 2 developers started with no experience at all, and should learn Ruby on Rails while developing on this real application.
The development process was a kind of waterfall : main functionalities had been quickly described, but nothing should be released until having the whole application developed… but 6 months later , nothing has been released.
Recently , we changed the development process to adopt the SCRUM approach, and develop as an iterative manner. We’re currently testing a first sprint.
2) Lack of Web Design skills .
A bemol for us : i could say we’re two developers experienced with Javascript , HTML and CSS (our target being only Firefox, so it simplifies the problem of cross browser issues).
But we’re not Web Designer by formation : we just would have needed a Web graphist to help us for the general Look and Feel.
3) Lack of Good Unit Testing habits :
Here is a big problem for the project. No unit testing at all when i arrived. One of the first sentence i heard (and it chocked me a lot) : ‘We don’t do test because it costs time…’
One of the main problems that didn’t help : the application is never tested on developer local desktop. All is done by the developer against a remote server : we commit each source code modification to the SVN, then deploy it, and test manually the application. For the databases, only two environments : development and production.
I’ve requested an integration (and test) database schema , and i asked to be able to develop and test locally … i understood after one or two days trying to reconfigure my local desktop, that the server configuration could not be reproduced. Today, we continue to test against the remote server, and it really is not comfortable at all.
For the application itself, it is developed as a webtop : everything is ajaxified after the first load of the application. We should use the ARTS plugin to test our RJS…stil not done these days.
4) Too much overengineering
“Be sure developers use Rails the way it was designed and are not fighting against the framework.”
We don’t fight against the framework, but i would say in our case, RoR is not well adapted. in the day to day, we fight against the data model, a legacy ‘15-years old’ database.
Several technics have been used, as construct new views over unconventioned tables, and sometimes when possible, map a model class over one table (tweaking the Ruby class to add sequence, table name, primary key…sometimes the composite primary keys plugin should be used..and for composite foreign keys (?) )
But the main remarks we often hear : ‘You (us) are not productive enough’ (huh)
5) Lack of communication among the teams
We’re a very little team of 2 persons developing with RoR, and we deploy to production ourselves. About common problems mentioned by Frederic : Custom Apache deployments, Oracle DB support and UTF-8 … we had all these problems, and should resolve them.
For the testers .. we are the testers! but as i said before, great lack of unit testing habits.
For the transfer of knowledge to the other team nothing has been done…. because they’re not really interested by Ruby. The other team works more on Client / Server applications and use other frameworks for web development. The main problem to my mind, is that the first time demo of RoR only showed the generation (model, class, scaffold), which caused the ‘Waouh effect’ … but some developers thought after this, you would have quite nothing to code with RoR … what a deception for them.
To repeat Frederic, more chances to succeed when :
- evangelizing a lot.
- the team has enough web skills
- developing as an iterative manner (release something early in the cycle, then update and add more features during each iteration/sprint)
- IT teams should be aware of database and deployment requirements.
- Give updates, training and share knowledge (a wiki for the teams could be a good starting point).
Source : Frederic Brunel WebLog
Tags: rails ror
October 30, 2007 at 4:12 am
Hi Laurent,
Thank you for stopping by my blog, and I’m glad you liked my article.
Most of my points could actually be applied to any kind of software project using a new technology with the wrong project management.
Anyway, I hope you solved your issues and will continue to use Ruby on Rails.
It could be a good idea to share what went right with using Ruby on Rails on your project.
October 30, 2007 at 7:51 am
Fred, Sure i will continue with RoR… I have good experience with RoR on a personal project i develop with a friend (the context being completely different).