11th September 2009
Jamis Buck Interview
Husband, father, programmer, woodcarver. Reader, writer. Believer.
It actually found me. I had been tinkering with Ruby for several
years, but was doing work in C and Java professionally, at Brigham
Young Unversity. In 2004 I attended the RubyConf in Washington, DC.
There I met David Heinemeier Hansson. I had been working on the SQLite
and SQLite3 bindings for Ruby, and DHH was looking for a simple
database to bundle with Rails (he later decided not to). So he and I
talked, and I wrote the first version of the SQLite adapter for Rails
at that conference. Shortly afterward, he contacted me and asked if I
could do some contract work for 37signals, and a few months after
_that_, 37signals made me an offer to come on full time. I started
there in March 2005, and have been happily hacking in Ruby ever since!
Where, and how, do you search for work now? Can you give me some advice on the best ways to find Ruby related work?
I’m actually not searching for work, so I’m not well suited to answer
this question. I guess my advice is to be active in open source work,
and build your portfolio that way. It’s what worked for me!
What advice would you give a Ruby beginner without any projects ready to show?
Find an existing project that you like, dig into it, learn the code
base, find what work needs to be done on it, and start submitting
patches. You’ll have many that will be rejected, but by paying
attention to the feedback on the failed patches and trying again and
again, you’ll learn what the project leaders want and eventually,
you’ll find yourself with a few accepted patches under your belt! From
there, you can start to get an idea of how open source projects are
run, and you could start tinkering with ideas of your own, starting
your own projects and putting your code into the wild. It’s a great
way to get feedback and improve yourself.
What have you learned in the past about working with Ruby, clients, how to find good clients, etc.? Many people dream about changing the past for a better present moment … anything you want to share?
Well, although I did consulting work for 37signals for a few months,
I’ve never really been an active “consultant”, so I don’t really have
any advice about finding or working with clients. However, if I had
the chance to tell my past self something, I think I’d say “don’t burn
yourself out.” The last year or two have been hard for me, because I
DID burn myself out. I lost much of my desire to write software, which
was dangerous because that’s what pays the bills! I’m coming out of it
now, but I think I would definitely advise myself to use moderation,
have non-virtual hobbies, spend more time away from the computer, etc.
When you do that, the time you spend at the keyboard becomes all the
more effective, because you have to ration it better.
What books, or sites, or recipes, or whatever else you can recommend (they may be about productivity, or negotiation, or thinking – anything you think will help me live a better life as a programmer)?
Chad Fowler’s “The Passionate Programmer” is amazing. Also “The
Pragmatic Programmer” by Dave Thomas and Andy Hunt. Those books teach
you how to excel at your career, and not just how to write code.
How much time per week do you work? How do you keep yourself productive and focused?
I try pretty hard to stick to a 40 hour work-week, and sometimes it’s
even less than that (during the summer, 37signals institutes a 4-day
work week!). Working long hours is a good way to burn yourself out and
drain your productivity, so try to work less, not more. There are
always going to be deadlines, and the occassional late night, and so
forth, but make those the exception, not the rule. Live for something
other than work!
I also have a stand-up desk, and work about 1/3 of the time standing
up, 1/3 of the time sitting (on a bar stool), and a 1/3 of the time
“leaning” against the bar stool (semi-sitting, semi-standing). I find
that changing position and posture every so often keeps me focused.
Also, I’ve lately been trying to have far fewer windows open at a
time, and only opening my email once an hour or so (instead of having
it open constantly). Fewer distractions == higher productivity.
I use a Mac, and although I used to use “Spaces” to have multiple
virtual desktops, I’ve gone to having only a single virtual space
where everything resides. (This helps to force me to reduce what I
have open, and to reduce distractions).
My toolset includes vim (MacVim, specifically), Firefox, MRI ruby
(1.8.6, though I’ve been dabbling in 1.9.1 as well), Campfire, iChat (which I hate) and Adium (which I
How do recommend becoming a successful and profitable programmer?
Love what you do. Make time weekly (if not more frequently) to improve
yourself by learning something you didn’t know before (e.g., a library
you use that you had never look inside before, or a new programming
language). Participate in open source; it’s a great way to get your
name out there and associated with actual, working code.
What should every programmer know?
“Programming is not everything.” You’ll be a better programmer, if you
have interests outside of computers. If you don’t have any such
interests, find some!
Please write your thoughts about being a programmer, fun and happy person.
I don’t have much more to add, really, except to reiterate that you
should be well balanced. Computers are great and everything, but you
should definitely have hobbies that are completely unrelated to
computers. In the last two years I’ve taken up both wood carving, and
string figuring, and they have helped me immensely in recovering from
Hope that helps! And again, I’m sorry I took so long to respond.
Thank you very much for your attention and your advices!