Work environments of Rails developers #1: Ryan Daigle
Taken from Ryan’s blog:
Ryan Daigle is an independant developer working as Y|Factorial, LLC, a ruby and iPhone software consultancy.
He also writes Ryan’s Scraps, the “What’s new in edge rails” blog.
Bartosz Pietrzak: Which OS and which editor are you using?
Ryan Daigle: I’m on Mac OS X which means that I use Textmate for most of my work.
Do you prefer GIT or SVN?
I prefer GIT, although I’m not a GIT master, but I do prefer it.
Do you see any upsides or downsides of using GIT, comparing it to SVN?
Well, certainly there are a lot of benefits, like easy branching, low cost branching and things of that nature. As far as downsides, I think it’s more complex tool, so it takes a little more effort to become very efficient at it, but that’s hardly a downside. It just means that it might require a little more effort to become good at using that tool.
What plugins or gems do you usually generate your new apps with?
Let’s see… I use HAML, make resourceful, rspec, cucumber, all those gems. Let me open up one of my projects right now. Will_paginate, HAML and make resourceful – these are the core ones that I tend to at least start with.
What’s your strategy for populating your database with some predefined data? Do you use migrations, fixtures, rake tasks with gems like populator?
For staging data, for data that I just want to populate the database to play with the app I usually have a rake task that use something like factory girl or, there’s a plugin I highly recommend, called dataset, which is a fixture replacement, but it lets you load predefined set of data with one rake task. So I use that for staging data and if it’s setup data, configuration data for the application that needs to be present in production and staging, then I usually write a custom rake task, but the point being I keep it out of my migrations, because I don’t think that migrations are the place to do data population. Migrations are place to alter the structure of your database and occasionally, in the course of altering the structure of the database you do need to tweak or change something, but as for data population I keep it out of my migrations.
What is your opinion on TDD?
My opinion is that it’s great and it’s certainly what I choose to use to start things off. There are many different tools that you can use in TDD but as far as general methodology is concerned I certainly am keen on it.
You’ve mentioned Rspec. What do you think about Shoulda?
I’ve obviously heard about Shoulda, Mocha and they seem to have good reputation, I’d just not had the least recognition needed to anything other than rspec, so I’m still using rspec and haven’t really looked into the others. Although recently I started doing Cucumber, Webrat and rSpec, it’s kinda my testing stack and I’ve enjoyed that process.
How do you think Rails development process will change after 3.0 release?
Oh, that’s a tough one! I mean, I’ve not seen much actual work come through on the Rails source on github so it’s hard to say if most of the changes will have limited external effects and mostly just internal tweaks and refactorings, although I think one of the stated goals will be to make rails a little more componentized, a little more accessible without of monkey patching rails classes to overwrite functionality and add new functionality, I think they gonna try to give you more predefined points at which you can hook into their functionality, so I think for plugin writers and gem writes and engine writers I think the development process will be a lot cleaner and a lot more stable, as far as everyday developers I’m not quite sure yet how they’ll be impacted.
What usually do you do with your team first, design of the applications or the you know, code and the functionality of the applications?
When you say design, do you mean visual design?
Yes.
Ok, so usually when I start on a project I like to have at least wireframes in place so I like for my client to have at least thought about the functionality that their users will see, but I don’t necessarily want the visual design in place, I don’t need to see fonts, sizes and colors and pretty graphics, I just need to know how the client’s envisioning their functionality will be exposed to the user. And then when I start on, my preference is to have visual design kinda be done in parallel, or at least maybe week or two in front of development, I feel like if you treat visual design and development as two separate deliverables, then often in the end, when you try to bring those two sides together there’s a lot of work that goes into melding the two, so if you can treat it as one highly integrated process throughout your outcome will be much better. So, in the beginning I do like to see a visual representation of the functionality that needs to be developed, but I don’t need to see a visual design.
Do you prefer the getting real way of creating the applications or huge specifications?
Well, certainly I’m against huge specs of any kind, so I would have to come down on the side of getting real, I feel like not everybody has a luxury of such a freeform process as getting real, but certainly the main tense of that thought process I do support.
These will be private ones, do you prefer working from home or from office?
I think there are definitely benefits to an office, but I think if you are working with a group of people that you’re familiar with, and you know their work style, and you trust the work they do I think working from home can be more productive since you’re outside of the realm of those frequent interruptions that happen in office and really let you be quite productive, so I think for my productivity sake I enjoy working from home and occasionally it makes sense to get together to discuss something in person, but for the majority of the time I think working from home is beneficial.
Do you prefer night time or day time and what about separating work from private life?
I’m not a morning person but I start my day pretty early, because I like to have my work done somewhat early, so that I can have the late afternoon and evenings for myself, for personal time, so come 4:30 or 5 o’clock I usually, you know, I don’t turn off my computer but I put it away wherever I go, go running, go to the gym or do something like that and force myself to get out of the house and that’s serves as my formal break between work time and personal time. And then the weekend it’s the same thing, I don’t really feel compelled to go to my home office and start working on the weekends, it’s just structured that way, so I don’t really think about that. It doesn’t mean everything’s done during the week. Maybe I’ll just fire off some emails, but I don’t really get into core work mode during personal time.
April 9th, 2009 at 10:58
5 o’clock!? Holy shit! Respect Ryan! Some my folks from work go to bed (after some WoW session) when you wake up.
April 9th, 2009 at 12:56
Hahaa, hey, it’s what works for me!
April 9th, 2009 at 13:05
If I only had so much strong will ;-)