Peter Cooper is a digital jack of all trades based in the north of England. He is author of Beginning Ruby — published by Apress — creator of numerous Web properties and technologies, a professional blogger, and an entrepreneur who sold two startups in 2007.
His specialist subjects are writing, publishing, AdSense, Web 2.0, RSS, UNIX, and Web application architecture and deployment.
I first discovered Rails in late 2004 and being a Perl guy I decided to try and implement something like Rails in Perl. It sucked though so I decided to give Rails a try itself (along with Ruby). After I completed a basic project within a few days that would have taken a couple of weeks in Perl, I was sold. So my first paying Ruby related work was that first Rails site I built that I had intended to use Perl for originally. I just began using Ruby for things that I was already doing programming jobs for.
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 almost only work on my own projects now, such as the Ruby Inside blog and RubyFlow. I do not actively seek out any work.
My advice for anyone looking for Ruby related work would be to first get a name for yourself somehow, though primarily through either open source contributions or by developing your own Web sites. Blogging is also a wise step, though often your code can talk for itself. People want to be confident in a person's experience and abilities before hiring them, so having a public demonstration of this is valuable.
What advice would you give a Ruby beginner without any projects ready to show?
Finish some projects :) Alternatively, if that's taking a long time, you can comment on all Ruby related blog posts you can find as long as you have anything half way interesting to say (don't look like spam). Twitter and/or blog about things you find in Ruby that you like and about things that you've learned. Build up a repository of your presence online and keep making contacts.
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)?
Ready Fire Aim by Michael Masterson is invaluable for learning how to get things done quickly and how to get ahead in business.
Coders at Work by Peter Seibel is a great analysis of how some of the world's most famous coders work and think about programming. It's not out till September though.
What Clients Love by Harry Beckwith is full of useful advice if you plan to work as a freelancer / independently.
I would also recommend reading Getting Real by 37signals. It's available to read for free on their Web site.
How much time per week do you work? How do you keep yourself productive and focused?
I don't know. Sometimes I don't do anything I consider "work" whereas other times I spend many hours working away at something I'm not particularly enjoying. Since I work on mostly my own projects it's hard to define. I'd say I'm in front of a computer for about ten hours a day, however, but I'm often just learning things or browsing. When necessary, I keep myself productive by just getting on and doing things without procrastinating - it sounds simple but you can learn this stuff by adopting Getting Things Done methodologies and listening to some of the Tony Robbins tapes on developing strategies for your life/work.
I basically have a desk, two monitors, a Mac Pro, and a pencil/pen and paper nearby at all times. I have portable computers too but I rarely use them for work as I like to work at a desk mostly (though I sometimes have a switch for a week or two). Surrounding my desk I have many shelves covered in books - mostly nonfiction. I read a lot of books as it's the best way to learn.
How do recommend becoming a successful and profitable programmer?
I don't really consider myself a "successful programmer." I have built sites I have sold for good money that required me to program, but I think the business and marketing knowledge I have helped a lot more with those.. I could have paid someone to do the development.
That said, I know a lot of successful (and sometimes wealthy) programmers and I'd say the wealthiest ones are those who started agencies/development shops (or even hosting companies) and have the sales skills to get major development contracts with well known companies. It's not the most fun stuff in the world but it's particularly profitable. Contracting can also be very profitable in certain niches (especially Java).
What should every programmer know?
Business stuff. Productivity stuff. How to produce the most suitable thing with the least amount of effort. How to stop working on something when any extra work is not significantly adding to what you already have.
Thank you :)