1st September 2009
Yehuda Katz Interview
Yehuda Katz is a member of the Ruby on Rails core team, and lead developer of the Merb project. He is a member of the jQuery Core Team, and a core contributor to DataMapper.He contributes to many open source projects, like Rubinius and Johnson, and works on some he created himself, like Thor.
My first Ruby-based work was in an organization that was doing ColdFusion and PHP work. After a bit of time working there, I prototyped the next version of their app in Rails, allowing me to move much more quickly than I could in PHP or ColdFusion (even without much experience at the time).
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 am currently working on Rails at Engine Yard and am very happy, so I’m not looking for much work. A pretty good idea would be to contribute heavily to open source, and then look for work at companies that look at open source work as equivalent to a resume. If you build up enough really good open source work, you’ll soon find people clamoring to hire you.
What advice would you give a Ruby beginner without any projects ready to show?
Again, get started in open source. There are a number of great app projects that are open source (like Radiant, Spree, or even Beast) if you want to dive into app development. There are also plenty of opportunities to build or help with adapters for existing libraries, like Sphinx, MongoDB, or anything else. If you’re new to Ruby but an expert in some other project, why not dive in and improve the Ruby integration with that project?
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?
When I first started working with Rails, I worked very hard to convince people to use Rails. In retrospect, I should have simply sought out work with people already convinced, which is what I ended up doing after my first few jobs where I was able to use any Rails. At the danger of repeating myself, the way to make this happen is to build up your Ruby skills in open source, and then parlay them into work with people seeking more experienced Rubyists.
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)?
Despite the general animus between Joel Spolsky and the Ruby community, I learned a lot by reading Joel on Software, and especially some older posts about management and marketing on his blog. He doesn’t post a ton, and not everything he says should be taken as gospel, but there are definitely some nuggets of wisdom there. It’s also definitely worth reading some of the work of Martin Fowler and “Uncle” Bob Martin. Some interesting snippets can be found at www.c2.com and martinfowler.com. As you get more advanced, you might be interested in the patterns at martinfowler.com/eaaCatalog. One warning about patterns: while they are generally conceptually portable to Ruby, the ceremony needed for implementation is often considerably shorter.
How much time per week do you work? How do you keep yourself productive and focused?
I work 40-50 hours a week at Engine Yard and probably another 40 hours a week at home. Working in a pair with Carl helps tremendously with productivity, and keeping in mind that every hour of work I do will impact probably thousands of hours of other people’s work keeps me pretty motivated.
I use Textmate (I guess I’m not a “real” hacker) and Terminal for most everything I do. For git, I use the terminal and GitX (mostly to organize larger commits before committing). I often use Textmate for hacking up short bits of code and just running them in Ruby; I’ll often run some unsaved code in a single Textmate window with apple-r for things that are just a bit more complex than IRB can handle.
How do recommend becoming a successful and profitable programmer?
If you figure out profitable, let me know! To drive a stake through the heart of this one, do open source for success. You’ll instantly get access to a ton of smart, motivated peers who will be excited to look through your work and offer feedback if you’re excited and motivated to contribute.
What should every programmer know?
There’s nothing new under the sun. With that said, simply improving the interaction of an existing paradigm can make a huge difference. Rails and Ruby contain few truly new ideas, but by being relentless about programmer happiness, they innovated significantly.
Please write your thoughts about being a programmer, fun and happy person.
Being happy is all about satisfying yourself. Never let anyone (yourself included) convince you not to do something that will make you happy or fulfilled. I started walking 5-7 miles every weekend, taking in San Francisco’s wonderful views. This is something I’ve always wanted to do, but felt silly about making it happen. Do what makes you happy, and more importantly, fulfilled, no matter how silly.
Thank you, Yehuda. For this useful advices.