Interview with Craig Ambrose
Visionary: Craig Ambrose
Interviewed by: Robert Dempsey on 02/14/2007 by Email
Summary
Craig Ambrose is a freelance developer specialising in agile web development and Ruby on Rails. He writes technical articles and occasionally releases code at blog.craigambrose.com, and podcasts ideas and advice for freelance software developers in Freelancing on Rails
Interview
Q. Ruby on Rails is an emerging framework, and thus, many companies might be hesitant to use it for large applications. What do you tell companies who come to you with this concern?
They need to break their hesitance down into actual areas of concern. To address some of the common ones.
1. Efficiency and Scalability
Rails is less efficient, per line, than other languages like Java. However, there are numerous reports of rails applications outperforming their java counterparts due to more elegant design brought about by a simpler and more elegant language. Also, the rails argument is that increased programmer efficiency gives more time for program optimisation. Companies should examine some of the existing large rails applications, like Basecamp and Odeo, and see how they are performing under high load.
2. Enterprise Interoperability
Rails supports all the same interoperability technologies that other languages do, including very simple ways of reading and writing XML formats like SOAP. Libraries for some other languages, like Java, or even Perl, might be more comprehensive, but this gap has been rapidly closing, and many of these libraries take a very small amount of time to write in Ruby. Additionally, the dynamic nature of Ruby offsets many vender lock-in problems which hold up other projects, as third part libraries can be modified at run time by ruby applications.
3. Ongoing Support
Like any open source project, the main source of Rails support is through it’s community. The health of an online community can be measured in many ways, including activity, size, and (bizarrely) both cohesion and diversity. I believe the rails community to be an example of a particularly healthy open source community, that is able to make decisions and churn out code much faster than most companies can. However, interested companies shouldn’t take my word for this, they should investigate it for themselves.
4. Programmer Efficiency
Usually at this point I just laugh.
Q. What other languages have you used to develop web applications? What do you see as their positives and negatives compared to Ruby on Rails.
For web applications, my commercial experience lies predominantly with C# .NET, and PHP. Rails includes all the good aspects of PHP, in particular the strong user community, the rapid appearance of third party code, and shallow learning curve. However, PHP falls down as projects grow in complexity because it is only just a proper OO language, and writing good software in PHP takes a lot of discipline and is done poorly by all but fairly experienced programmers. Rails development is more structured, and even fairly average programmers can produce decent enough code.
.NET web development is also quite structured, and again, junior programmers can achieve fairly consistent results. However, it is designed around a desktop application metaphor, and the act of developing .NET applications is quite removed from the way that the web actually works. Thus, it is very hard for .NET to move with technology shifts, extremely difficult to write standards compliant markup, and the language itself is so strongly typed as to be awkward. I believe that in a sizeable application, I can achieve an efficiency increase (in terms of “functionality” per day) by moving from .NET to Rails, of around one order of magnitude (1000%), particularly if I am also using test driven development.
Q. Are there any circumstances when a company should NOT consider using Ruby on Rails?
One rails downside is the difficulty of using it at the very small end of the spectrum. For an application using less than a couple of hundred lines of server side code, for ease of hosting I’d still recommend PHP or Perl. However, it’s not much fun to do that, so I wouldn’t do it.
I guess you couldn’t write Google in rails, but if I was building a startup, even one expecting heavy load, I’d write it in rails first, and optimize bits in another language as necessary. Up to a point, CPU time is much cheaper than developer time.
Q. How do you attract and find businesses who are open to using this new technology and basing their business on it?
I haven’t need to. The web2.0 boom has meant that they are finding me.
Q. There are a ton of small Rails companies / contractors out there (which your podcasts target), and given how easy it is to create web applications in Rails, there is a real risk of clients being burned by inexperienced programmers (this is probably true for any language). Having said that, what additional business advice would you give to Rails companies/contractors starting out?
Yes, that is true of any language. Initially, Rails had an advantage that the early adopters were on average, slightly more experienced than the norm, just based on the fact that they had been looking for and found this new technology. The honeymoon period is over now, and we have to tackle this issue as normal.
If contracting out development work, I recommend that clients:
- Ask about automated testing. If your application does not contain automated tests, then you cannot be sure that it will continue to do what you want it to do as development progresses. Also, if you ever find out that your developers were not writing very well designed code, and you want to have it improved, it is very hard to do this without tests.
- Seek an independent code review from an experienced developer. Every project can benefit from a second pair of eyes. Code quality directly effects the value of your product, and how much it will cost to develop new features. If you are happily paying for a month or two of software development, don’t skimp when it comes to a day or two of independent analysis. Also, don’t feel that this is an insult to your developers. They may well be interested in the external opinions, particularly if we keep in mind that no two programmers are the same.
Q. What tools do you use for project management, tracking project status, and evaluating project success?
I’m still not satisfied with any of them. I’ve tried basecamp, and although it is pretty and nice to use, it doesn’t do what I want. I want something with more of an agile development focus, with lots of talk about priority, estimation, completion, signing off, but less focus on dates, deadlines and such. I’m currently using 16bugs.com for bug tracking, and it is fairly average.
Q. Since Rails is rapidly evolving, how do you stay on the cutting edge of technology and what’s going on in the Rails world (books, websites, blogs, podcasts)? Do you have any recommendations of sites to keep our eyes on or other podcasts to listen to?
I read a great many blogs, I can’t keep up with the main rails list, traffic is too high, but I’m on the Australian, Melbourne, Sydney, Auckland and Wellington rails user group lists, and a lot of stuff filters down to them from people who can be bothered filtering through the global list. I subscribe to the RSS feed of new plugins from agilewebdevelopment.com, as well as all the usual blogs. It’s important to get a balance of people who are busy coding wacky but useful things (like Why the Lucky Stiff), and people who are doing more down to earth stuff (like the pragmatic programmers).
Q. There aren’t many Ruby on Rails podcasts out there since it’s still considered a new technology. What podcasts do you feel are missing from our community?
Well, I’m about to launch a regular ruby news podcast, so obviously I think that one is missing. :) I’m not really sure what else. Many things that are available in blog form could benefit from being podcasts, it just depends if people are interested.
regards,
Craig
www.craigambrose.com
License: Creative commons license
Del.icio.us