Pat is a freelancing Ruby web developer occasionally based in Melbourne, Australia. He is best known in the Ruby community for his Thinking Sphinx plugin. Through that, he got a bit carried away on the topic, and has also released a Ruby API for Sphinx, named Riddle, and wrote a PDF for Peepcode.
He’s also organised some of the Rails Camps (in Melbourne, London, and Maine), because they are always amazingly fun weekends, and such fun should be shared far and wide. Beyond the Ruby community, Pat’s also been involved in running a cross-discipline unconference known as Trampoline.
If you’re feeling bored, you could go read his blog, or follow him on Twitter.
My first ruby job was a long-term contract, found through the local user group mailing list. I'd been dabbling in Ruby and Rails for close to a year before that, and was starting to feel confident enough that I could get paid for using Rails. I wasn't an expert, but knew enough about general web technology that the interview went well and I got offered the position.
Where, and how, do you search for work now? Can you give me some advice on the best ways to find Ruby related work?
These days, I regularly have people getting in touch with me to see if I can help them out. Sometimes I have spare time, and I'll mention it on Twitter, which occasionally brings in a few responses.
If you're starting out, though, then you really need to focus on building your profile. Regularly attend local Ruby events. Improve any open-source projects you find interesting, or start your own. Help out (and ask for help) on mailing lists. Use Twitter (or whatever social networking site takes your fancy) to stay in touch with friends and peers - if they keep seeing your name, and proof that you know Ruby, then when they're in need of someone for that kind of work, they'll likely think of you first.
Getting to Ruby events is really valuable - whether they be local user group meetings, conferences, hackfests or Rails Camps. Networking can be a dirty word, but socialising should be the goal.
And sometimes, you're going have to actively seek out work. Let people in your local Ruby community know you're looking for new contracts or employment. Keep an ear out for any generic tech opportunities where you can use Ruby. There's Ruby jobs sites out there - use the RSS feeds they provide.
What advice would you give a Ruby beginner without any projects ready to show?
If/When you start a personal project, make sure it's something you need - because if you're not going to use it, you're not going to care too much about it when things get tough. And they will.
If you don't have your own project, but you can see how other projects you use can improve, then offer patches, and help with support via mailing lists and IRC. If you're working with people and with Ruby code, you'll become a better Ruby developer.
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?
Stop dithering and get an accountant instead of wasting your own time managing finances. Don't be afraid to say no to potential clients and projects. Don't get so wound up about talking at Ruby events. Breathe.
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)?
I think a lot of technical books are great as reference points, but I get a lot more brain-food from books that aren't so focused on code. One in particular that I've read recently is Nic Frances' The End of Charity. It's nothing at all to do with development, but covers some good ideas on how to run businesses from an ethical and social perspective.
Fiction can also inspire some interesting concepts - in Charles Stross' Accelerando, people can create businesses in a massively streamlined process. I'd love to see this simplified down to the point of a web service where you enter in a handful of details, and the business is automatically registered, bank account set up and the boring legal side of things is all taken care of.
On a more pragmatic level, having PDF versions of technical books is massively helpful, even though I do prefer holding a book in my hands.
When it comes to websites, I find O'Reilly's Radar blog and the WorldChanging blog great sources for new ideas and different ways to think.
How much time per week do you work? How do you keep yourself productive and focused?
I've spent the vast majority of the past 15 months travelling, so I've usually not been working full time. That said, I'm not a fan of full-time hours - I like to work part-time contracts, which allows me to spend time on my own projects as well. These could be open source libraries, events like Rails Camps and Trampoline, or just catching up on sleep.
Staying productive is an eternal battle, but I've found the pomodoro technique helpful recently (25 minutes focused work, 5 minutes relaxing, and repeat). When I was in Cambodia, I was generally working offline, which massively cuts down procrastination options, and I could manage a few hours in a row of dedicated focus. In developed countries, where internet is almost ubiquitous, this is harder to do (from a self control perspective - technically, it's not hard at all), but I often will ignore email, Twitter and IM when I'm pushing through some client work.
Also, you need to recognise that sometimes you're not going to be productive, and that's okay.
The travel has made having a fixed workspace difficult, but I will generally try to have a proper desk and chair to work from, and I use a laptop stand, external keyboard and mouse. This is all in attempt to maintain (or really, recover) a good posture and avoid RSI.
TextMate, Terminal and Safari are my development tools of choice. I use Mail for email because I'm often offline, and that doubles as a task tracker as well (borrowing a handful of elements from the Inbox Zero/Getting Things Done mantras).
How do recommend becoming a successful and profitable programmer?
And how do you be successful programmer? I don't want to be too simplistic, and I'm definitely no expert, but I think the key is to write good code, and to help others write good code.
What should every programmer know?
Humility, a willingness to learn, an appreciation for standards, a desire to improve both your code and yourself, and a willingness to read the source code of libraries you use.
Hope this is somewhat interesting and useful.
Cheers
Thank you so much! It was interesting.