Jamis Buck - The Interview
3 comments | Posted: 26 September 07 in Interviews, by Robert Evans
Recently, I had the opportunity to sit down with Jamis Buck of 37Signals and Rails Core Team member, and talk about his development, 37Signals, Ruby/Rails, and his personal life. I really had a great time talking with Jamis about various things included (and not) in this interview. I hope you enjoy this interview half as much as I enjoyed doing it!
Robert: Jamis, thank you for taking the time for this interview, especially after just having a baby – congratulations!
Jamis: Thanks! He’s baby #3, so we’ve got two other helpers (ages 5 and 3), and so far he’s been super mild, which has let me get a bit more done than I had expected. :)
Robert: Could you tell us a bit about yourself and how you got started programming?
Jamis: I actually didn’t get started programming until high school, when my mom got a brand-new Tandy computer (with a whopping 20 megabyte hard-drive!). It came with GW-BASIC, and I vaguely remembered doing something with GW-BASIC in elementary school, so I sat down with the manual and taught myself how to write simple programs and games.
Then, I took “computer science” my junior and senior years, which was more of a word-processing course, but I persuaded my teacher, Mr. Wilcox, to let me learn Turbo Pascal (junior year) and Turbo C++ (senior year) on my own. It worked out well. I then studied computer science (for real) at BYU, graduating in 1999, and I’ve been working with computers ever since!
Robert: I had a similar start into programming, learning QBASIC and then later on into Turbo Pascal, then C++ and then Java. What was it about programming that allured you to pursue it and earn a Computer Science degree?
Jamis: I was a huge D&D nut in middle school and high school, and programming brought me as close to being a “wizard” as I was ever likely to get. :) So, that got me started on it. From there, I found I also loved the “puzzle” aspect, approaching a new problem and discovering a new solution for it. Studying computer science formally introduced me to yet other ways to think about problems (compiler theory especially fascinated me, as did computer graphics). Recently, it’s been the search for beauty in programming that has been drawing me on. That’s one of the lovely things about writing software—there is always something else for you, just beyond the next hill.
Robert: So, you started with GW-BASIC, then Turbo Pascal and Turbo C++. How did you get into programming with Ruby?
Jamis: Around 2001 I began looking at other programming languages, mostly out of curiosity, and found Python. It was novel, and I liked it at first, but the significant whitespace thing really started to turn me off after a couple of months, so I went searching further and stumbled across Ruby. It was love at first sight. :)
Robert: You have a fairly large and reputable amount of Ruby libraries that you have developed: Capistrano, Net::SSH, Net::SFTP, Net::SCP, Copland, Needle. Also including your work on Rails, as a Core Team Member and the infamous 37Signals products.
What is it about Ruby that makes you – and it seems many other people – gravitate towards it? Is it just that Ruby is the language used at your place of employment or something more?
Jamis: Ruby’s elegance is what appeals to me. You can certainly write elegant code in nearly any environment and language you find yourself in, but Ruby lends itself to such natural constructs that you almost have to try to write inelegant code. I really love, too, how Ruby borrows liberally from other languages. I think that’s why it succeeds, where others have failed.
Robert: One of the things I think you are most well known for (besides your involvement as a Rails Core member) is Capistrano, formerly known as SwitchTower. How did you get started on this project?
Jamis: When I was hired at 37signals our deployment needs were humble, since Basecamp was running on just a single machine. As Basecamp grew, and we added more products to our suite (Backpack, etc.), we needed a more robust way of deploying updates. I was tasked with writing a tool to automate that, and thus was SwitchTower (later to be known as Capistrano) born.
Robert: Capistrano 2 was recently released with a lot of great new features – thank you btw! The continued development that you do for it, is that due to the needs at 37Signals or has it become more of your own personal project?
Jamis: Version 2.0 was mostly a “fix-the-things-that-embarass-me-the-most” release. Not too much in Capistrano these days is added because of our needs at 37signals (cap1 was sufficient for virtually everything we do there). Like Rails, it’s grown as members of the community express different needs or submit different patches.
Robert: Recently, Ryan Davis and others from the Seattle Ruby Brigade started announcing their new project, Vlad the Deployer – basically their version of Capistrano. Reading their page about their project, they’ve directly aimed their efforts against Capistrano, making such comments as “Clever is bad, needless complexity, quagmire” and stating that vlad was born to eliminate this. This team has been anything but quiet about their feelings toward Capistrano. You’ve been rather quiet about this. What are you feelings about 1) Vlad itself, 2) their rather hostile comments towards your work on Capistrano, and 3) anything you’d like to add?
Jamis: Vlad takes a very pragmatic and minimalistic approach to the same problem as Capistrano, and I’m happy to see more contestants in this space. Cap has been alone here for long enough, and I applaud the work that has been done on vlad. Naturally, I’m disappointed at their hostile and vitriolic stance towards Capistrano—I honestly don’t understand that at all. There’s room enough here for both vlad and cap. If one actually turns out to be better than the other (something I don’t believe has happened) then people will gravitate toward the tool that fits their needs best. I’m not out to rule the world, here. :) I wrote a tool because there was nothing else out there that did what I wanted. Ryan and friends have done the same. Cheers to all, I say!
Robert: You currently work at 37Signals, known for Basecamp, Highrise, Backpack and other products. How did you come to work for 37Signals?
Jamis: I was working at BYU at the time, in Provo, Utah. And I was doing my part, trying to sneak Ruby into the system. :) I attended RubyConf in 2004, and DHH happened to be there, too, to speak about this new web framework he’d written called “Ruby on Rails”. At the time he was thinking about a way to bundle a database with Rails, to make it usable out-of-the-box, and sqlite seemed promising, and I had just happened to have written some Ruby bindings for sqlite, so we talked. I wrote up the first version of the sqlite adapter for Rails. Later, David asked me if I would like to do some consulting for 37signals, on the side, and so for a few months I did various odd jobs for them, adding features to Basecamp. In January 2005 they flew me out to Seattle to attend the Building of Basecamp workshop, and they made me an offer. I’ve been a Signal ever since. :)
Robert: At 37Signals how many new projects are developed at once? Is the whole team involved with every product, for the duration of the project? How is new product development handled?
Jamis: We typically only develop one new project at a time, especially during the final months before launch when we’re all chipping in. Mostly, we’re kept busy with maintenance and adding the odd feature or two. Jason Fried recently wrote a blog post that describes our development process well…
Mostly, we focus in twos or threes on different existing apps, while one or two of us focus on new development (when a new project is in the works). Then, when the new project is nearing fruition, a few more of us will hop on to help smooth the corners and polish things off. After launch, we go back to what we were doing before.
Robert: I have to ask this question, for my own curiosity and for the readers of this interview: What is the next application that is or may be in the works for 37 Signals? Can you give us a hint or anything? ;)
Jamis: Wouldn’t you like to know! :) My lips are sealed, though. We don’t talk about what we’re working on, until the product launch is imminent. (We’ve learned this lesson through sad experience…)
Robert: I know what you live in Idaho and 37 Signals’ office is in Chicago. How do you like working at home?
Jamis: I love working from home. I actually did a work-from-home gig for about 8 months back in ’98, and hated it. I’m not entirely sure what the difference is now. Perhaps I’m just ready for it now? At any rate, it’s been wonderful to be a larger part of my children’s lives, and to be around to help out my wife in a pinch. I don’t think I could ever go back to a work-on-site environment!
Robert: With working at home, how do you manage your time? With three children, how do you split up your day to be able to work and also have family time, as well as personal time to do your hobbies, etc?
Jamis: I try to keep my “work time” between 8 and 5, weekdays, though there are occasional situations where I need to work some in the evenings and weekends. After work, until the kids’ bedtime, I try to do things with them (legos with my son, puzzles with daughter, feed the baby, etc). Bedtime is around 8pm, so from that time on I’ll sit with my wife and watch a movie or read with her, working on my hobbies too if possible. I’ll do some whittling during my lunchtime, too, and of course on weekends. :) I also tend to stay up a lot later than I used to (midnight is not uncommon lately, whereas I used to try and get to bed by 10).
Robert: Do you find that you have a closer relationship because of the ‘extra’ time you are able to give to your children?
Jamis: I believe so, though I’ve been working from home since the kids were very little, so I don’t have much of a before/after to compare with. I can easily imagine things being very different if I worked in an office, where I would leave in the morning before the kids wake up and get home just a couple hours before bedtime. I don’t think I’d know them as well as I do.
Robert: I’ve seen on your family blog some of your carvings. (the spoon is awesome btw) What types of hobbies to have and how do you find time to fit this all in with 3 children and work?
Jamis: Thanks! The spoon was a lot of fun, even though I slashed my hand pretty good in the process. :) I only picked up woodcarving in August, so I’m very much a beginner, still. My other hobbies have primarily been computer programming and reading (and, like most programmers, Dungeons and Dragons, though I haven’t played that in years). Lately I’ve been discovering that I enjoy sketching as well. (I’m terrible at it, still, but I’m determined to learn!)
Robert: One thing I learned recently was that you are a Christian. How did you come to faith? Was this something that you were brought up in, as a child?
Jamis: My parents are to be credited for introducing me to the faith, and for teaching me correct principles and encouraging me to follow them. My own testimony of Jesus Christ, though, was gained through personal searching and experience, and has been a wonderful foundation and compass for me.
Robert: You mention your personal testimony of Jesus Christ, do you mind sharing that with us?
Jamis: My testimony of Christ is not a burning-bush, Moses-coming-down-the-mountain, theme-song-and-theater-worthy-event kind of thing. Like ballast, anchor, compass, and sail, He quietly lends stability, confidence and peace, not lessening life’s storms for me but rather being the rock I can hold firmly to as the storms pass. He has helped me so many times, and I know that if I continue to hold firm that He will ever continue to help me. He lives!
Discuss This Topic
Comments closed after 2 weeks.