Hello, my name is

Dmitry Belitsky

I do web development and live happy life with my family.

Jamis Buck. Back to articles list

How to become successful rubyist

Husband, father, programmer, woodcarver. Reader, writer. Believer.

Hello there. My name is Dmitry, i'm freelance web developer from Ukraine.

I choose you cause i think that you interesing person and famous Ruby developer.

Hello Dmitry! Thank-you for your email. I apologize for taking so long to respond; I received your email when I was trying to get my talk ready for the Ruby Hoedown at the end of August, and then I forgot to get back to you!

How did you find your first Ruby related job?

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.

How do you organize your workspace and what tools are you using while working?

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 love).

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 burn out.

Hope that helps! And again, I'm sorry I took so long to respond.

Hello Jamis! Thank you very much for your attention and your advices!

-->