Home > Articles > Programming > Ruby

My Life in Tech: Q&A with Software Architect Sandi Metz

  • Print
  • + Share This
Sandi Metz, author of Practical Object-Oriented Design in Ruby: An Agile Primer, talks about where she learned to program, why she considers herself a reluctant author, and advice for those just getting started in programming.

Read Practical Object-Oriented Design in Ruby: An Agile Primer and more than 24,000 other books and videos on Safari Books Online. Start a free trial.

From the author of

Women in Technology

Visit our Women in Technology Resource Center.

InformIT: Where did you learn the most? (School? Self-taught? On-the-job?)

Sandi:  I'm incredibly lucky. I fell into programming quite by accident, back when programmers weren't all that common. After several years of college I was a failing music student looking for a temporary way to make living, and one day at the mall I ran across representatives from the local Vocational-Technical school.  They promised practical training for actual paying work (a very attractive thought at the time) and I registered at the school, where despite my protests they stuck me in “data processing”.

I had no idea what “data processing” was and the only additional information they could offer was that it involved “computer programming”.  As difficult as it may now be to believe, this was the era of pocket protectors, and “computer programming” was in no way cool. I resisted their plan until the first day of the first “data processing” class, where we wrote three Fortran programs. After that day cool ceased to matter; I just wanted to write more code.

So, the full extent of my formal training is six months of Vo-Tech school where I wrote Fortran, RPG and COBOL programs and studied double entry bookkeeping from a painfully dry accounting text. I wrote every program they devised but am uncertain about whether I finished the accounting.

I got my first programming job in 1981; I've written code for a living for the last 32 years. In the early days of my career we non-academics improved our skills by trial and error, but these days the open source revolution has changed everything. I won't claim to be “self-taught” because nearly everything I know originated with someone else being generous about their hard-earned knowledge, but I'm certainly not “school-taught”.  Perhaps I'm “other-taught”, and it would please me to imagine myself as now also teaching others.

InformIT: Why did you decide to write a book, and why do you call yourself a “reluctant author”?

Sandi: I had no intention of writing a book, and if not for my editor at Addison-Wesley, Debra Williams-Cauley, I'm quite certain that it would never have occurred to me.  First of all, most programmers, given the choice between writing a book or writing code, will choose code hands down; it's way more fun. Even the painful parts of programming are fun--unlike the painful parts of writing a book, which are, frankly, just painful. I didn't see myself as an author and felt jealous of what little free time I had.

I met Debra at the first RailsConf in 2006 when she overheard a hallway rant and decided I was author material. I found this thought utterly ridiculous. Over the next several years Debra persisted; during this interval I started giving talks at conferences. The talks were well received and Debra kept the pressure on, experimenting with argument after argument. Eventually she landed upon the most guilt-inducing arguments imaginable. She challenged me with the following:

    1) "You use open source software and don't give back."
    2) "There is no technical Ruby book with a woman’s name on it."

I know, this hardly seems fair, but what can I say?  I caved.

InformIT: What are technology companies missing out on by failing to employ more women?

Sandi: Research indicates that diverse teams are more innovative and creative, and that they generate more high quality solutions than less diverse groups. What technology company would willingly miss out on this? Diversity makes practical economic sense that affects the bottom line; creating workplaces that support it should be a no-brainer.

InformIT: You speak at a lot of conferences. Which has been your favorite, and why?

Sandi: If I can say this without seeming trite, every conference is great in its own way. The folks who go to conferences care about their craft and their community, and the organizers of conferences commit time and often their own money to making them happen. As someone who is really bad at event organization, I am deeply grateful that folks organize these events.

Having said this, I must admit that there's a special place in my heart for GoRuCo (the Gotham Ruby Conference in New York City). The folks at GoRuCo adopted me when I was a complete unknown, and I'll never forget their grace and generosity. I look forward to GoRuCo every year and do my best to get to NYC for it.

InformIT: What advice would you give someone who is interested in speaking at a conference for the first time?

Sandi: Keep a list of your rants; each is a potential topic. Start giving talks in smaller venues, like local user groups. Consider toastmasters.

Accept that fear is both state of mind and a fact of life. It needn't stop you from speaking. Ask for help. Ask other speakers for help with your talk and ask conference organizers what you can do to get picked.

Remember that the only difference between you and speakers is ... that they speak.

InformIT: What advice would you give someone who is just getting started in programming?

Sandi: Write a lot of code. :-)
Pair with other programmers.
Cultivate humility.

InformIT: What’s the most important thing to know about writing tests?

Sandi: Don't do too much.

InformIT: What's the best part of doing what you do?  (What’s the favorite part of your current career?)

Sandi: I have spent my working life solving hard and interesting problems while wearing extremely casual clothing and acting on every nerdly impulse. It's just about perfect. Now that I've written a book, I get to travel to new places and look at harder and even more interesting problems, while still wearing casual clothes and acting the nerd. Every day I learn something new, my world keeps expanding.

InformIT: What do you want to do next?

Sandi: I'm currently making a video series for "Practical Object-Oriented Design in Ruby", so I'm learning about screen casting and making video content. I swore I'd never write another book but find (confession) that I actually miss the writing, so there's more of that in my future. And of course, I'm working on my own software projects. Now that POODR has been published and I'm making a living teaching and consulting, I get to write exactly the code I please, so this is a real delight.

InformIT: What do you do for fun?

Sandi: I love cycling and most anything else that involves outdoor play. In the last few years I've been buying frames and assembling my own bikes and now have enough confidence in my own mechanical abilities to take long, self-supported cycling tours. Last year my partner and I rode across New York State, the year before, across Missouri, and before that from D.C. to Pittsburgh. These trips are the perfect antidote to sitting at the computer all day. Building bikes is just like building software--except for the part where your hands get greasy.

For more articles and resources, visit our Women in Technology page.

  • + Share This
  • 🔖 Save To Your Account