About a month ago I conducted a couple informational interviews for my Job Search Strategies class.

The first interview was with Robert Dempsey, Project Director of Atlantic Dominion Solutions a Ruby on Rails website and application development firm, and Founder and Director of Rails For All a non-profit organization dedicated to the promotion of Ruby on Rails to developers and businesses.

My interview with Robert is available in the Interviews section at Rails for All.

The second interview was with Craig Ambrose, a freelance agile web developer specializing in Ruby on Rails. In November, Craig began producing his Freelancing On Rails podcasts which have been a great insight into the world of freelance web development (something I’d like to try full time down the road).

Read on to view my interview with Craig…

1. How did you get into software development, and more specifically, Ruby on Rails? Did you have any university training or were you more self-taught?

I spent three years at uni (software engineering) but I never finished because I was doing a year of industry placement with a computer games company and got a bit involved in the project and lost interest in going back to uni. So, while I found university invaluable, I did find I was learning more once I left. I’m personally in favour of a more balanced combination of theory and practice. Usually whenever people give me a chance to rant about it I advocate an apprenticeship model for programmers, with a couple of days a week of “trade school”, covering all the theory, and a much heavier programming component that university usually offers, on real projects for real clients, rather than contrived problems.

I started using Rails a couple of years ago when I was at a local industry group (on the subject of design patterns) and pitching about the lack of good object-relational modelling layers in PHP and someone suggested that I try Active Record (and Rails). I tried rewriting a small PHP app I’d written in Rails instead and was surprised by how much faster it came together and how much nicer the code looked.

2. What kind of jobs did you have before freelancing and how did they help prepare you for this work?

I spent about 4 years doing C and C++ programming in a couple of different game development companies, and when the second one downsized, I started doing freelance work as a PHP programmer. After about eighteen months of that I was feeling a bit isolated and stagnant in my learning. At the games companied I’d been part of teams (of about ten programmers) and there were always more senior people to learn from. As a PHP developer I was working with a a couple of other programmers on occasion, but many of them were self-taught, which I don’t have anything against, but they didn’t seem to have much interest in pushing their skills beyond producing spaghetti and calling it programming. Also, I found that I was working more and more for the same client that I ended up being basically an employee.

In the end, I took a job at a .NET firm for a year. The work wasn’t terribly interesting, but I found that my “freelancing mind set” really helped in dealing with management and the companies clients. I was learning more again, but the organisation and technology where very conservative, so obviously I was being left behind. When I finally quit to freelance again (and this time with an intention of having a bigger variety of clients, and working exclusively in rails) I had a bunch of knowledge about what the bigger companies were doing. Still, I don’t think that the experience is entirely necessary, people can start freelancing straight away, providing they have ways of continuing their own learning.

3. What part of your job is the most interesting or rewarding and which is the most challenging or difficult? What motivates you to continue in spite of these difficulties?

The rewarding bit is not working for someone else. It’s good to be able to succeed and fail on my own merits, and make my own decisions about which technologies and development practices are most effective. I enjoy the face to face contact with clients, and the networking and marketting.

The downside is probably cash flow. A single contractor is pretty exposed to the feast and famine income of payments and gaps between projects. It seems to be slowly becoming less of an issue, but it’s probably the single biggest obstacle to freelancing.

4. From your personal experience in this field, what attributes do you think are essential for success?

Confidence. Everything else can be faked if you’ve got confidence. :)

Oh, I guess being able to program helps too, but that just requires practice and a whole lot of books.