The Newest Rogue
Every week a group of Ruby Enthusiasts get together in a Virtual Roundtable and explore/discuss/argue some aspect of the Ruby language or the Ruby community. They allow the rest of us to listen in on their discussion by way of The Ruby Rogues podcast. The podcast can be accessed on iTunes or on the website and offers a ‘fly on the wall’ view of a great bunch of technology savvy people sharing their ideas and opinions.
In this series of articles I will share the results of my interviews with each member of this special group.
Katrina Owen is the most recent member of this team. In this interview Katrina shares her background, passion for pair-programming and teaching, and the ‘newbie’ perspective she represents in the Ruby Rogues podcast.
Scientist turned Programmer
Thom: The first thing always is, who are you? Tell us a little bit about yourself, please.
Katrina: I am a self-taught developer. I kind of fear calling myself a programmer, because I have no Computer Science background. My background is in Molecular Biology and Biological Chemistry. I fell backwards into programming, when I was at University.
Thom: Where was that, that you attended university?
Katrina: This was in Norway.
I graduated from the University of Oslo, in 2006. I finished my required courses a few months early, so I think I officially graduated in 2007.
I had been playing around with computers for a few years at that point. I got my first computer when I started studying and the first thing I did was put Linux on it. I got sucked into computers through just playing around on the command line, then discovered the Web. I was very, very late to the show. I started helping people with their websites and debugging things and people started paying me to help them and finally I just ended up knocking on someone’s door and asking if they needed any help; this was a one-person web development shop. They happened to have a three-year backlog of work, so I just kind of came in for a few months and helped them shovel websites, basically.
When we got through the backlog, I knocked on another door, a fashion start-up in Los Angeles. Their basic idea was that they would match your measurements as a person to measurements of clothing and then show you the intersection and narrow it down by what would actually flatter your proportions. I thought this was a brilliant idea because then I might never have to go shopping for clothes again!
They happened to need help and at this point, I wasn’t a developer by any means. I had played around with a lot of code, I had built some things, I knew enough PHP to be dangerous. They basically had me just helping debug things, troubleshoot, fixing bugs, testing.
Within a few months, I was doing quite a lot of actual development work. I ended up doing a lot of the deployments for the first couple of years and ended up automating a lot of this and working on trying to get a Continuous Integration environment in place. Of course, most people weren’t writing tests, so the whole continuous integration thing was a bit of a blind alley.
Thom: Primarily a PHP shop?
Katrina: Oh, yeah, well, we had two parallel stacks, there was the LAMP stack and then there was the .NET stack. It was kind of complicated, a lot of internal tools. Some of the internal systems were in PHP, some internal systems were in .NET, and they’d communicate by databases.
Thom: That’s ugly.
Katrina: Yeah, well it was a start-up and they basically started out with a prototype, it got a lot of attention, and the prototype ended up in production. There was a lot of excitement. A lot of interesting things were being built and tried out and it kind of went too quickly to really have some clear idea of architecture, I think. So a lot of crazy things happened to make stuff work and for a while, I think it worked for them. I only stayed there for about three years, so I don’t know the end of the story.
PHP, Python or Ruby
Thom: So that story still leaves open the question, how did you discover Ruby?
Katrina: I was in this PHP world and I was very frustrated by the lack of focus on quality, on stability, on being able to verify that the systems are complete. I mean, there was a lot of slinging code, shoveling code, deploying and praying and hoping that things would work out.
So out of frustration, I started looking around. I’d go to the bookstores and try to find solutions to things. I had stumbled across a lot of the literature about refactoring and testing, so through reading all of this stuff, I started experimenting with testing. And I really tried hard to get my team interested in it. I think I tried too hard; I was not a very persuasive person.
Thom: Was that because you were pushing too hard with your approach? Or was it just the fact that you became annoying because you wouldn’t give up?
Katrina: Yeah, I think it was all of that. I think my approach was just wrong, I think that I was annoying, and I also think that I was in the wrong environment for it. They really just were not interested in the whole testing/TDD/BDD/CI thing.
So I looked at other languages and in particular around the community – or the perceived community (community is a very strange word I think) – but the perceived community around these languages and I found that with both Python and Ruby I really enjoyed their focus on both quality and processes, and in particular I was very attracted to the XP practices. I really appreciated the way that both Ruby and Python developers talk about code.
So, just on a whim, I picked Ruby. I didn’t have a good reason to pick Ruby rather than Python. I liked what I saw from both of them, just started learning it and teaching myself Ruby.
Thom: Was that with Rails or you were interested in Ruby just as the language and you were no longer focused on doing web-type stuff?
Katrina: Mostly just Ruby in itself, but all of my experience has been web-related. I haven’t done any sort of hardware hacking or embedded programming or desktop applications or telecommunication-type programming. It’s all really been web-focused. I landed in Ruby and Rails and Sinatra very quickly.
Thom: You would call yourself then a self-trained Rubyist?
Katrina: Yeah. I would go with that.
Thom: How did you discover the Ruby Rogues then?
Katrina: Yeah, there’s a story for you. When I had learned just enough Ruby – again, to be dangerous – I’d been building things in PHP for maybe three years and I’d had a little bit of Ruby. I moved back to Norway, and I got a job immediately with this really cool company that makes their own products and then they do consulting on top of those products; to provide customizations.
After about a year and a half with them, I went to my first Ruby conference in Sweden; Nordic Ruby. I met some pretty amazing people and I just talked to everyone. I was this complete nobody and I was talking to people like Joe O’Brien and Chad Fowler and Jeremy Hinegardner. It was just thrilling to feel included in conversations that, let’s be honest here, were way over my head. It was a ton of fun.
At several points during this conference, both Joe O’Brien and Chad Fowler said, “You should submit to talk at conferences.”
And I was like, “Yeah, no, that’s not going to happen.”
They said, “No, really, you should. It’s really, really challenging. It can be very difficult and terrifying, but it’s worth it and you should try.” I was like, “Yeah, no, it’s not going to happen.”
About six months later, I woke up one day and thought, “Hey, I should submit to a conference.” So I ended up submitting to Nordic Ruby for the next year and got accepted. I did my talk, Therapeutic Refactoring, and it was really well received and a couple of the people in the audience were organizing other conferences and they invited me to present the same talk at their conferences.
It’s the only thing I’ve ever done. Seriously, I am not one who’s done anything interesting ever, aside from this talk that kind of got picked up randomly and people really, really liked it. So the video from Cascadia Ruby and Scottish Ruby did the rounds, and James Edward Gray II saw one of these recordings and invited me on the Ruby Rogues to talk about the presentation. I had heard of the Ruby Rogues and I had listened to a few episodes, but I wasn’t a regular listener at that point.
Becoming a Ruby Rogue
Thom: You are the newest Ruby Rogue. And the one with least experience, right?
Katrina: Yes, I’m definitely by far the most junior. I represent the beginner, I try to ask the beginner questions, just because that’s who I am. The others have been programming for many, many years. But I bet I’m probably older than both Avdi, Chuck, and David.
Thom: Tell me a little bit about how does that feel to be among people like Avdi and James, people who have committed to Rails itself, people who have been writing code since the days before Ruby or when Java first originated?
Katrina: It’s an amazing gift. I feel very, very privileged to be invited into this group of people. They are exceptionally smart and tremendously accomplished. Also, very, very kind. They are really nice people. I don’t quite understand how I ended up there. It seems to me that there are so many people that are far more qualified than I am to be on the show, but for some reason they enjoy having me there and I really enjoy being a part of it.
I’m allowed to take part in all these conversations about technology. A lot of times it’s about things that I know very little about, people that I have heard speak or have read things that they’ve written. I just feel very privileged.
Thom: That’s wonderful. You’re humble enough about it. What are you doing now besides the Ruby Rogues that you’re excited about? Something in technology, I’m sure.
Sharing, Teaching, Continually Learning
Jumpstart Lab has a lot of content, they try to open source absolutely everything they do, though some of the ad hoc stuff kind of never makes it into a formal tutorial that goes online.
The third thing that they’ve started doing, last year, is an experiment. They worked with Living Social to do the Hungry Academy program. This was a five or six-month program where they took 24 people who didn’t necessarily have a developer background and gave them training in the basics of good development practices for Ruby and Rails and Web along with pair programming and testing and other collaboration and communication aspects of working as a developer in a Ruby and Rails environments these days.
In those five months, they gave these people a very solid background. They created some really solid, professional junior developers that are now currently working at Living Social; I believe all 24 of them got hired at the end of the program.
Thom: I had heard about that program, what a great idea!
Katrina: Yeah. It’s really exciting. There are a lot of people who are skeptical. Some people are skeptical of people doing programming at all without a Computer Science background, and I think that’s fair, on the one hand. On the other hand, there’s a lot of building and making things for the web that doesn’t require a deep, deep knowledge of the internals of compilers or other lower levels of building things. You can get a lot of things done, and there’s a great need for people who can build things, and don’t necessarily need to understand electronics and the physics and the details behind it.
Thom: You’re absolutely right.
Katrina: So I think both sides have a fair take on it. So the extension of that, they’re doing a similar program to the Hungry Academy, except it’s in Denver at the Galvanize coworking space and they’re calling it gSchool; “g” for Galvanize.
Thom: When is that?
Katrina: Oh, it started in January. One of the reasons Jeff brought me in was to be a supporting instructor, so basically pair program with the students; do code reviews, one-on-one, sort of coaching and some group instruction as well.
Thom: So from your early, very clinical, technical background and schooling, you’re now doing more “soft” technical and you’re teaching. Is that a complete shock or does the realization kind of surprise you? How do you feel about that?
Katrina: It’s kind of funny. I never expected to teach, because I don’t see myself as a teacher at all. Even now I kind of don’t feel like a teacher. Most of the time I’m writing code, though a lot of the code I’m writing now is sample applications or exercises. We do have a focus, or it’s important to everyone in Jumpstart Lab to participate in open source so we get time to spend on that, which is nice.
Thom: Like Google’s “20% Time”?
Katrina: Yeah, like that. It’s nothing formal, but usually Fridays we spend time working on open source stuff.
Katrina: In many ways, I feel like this is a lot like the ideal development environment. I wish that every single development job I had I could pair program and learn as much about the technology that I’m working on as we do when we’re pairing with the students. I really enjoy that aspect of looking to really understand how things fit together, how to do a better job, how to organize and arrange code, how to design your applications better, how to write better tests. All of this is something that I find deeply engaging. I actually wish that all of the development positions I had prior had a lot more of this aspect of collaborating to improve our own skills.
Thom: Maybe a final question; Is there a talk that you haven’t given yet that you have planned or that you would like to give?
Katrina: Probably several. I’m working on two talks right now that I’m actually really enjoying, sort of exploring. One has to do with testing, mostly, and refactoring. The other has to do with a sort of ‘moral dilemma’ that we as developers face:
A lot of the code that we deal with is difficult to understand, it’s messy, it has tight coupling, it has a lot of dependencies that go in crazy directions, and often we’ll be working on something and then we’ll come up against some tangled portion of code and the question is, “Okay, do I look at this code and determine whether there are issues here? Do I dig into it? Do I try to understand it? Or do I just leave it where it is, walk away, and work on something else.”
Because we have a moral obligation to improve the code base, to improve the quality and that could be the readability of the code, or the stability, it could be fixing bugs, it could be adding documentation or adding tests, but we do have some form of obligation to the codebase and to our team members (and to ourselves) to improve the codebase. We also have an obligation to the customer, whoever is paying for this code or this work, to not spend their money in a way that’s ineffective for them.
This is a really difficult decision. It’s, “Okay, do I fix it or do I walk away? Do I refactor? Do I rewrite?” I’m finding this topic compelling. I’m enjoying exploring it.
Thom: We will watch for your next talk in anxious anticipation. Thank you, Katrina.
You can find Katrina Owen: