DAVID: So, the cleaning staff comes in here every night and they clean the desks in the training room with Armor All; so the desks are slimy in the morning. So, that’s why it took me so long to move to the back of the room. I moved to the back of the room, and then I have to de-slime my desk.
DAVID: I mean, because all programmers are 12-year old boys who have discovered that the cool thing you can do with this is you can sit on a desk that’s been cleaned and then scoop off and it leaves a perfect butt print.
[This podcast is sponsored by New Relic. To track and optimize your performance, go to rubyrogues.com/newrelic]
[Hosting and bandwidth is provided by The Blue Box Group. Check them out at bluebox.net]
CHUCK: Hey everybody and welcome to Episode 63 of the Ruby Rogues Podcast! This week on our panel, we have Avdi Grimm.
AVDI: Hello! Hello!
CHUCK: We also have David Brady.
DAVID: Hello and welcome from muggy, cloudy, rainy, flash floody Chattanooga, Tennessee.
CHUCK: And Josh Susser — who just dropped off.
JOSH: [laughs] Oops.
DAVID: He just dropped back in.
CHUCK: He just dropped back on– in. Yeah.
JOSH: That’s what happens when you reach for the mute button but accidentally hit the big red button that scream “Hit me! Hit me!”
JOSH: It’s all red and shiny.
CHUCK: And I’m Charles Max Wood from devchat.tv and this week we are going to be talking about “Hiring Ruby and Ruby on Rails Programmers.”
DAVID: And please if anybody has a job, he is talking about me. [laughter]
CHUCK: So I think it’s kind of interesting of a couple of reasons that we are talking about this. I think we’ve all have been a part of hiring process as we talked about before the show, but it’s kind of funny to me that I think Avdi, Dave and I are all self-employed and Josh is still in the early stages of a start-up.
JOSH: So I’m essentially self-employed.
CHUCK: [laughs] Yeah exactly. So, you know, kind of funny. I do have some sub-contractors and like I said we’ve all been part of the hiring process in one way or another. So it should be kind of interesting to see what we come up with hiring programmers. Now, somebody’s question as Josh that is pointing out before the show, are little bit silly.
JOSH: [laughs] Okay, from the user voice.
CHUCK: [laughs] Yeah can I just read it?
JOSH: [laughs] Okay.
DAVID: In fact, let’s just read that one and almost treat it like it’s serious.
CHUCK: How to interview people for Ruby and—Okay. So, the title is “Hire People for Ruby and RoR Jobs”. How to interview people for Ruby and RoR jobs, what questions to ask, how should the ideal candidate look like, what must they know, what if the applicant is a girl?
DAVID: Okay, so what if the applicant is a girl changes how should the ideal candidate look like. [laughter]
AVDI: No, it doesn’t. [laughter]
CHUCK: They should look like a girl if they are a girl? Is that what you are implying Dave?
DAVID: Yeah I’m not even going to go there.
DAVID: I started with a —- joke and I’m just going to back away slowly now. [laughter] First rule of holes, when you find yourself in a hole, stop digging. [laughter]
CHUCK: I was hoping you just open wide and let me cram words in there.
DAVID: No, I’ve got both my feet in there right now.
CHUCK: Alright. So now juniors and seniors, how to see prospects of a true pro in a today junior? I guess that is seeing the potential in someone as a junior– junior to become a good senior. How to tell a fake senior from a true one. What is more important personality, good mix or adaptability, teachability, stress management or professional skills?
JOSH: I think the whole thing about fake IDs and people trying to get senior discounts is a serious issue. [laughter]
DAVID: I can’t take credit for this joke; But somebody on Leno is like, “Yeah my grandma broke her leg.” He was like, “Really, what happened?” “Well, she was spray painting ‘Go seniors!’ on an overpass and she slipped and fell.”
JOSH: [laughs] Nice. Okay. Well, I’m guessing that some of the language in there was just because somebody English wasn’t their first language.
JOSH: We’ll make some allowances, but there are some good questions in there.
CHUCK: There are. It just seemed like some of them were a little bit funny.
DAVID: You know what, I think there’s over sensitivity to sexism in the Ruby community, and I don’t think that is totally a bad thing.
JOSH: [laughs] Okay.
DAVID: But I just kind of wanna– what if the applicant is a girl? And I just wanna respond to that question by saying, “Don’t worry, you are pretty — about it.” [laughter] If they can program, hire them.
CHUCK: Yeah exactly. If they are the most qualified person that doesn’t matter what gender, race or anything else they are.
JOSH: Let’s get into the topic and then we can talk about equal opportunity employment and stuff like that.
CHUCK: Oh, now you are going to give me a head ache? Okay.
JOSH: [laughs] well, I like to share. [laughter]
CHUCK: Alright. So one of the things I wanna talk about first off — and this is a topic that come up every so often — is the resume dead?
DAVID: My dear lord. I hope so.
JOSH: Well, I think it depends on what kind of company you are at. If you are in a big company, I think resumes are still useful for just getting yourself into the hiring queue.
DAVID: I swore off resumes in 2006 or 2007. I basically said I’ll never– never again I’m going to stop updating my resume. If somebody wants a resume from me, I don’t wanna work for them. Or, if they want a resume before they interview me, I don’t wanna interview with them. I don’t even wanna work there. And I had two jobs after that point in time, where I hired on because I knew somebody and I got to talk in to people and I network at conferences and what not. And the company was just big enough to have an HR department and after I hired on and signed my paper work and was on the payroll, they came to me and they said, “We need your resume for your personnel file.” And I was like, “Why?” and they were like, “We just need it.” So like no good reason at all. And so I found an ancient copy of my resume and looked at it and said, “Well, everything here is true.” So basically it’s a win-lose situation right? If your resume is accurate, it’s not a win-lose, it’s a zero or lose proposition. Because if our resume is accurate it does nothing to your employment; but if there is a typo if or if heaven forbid you lied on your resume, then they can fire you for it.
JOSH: Yeah and you have to step down as CEO of Yahoo.
DAVID: Yeah, exactly.
CHUCK: Yeah but for CEOs, what if the applicant is a girl? Didn’t they hire… what’s her name from Google?
CHUCK: Yeah. Seems like a smart, smart girl– smart person. Anyway, so yeah the only thing that I get out of resumes is just, “Oh, okay. I can see where you worked and how long you were there.” I mean, there’s really nothing else there for me.
JOSH: Well, I think that in a lot of cases, LinkedIn is starting to take the place of the printed resume. Between LinkedIn and GitHub, that is my most of what people wanna see for hiring paper work these days.
CHUCK: That’s true. The thing that LinkedIn gives you is the recommendation. So if they are recommended especially by someone you know and trust, then there’s some real power there. And yeah GitHub just shows you, “Hey, this guy can deliver in these ways.”
AVDI: I saw and interesting comment about the GitHub thing, which is that if a programmer is hired by a company that primarily looks at their GitHub profile for whether to hire them, then they should require that company to let them work on some open source work– doing some of their work as open source. And I thought that was really insightful point because, I think a lot of companies are using people’s open source contributions as a way to just a resource without necessarily giving back.
DAVID: As a way to reel them into closed-source dev.
AVDI: Exactly. I mean they are basically, “Thanks for releasing that stuff so we can judge you. Now don’t release anymore.”
JOSH: Because they don’t wanna make them unattractive target to be hired away from them now.
CHUCK: Yeah but at the same time, having that job, that awesome amazing job was sort of a resume builder so to speak before. So, I kind of like Avdi’s point of now that GitHub more or less is their resume, you allow them working for you to be able to continue to build their resume.
JOSH: So I think that the whole GitHub thing is awesome if you go and look at somebody’s GitHub account and you see that they have great contributions and they are really involved in open source, but I try not to use that as the only indicator of someone’s skill and ability. Because there’s many people who work at companies that don’t support them during open source work. They don’t really have opportunity to get into it.
JOSH: And if you look at their GitHub account, you might have tons of really great stuff that they have done on closed source projects but you just don’t see it.
AVDI: That is absolutely true. And if you have a job at a company like that and you have kids, then there’s very good chance that you don’t have time to do that after hours open source development. I’ve talked to tons of programmers that were exactly in that situation.
CHUCK: Well, I’m not in a job like that and I have kids and it’s still hard.
DAVID: I wouldn’t say that the resume is dead, but I would point out two things about it; one is that it’s an artifact of the ecosystem prior to social media. If your resume is your primary way of getting a job in the web 3.0 world, then maybe you need to reconsider your career strategies because you are backing an old, old horse. But I think I remember what a resume is don’t over stress it. The point of a resume is to get you an interview and it’s not to get you the job.
JOSH: I said that thing verbatim to so many people. It’s really important to keep that in mind. Resumes are I think a strange beast and the language that people use in resumes is so particular to resumes. Sort noun less or subject less sentence fragments that people use all over the place.
DAVID: And no articles like “the” or “a” . “Worked on system for migrating transactions.” JOSH: Yeah. [laughs]
AVDI: I don’t know if it’s still around a long time ago I was like, “You know what, screw this.” I had my regular resume. If you really, really want it, I have a link somewhere but my main resume that I put up, you know what, this is the resume that I wanna write and it was like in such and such a year I did this and I just basically told a story and I used the word “I”.
CHUCK: Yeah and the only other thing that I’ve ever seen resumes used for beyond getting the interview and setting the tone for the interview I guess is I’ve also seen the hiring manager use the resume to justify the hire to their manager. Because then they can go and say “He has 5 years’ experience and he’s done this kind of stuff. And so he is definitely the candidate we want.” Usually, they are being micro managed a little bit, but it is to something to be aware that you may actually. You can’t just blow it off as it’s just what I need to get into the interview. It still needs to look nice and well represent what you’ve got.
JOSH: Yeah. So I’m pasting a link into the chartroom here. So this is a URL for a sort of vanity resume site for a friend of a friend. My friend showed me this. And this guy is a product marketer and like product marketing guy and designer. And he put together this amazing like one-page website, which is his resume and it’s one of the most awesome things I’ve seen lately.
CHUCK: Wow. It almost looks like Disneyland on there.
JOSH: Yeah it’s great. Yeah it’s the whole like, hit the spacebar and scroll it’s the snap scrolling thing. Anyway, so for the folks listening along, this was whoispaulyting.com and we’ll put it on the show notes. [laughs] It’s great. This guy really went all out. And if I were looking for a product marketing guy and I saw this page, I would be like, “Oh this guy is awesome. I’m going to talk to him.”
CHUCK: Yeah that’s awesome.
JOSH: So, mission accomplished.
CHUCK: Yeah a little bit uniqueness there.
AVDI: Although if you are a programmer, I don’t feel like you have to make a page that sells you like a product marketer. I see stuff like this as sort of a stereotypical programmer, I see stuff like these and I’m kind of intimidated because I think there is no way I would ever come up with something like that.
JOSH: So, I put my resume online years ago. I actually sat down and wrote and HTML page by hand because it was that long ago. And so, I saw other people doing this around the same time too and the one thing I will say about if you are going to do that, make sure that your CSS and your HTML don’t embarrass you.
CHUCK: Yeah. I mean even if you have to go buy a theme for WordPress or an HTML layout of some kind because you are not really great at that, I mean something that looks OK.
JOSH: I just mean, if you are going to look at the HTML close your p tags.
CHUCK: Oh, you are talking about that?
CHUCK: The actual programming of the page?
AVDI: That’s actually a good point.
CHUCK: Does that matter?
AVDI: For some people, yeah. Because they will be like, you know, “Aha! I caught you. You used like an off the shelf layout or something from somebody that can barely code.” and somebody will view source and be like, “Ha-ha! You are a fraud!”
DAVID: Yeah. You definitely wanna remove the comment from the top that said “This page was generated by Microsoft FrontPage.” [laughter]
DAVID: So we spent a lot of time talking about something that we declared was dead. Should we move on to like how to hire people? So I have a real short answer to throw off of people. I wanna say it’s either Reg Braithwaite (he’s [laughs]raganwild in Twitter and on GitHub) or it was Rands think (Rands in Repose is his blog– I think), wrote this very short rant about how everybody interviewing and everybody doing interviewing is stupid. And all these questions like, “Why are manholes covers round?” [laughter] You know all that crap or even the Fizzbuzz stuff or writing crap on the white board, he’s like, “You guys are freakin idiots. Do you know what you are trying to do as an interviewer? Do you know what the hell you are doing?” And he said, “I’ll tell you what you should be doing and a lot of people everyone I’ve talked to that doesn’t know this and it’s this; you are trying to find out if they can do the job. And if you are interviewing, you are trying to convince them that you can do the job. And so, let’s start with ‘Do you know that the job is?’ Have you told the candidate what the job is? And if you are interviewing and you don’t know what the job is, then all you can really do is chat with them and see if you like them. All the other exercises that you can do can really, they can be good ice breakers and they can help you reveal if this guy is going to be good fit with the team and that sort of thing. But focus on whether or not they can do the job as you craft your interview questions.” And I found that piece of advice to be astonishingly effective for helping me do much better interviewing of people.
JOSH: Well I think that’s good point. But to speak to the question in the user voice description of the topic, what is more important; personality or professional skills? So there’s, “OK. Can they do the job?” But also can they be a good fit for your team?
DAVID: I see and I count that as part of doing the job. And I actually count that. We are in violent agreement Josh. I consider that part of the job and I consider their personal skills. Like Pivotal Labs talks about hiring for empathy as their primary candidate. I consider that the most– teachableness and eager engagement are the two most important things for me, for anyone to find out whether or not they can do the job. Unless I’m specifically looking for an expert in something, and that expertise becomes the third thing that I look for.
CHUCK: I agree with you Dave, I just wanna put one caveat on that, and that is that they have to have at least some baseline ability. So if they don’t meet like the basic criteria for the ability to do the job, then it doesn’t matter how much of the things that I really price, like the teachability and flexibility and intelligence. It doesn’t matter how much of that they have because they can’t do the job.
DAVID: That goes back to can they do the job? I mean if you need basically an entry level programmer, you need somebody who can successfully complete FizzBuzz in a reasonable amount of time. And you kind of wanna see if they can think and maybe you wanna give them—I mean the question like “Why manhole covers are round” basically, I will still use questions like that, but I use it deliberately, I’m deliberately conscious of the fact that I am trolling this person to see if they have good troll filters. [laughter] Because I’m going to troll them once they come to work. [laughter]
JOSH: Test their critical thinking skills. My favorite answer for that question is, “Because man holes are round.”
CHUCK: [laughs] That’s a good answer. Anyway.
DAVID: My favorite answer to that is “Actually, man hole covers aren’t always round.” That questions the premise. My father is a water operator. He pulls man holes all the time and they are not always round. So, all your clever answers around not dropping– I don’t wanna give the answer away– but oh, so you can’t drop the cover down the hole, it’s a safety thing. Well, actually maybe. Let’s amend the question, “Why are round man hole cover is round?” Why? Because it’s a thoughtology. [laughter]
JOSH: Moving right along.
CHUCK: [laughs] But yea, one thing I wanna point out is there are also baselines for the personality traits. I mean, they can be the best programmer in the world but if they are going to drive you and your team absolutely up the wall, you don’t hire them. But I like the point of, “That is the part of doing the job.”
DAVID: Again its fit for the team. DHH will hire people who are argumentative and persuasive and construct arguments very well, even if they construct them abrasively and aggressively because he values that and he builds team cultures that values that. I am a very non-confrontational person. And I’m very much a consensus builder, so I look for people who are not aggressive. I look for people who are more– I guess DHH looks for people who are more partisan, and I look for people who are more tolerant. Because I am more interested in like wildly diverse team situation and wildly diverse thinking. I love being in a team where there are Vim gurus and Emacs gurus. And the lion and the lamb shall lay down with each other and that kind of thing. Normally, you get those two guys– you put them in a cage and they fight. And when you can find a Vim guy that likes the Emacs guys, you’d want that guy around because I do, anyway.
JOSH: David you are talking like you can take your pick. [laughter]
CHUCK: Oh, that’s right. You live in San Francisco.
JOSH: Isn’t the real problem with hiring Rails developers that there aren’t any around to hire?
AVDI: There aren’t any or there are few left in the big hubs anyway.
DAVID: I missed your point. I assumed that you are talking like you can take your pick between vim and that other crap.
JOSH: Oh, well there’s that too. [laughter]
CHUCK: That goes without saying.
JOSH: So I’m here in sun Francisco, there is a lot of Ruby development happening in this town. There’s a lot of Ruby developers, but there are more jobs than there are developers. So, there is a scarcity. And I think, like Avdi said, that’s like that in a lot of the big hubs. And so, the question that I get from people all the time is, “How do you actually find developers to hire?”
DAVID: So I have an unusual answer to that and that is this contract that I am working on in Chattanooga and I’m out here for two weeks. It’s a five-month contract. It’s two weeks on site to kind of gel with the team and meet everybody. And then I’m heading back to Utah where I’m going to be remote. And this is the 3rd or 4th project that I’ve worked on. Or it’s the 3rd one I worked on 4th one I’ve seen, where they basically said, “We don’t have Ruby programmers in house, but we have these really experienced programmers in other technology x.” (In this case C[laughter] and .NET developers.) And they basically looked at this project and said, “We’ve got five months to do this. There’s no way we can do this in C[laughter], but we can teach our C[laughter] guys and we can teach them Ruby and get it done in five months.” And so that might be a good answer to that question. Where do you find Rails developers? In the .NET community, in the Java community, we’ll hire to pull people away from mobile development because that is going strong and people love it and tend to be happy with it. But you find a lot of career programmers that are like maybe looking for something more a way to branch out in some of the large legacy enterprise languages. They are there and they are smart and they got lots of programming expertise. And with just a little bit of brainwashing, you can reprogram them.
JOSH: [laughs] Yeah and that is actually an approach I’ve seen work well many times.
DAVID: For the benefit of the Chattanooga team, we just came back in the room from grabbing lunch.
CHUCK: So one other thing that I’ve seen; I had a few friends that worked with me at a company here they just moved from — to — a few months ago. Anyway, but those guys, they are not really super good at looking for jobs and I know that they are looking for jobs. One of them quit a month or two ago and the other two are still there until they find something better. And so another good way is just to talk to people who are well connected in your community or in your area and see if they know people like that or might be able to use their contacts; maybe find a second degree or third degree contact to make that work for you. And the thing is, I have recruiters contacting me all the time and so I have been given them these guys names. And I’ve had two other recruiters actually contact me back and say, “Hey, now we need a reference for this guy.” And what that means is that they have contacted him and he said, “Yeah, I’m interested in the job.” And so, just talk around. Just be involved in the community into come up with that way.
JOSH: Can we talk about recruiters for a moment since you have mentioned them?
DAVID: But can we do it and keep our family friendly rating?
JOSH: [laughs] Probably not? [laughter]
CHUCK: Have I told you how I handled recruiters?
JOSH: How do you handle recruiters?
CHUCK: So basically, if you call my phone, my cell phone and you get my voicemail, it basically says, “Hi. I only take calls from people I know. And so, if I don’t know who you are, then you are going to go to voicemail and this is because I have recruiters calling me all the time and I don’t have time to talk to them all. So, if you are a recruiter, send me an email.” And that way I can just give them my canned response from TextExpander and I can just manage it that way because it takes way too much time to talk to them.
JOSH: So, I haven’t had time to deal with the recruiter on the phone in a long time. I’m just wondering if using recruiter is effective for people these days. The last time I was a hiring manager and I was working with recruiters to find candidates, it was like trying to buy used cars from a salesman and you’d say, “Oh, I need a Java programmer and they’ll give you someone who does C[laughter] or somebody that does Cobol.”
CHUCK: [laughs]Isn’t that the same thing?
DAVID: So, that’s the same thing Java.
JOSH: [laughs] Yes.
CHUCK: The only thing I really get from these recruiters is free lunch. “Let me take you to lunch and talk about the people you know.” “OK.”
DAVID: So basically, I totally agree; the recruiters at least 10-15 years ago served a valuable purpose and that is that they were doing the networking for you. And especially if you are in like enterprisey empire building type companies, where you might not be circulating much and you might not be doing the networking yourself, then yeah talk to a recruiter. I’ll give you one tip; only hire one recruiter. Never have two because if two recruiters send your resume to the same company the HR will throw both resumes away, because if they hire you, they will get sued by one of those two recruiters.
CHUCK: Right because they will pay the one and not the other.
DAVID: Yeah. So if you’re having trouble networking, yeah, find a good recruiter or I don’t know how you tell if there is a good recruiter but–
JOSH: David, I’m talking about from the perspective of the hiring manager.
DAVID: Of hiring manager?
JOSH: Yeah. Next to worthless because they are doing networking for you, but they are not doing any filtering.
CHUCK: But isn’t it low risk? Because don’t you only pay them if they find you a person?
JOSH: Okay. So there’s two kinds of recruiters basically; there is the independent recruiters, the head hunters and then there is the in-house people who are part of your company and they get paid on salary not on commission.
CHUCK: Oh wow. I had one of those that email me every time he changes companies. “Are you looking for a job now?” [laughter] I’m not kidding.
DAVID: That’s awesome. So, having your own in house recruiter, that’s just formalizing the job of doing networking. I think that totally makes sense. External recruiters are not free though, Chuck, because every time they send you a reference, they haven’t done any filtering or vetting and now you got to decide whether or not you wanna waste time vetting a stranger.
JOSH: That depends. I think there are plenty of recruiters that advertise that they are doing filtering for you.
DAVID: Oh yeah. They all advertise that. [laughter]
CHUCK: So they are free as in a puppy?
CHUCK: But you still have to clean up their mess?
JOSH: Great. I personally have a policy that I don’t work with recruiters because I have never found any interaction with a recruiter to be useful for me. And if one came along, and was actually useful, I would be happy to work with them but it just doesn’t happen yet. What were we talking about just before the recruiter thing? Before we got into the topic? Oh brainwashing Java developers to become Ruby developers.
JOSH: I think that can work really well. It’s a little harder to spot the right candidate I think because you don’t know how their technical skills are going to translate over. When I’m looking for somebody ike that, I like to see more than one language in their resume.
DAVID: Yeah and you have to be ready for culture shock; especially if they are model language developer. Somebody coming from Java is going to expect a complete robust object system, not the Ruby Gem’s freak show bizarre, where there is seven different flavours of every Gem. And it still might be valid to write an 8th one because none of them work the way you want them to. The .NET developers, they are coming from Microsoft where the tool is amazing. You hit F1; you get this giant document that documents the entire SDK and API. And no, that doesn’t happen in Ruby because the SDK is moving so fast. And so, you’ve got to try and look for (and I’m really enjoying this with the team out here in Chattanooga. They have kind of embraced the culture shock and their hair is all turning white, but they are getting through it) but something that I would check for in the interview process. And that is maybe where you might wanna use some of the trolling questions like, “Prove p=np.” You know, give them just an increasingly hard or bizarre programming challenge. And it’s a psychological test. Basically what happens when they finally get to the point where they can’t do it; how do they deal with that frustration. If they explode, then you know, maybe you have the psyche now because throwing you into Ruby is going to give you a migraine for 6 months and you are not going to cope well.
CHUCK: I wanna see a programmer explode.
DAVID: I’ll try and video tape these guys out here, because they are learning Ruby for the first time, they are learning Emacs for the first time, they are learning Tmux, they have got Git under their belt already, but walking straight into Emacs from Visual Studio and straight into Ruby from C[laughter], I have a pretty good chance of watching a human being spontaneously combust out here and I’ll try to get it on video when it happens.
CHUCK: [laughs] Nice.
JOSH: Okay. So we’ve talked about interviewing and the interview process. I was at Pivotal for like four years and I interviewed a lot of developers the Pivotal style and which was kind of different from the way I was interviewing people before. I was actually ashamed to admit that I used some of those brain stomper questions. [laughs] And I think I mentioned in the previous podcast my sort of idiotic question about trying to rewrite all of the innumerable methods as on top of inject instead of —. Which was actually kind of fun to do in the interviews, but it weren’t very effective. So at Pivotal, they have interviewed– I don’t know how many bajillions of developers; but a lot. And in the four years I was there, I probably helped interview somebody every month or so. So, that’s probably 40 or 50 people I helped interview. And the Pivotal thing was, you come in and you do like a half hour to hour pair programming interview with the CEO. And he’s literally interviewed thousands of people and he does a little pair programming exercise and its fun. He does it in Java because he’s much better with the IDE for Java than doing stuff in Ruby. But you don’t have to know Java because it’s all at the conceptual level during the pairing. And scoring people that is numerically consistent I guess. But if you get through that (and quite a few people do), you go on to do pair programming interview. So, you spend another half day or a day pairing with pivot working on work and a lot of times, it was internal projects. And so I ended up pairing with a lot of candidates that way. And I think the point that Rob makes whenever he talks about this is that, if you are casting an actor to play a role in a play or a movie, what is the first thing that they do? They audition. They show you their acting skills and you would never hire an actor by sitting down and having a conversation with them about how they felt they did in a previous acting job and what were some of the problems they encountered and how did they overcome them. [laughs] You’d actually give them a chance they can show you they can actually act. So, that’s what we did with the pair programming interviews. So at Pivotal, we sit down with the developer or candidate and we would pair with them for half a day or day and see what they got. And there were some very particular criteria that we evaluate people on, like how good were they at Ruby and Rails, did they tend to test drive things well, how are their communications skills; all that stuff. We found that that was a pretty effective way to interview people. It’s more of a commitment, so you need to do some sort of screening process before you get them into pair programming interview. Because you don’t wanna spend a half day or a day of one of your developers time doing this interview unless you think the candidate is worth spending that time on.
CHUCK: Yeah that makes sense. You kind of throw them in the pool and see if they can swim and if they obey all the rules.
AVDI: I just wanna say I completely agree with that. For a few years now, I’ve kind of the belief that the only reasonable way to interview developers in this day and age is just to pair program with them. And it’s true — you have to do some filtering. I was kind of thinking about that and I was thinking, I mean, one thing that you can do though is if you have people that are coming to you and maybe are kind of interesting in working with you and if your company also has some open source development time like 20% time Friday, you know, open source Fridays or something like that; consider having people that are interested in working with you kind of opening the doors a bit and letting people come in and do pair programming in those open source days. And then maybe you are not hiring right now, but maybe when you are hiring, you’ll look back and you will ask around and some people really had a good time pairing with one of people that came in and will say, “Let’s see if she’s available.”
CHUCK: Right. I agree. I’m going to change the topic a little bit here because I think we all pretty much agree on that you know we all really good feel for how somebody is by pairing or spending time with them; how do you convince them to come to your company? Let’s say for example that in some large metropolitan area, there are way more jobs for Ruby developers than there are Ruby developers. So, you can assume that is somebody is out there on a job hunt that they are going to receive multiple offers. So how do you make your offer to what they are going to take?
AVDI: Offer them cookies.
CHUCK: Done. I am moving to Pennsylvania tomorrow.
JOSH: So Chuck, you skipped to the end. [laughter] It’s not just convincing them to take your offer and I think we should talk about that but that is part process of getting their attention in the first place. And that starts with marketing the job. You got to write job description, you got to get the word out there, you have to connect with potential developers and get them to come and talk to you in the first place. I just tweeted last night, I was talking to a friend of mine, he wanted some help in doing his job description for Rails developer, and he sent me the job description that they put together. And it was a good solid middle of the pack job description written in HR Speak.
CHUCK: I love those. [laughs]
DAVID: No. They are like, “Can you type?” [laughter]
JOSH: So the first thing you have to sell the candidate on the company and why they wanna come work for you. And part of that process is speaking to them in a language they understand. So, I have a shortlist of things that developers and really people care about when they are going and looking at a job and the kind of things that people talk about job descriptions usually isn’t that, but I say that the things that people care about are who is the team, what are the tools that you use, what are the development process, where is the job located and the salary and benefits and all that and wants the company culture is like. And that has nothing to do with the product that they are building or any of that because that kind of stuff can change when you go to a company; your job assignment can change and all that. But those things that I’ve just talked about tend to be fairly constant, no matter what project you are working at a company. So, did I miss stuff?
DAVID: No. I did have a thing to add that I think is very profound to me. But I have a very simple yet very hard answer to give and that was, so I grew up lds and of course byu and that’s basically where you go looking for spouses and well just one, these days. [laughter] I just throw at myself that’s awesome. Burn on me. Anyway, so while I was there, I got a really good advice because everybody is anxiously, looking around the dating scene like, “Which one of you are going to be my eternal companion?” and somebody sat down and said, if you want a perfect wife, you need to be the perfect husband. If you want to attract the perfect wife, you need to be the kind of person that the perfect wife for you would want to be with. So how do you attract the perfect employee? You need to sit down and decide what kind of guy or girl is the perfect fit for this company and what do we need to do to be the perfect employer for that person. And if you work conscientiously on that, the right people will find you and the wrong people will leave. And it’s simple and obvious, but if you think about it, it’s really profound.
JOSH: That is kind of beautiful.
DAVID: Yeah. I’m literally saying that if you have a row of cubicles and you want people to be dynamic free thinkers and you know, then you maybe need to get rid of cubicles. You need to ask yourself – all you really need is own up to the fact that what you really want is middle of the pack career programmers who don’t really, you know, aren’t that passionate.
JOSH: There was a great Dilbert – (well, there are many great Dilberts) but there is a particular years ago where Dilbert was talking to the point with the boss and about the salary policies and hiring and the boss says, “I want you to go out and hire the best!” and Dilbert says, “But we only pay them according to industry average. How can we hire the best people if we are only wiling to pay them average?” and the boss is something like, “You know, I want you to hire stupid geniuses.” [laughter]
DAVID: I remember that. Dilbert said, “So we are looking for occupational savant?” [laughter] Someone that will do the work well yet is somehow unable to compare two salary figures and determine which is larger.
JOSH: Yeah right.
CHUCK: That’s funny.
JOSH: Anyway, I was going to put this link in the room for the job description that I liked. And the thing that I like about this job description is it speaks to you the work environment and the things that– it basically sells the job first like, you are going to work with a Mac, you are going to do TDD and Agile.
CHUCK: I do have to say though that one thing that really helped me with one of the jobs that I was that I knew somebody there with this guy named Dave. So I could talk to him and get an honest opinion of what I was getting myself into and so that helps too. So, if you are looking for people, it might not hurt to go talk to your A players and see who can they bring.
JOSH: That is interesting. Pretty much, I think almost every job that I had in my career, I’ve gotten introduced to that job by somebody that I knew. So when I try and hire people, I try and do the same thing; I try and go with people that I know because I figured, if it works for me, I got hired that way then maybe that’s the way that other people usually get hired.
DAVID: The trust network is not a — it works for employers the same way it works for the employees.
AVDI: So the question I get from job seekers is, “How do I get to know these people?”
DAVID: Get to know a lot of people and eventually some of them will be those people.
AVDI: And mostly who I hear that from are as a result of running the wide teams podcast, I hear from a lot of people, that are like, “Well, you know, it’s easy if you live in San Francisco to attend the user groups or whatever and get to know people but when I live in the middle of nowhere, how do I develop that network?” That’s what I hear a lot.
DAVID: Avdi, have you done this already? I just had this idea and it occurs to me that you have probably already figured this out and executed on it. But if not, we should start it right now and that is put together some way of referring these people to people like you and I and Evan Light and those people who actually come up and said, “If you wanna remote pair some time, ping me. I will remote pair with you.” Because there is your answer; how do you find people and get to know them. Well, here’s three people that will pair with you.
JOSH: You’re talking about “Pair Roulette”?
DAVID: Yeah. [laughter] Oh my gosh.
AVDI: I know of actually at least two sites that people are putting together for getting people together with remote pairs and they are going to develop their network that way and work with other people. I don’t have the URLs on the top if my head, but I’ll make sure to get in the show notes.
DAVID: Because I mean we live in a single planet now that’s hyper connected. There is no reason just because you live Fontana to say that, “I can’t be connected to the global development network.” Especially if you work on computers. These people might be self-selecting out and maybe that is a good thing.
AVDI: I don’t think so. I think it’s–
DAVID: That was a snotty thing to say. I’m sorry. [laughter]
JOSH: Go stand in the corner!
DAVID: People are asking for help and I’m kicking them in the —
AVDI: It’s threatening. I mean you know, it’s easy when you have been sort of in mesh with the technical scene for a long time in the community for a long time to think that it’s really easy to get in. And I think it’s really easy to get in, but still, when you are new to it, it can still be very intimidating and you just don’t know where to start. People have a natural bias against people that they can’t see in person. It’s not like, “Oh, I hate you because I can’t see you.” It’s just we pretend to prefer people that we can meet up with for coffee or go out for drinks after Ruby meet up. And so it’s hard and so one of the things I think about a lot as talking about a lot of people that are on distributed teams is how do we make it easier for these people that are out in the middle nowhere to join up with the community because there’s is a ton of talent out there; people just waiting to get involved.
JOSH: So I think community involvement is important on both sides of the equation. You look at a lot of the successful Rails companies — companies using Rails. And I think lot of them are out there sponsoring conferences and sponsoring open source development and just being good citizens. Thoughtbot provided a whole bunch of col tools to the community and libraries and things like that. And GitHub has been amazingly generous with technology and providing free hosting for all sorts of open source stuff and Engine Yard has done a cool stuff. There’s a lot of these companies that do that and they contribute to the community. And I think that helps them hire greatly. If you are a Rails developer sitting around and you decided, “Oh, I’m moving to San Francisco. I need to get a job.” who do you going to pick up the phone and call? Sorry, people don’t use phones anymore. [laughs] Who are you going to tweet at?
DAVID: Who are you going to send a fax to? Yeah.
JOSH: Yeah. Thank you. [laughs] Who are you going to telegraph? You know it’s the companies that you are aware of and you recognize their names and unless you have a friend who works in the company who will snatch you up right away. But I think the contributing to the community — in san Francisco, it’s crazy how competitive it is to try and get in a position where you can host an event for the community. The calendar is so full of hack nights and meet ups and you can have free pizza and beer every night of the month if you want it, practically.
JOSH: But it’s how you play the game here to be able to raise your company’s profile enough and get enough sort of ambient goodwill in the community. So that when people are thinking about changing jobs or are looking for a job, that you are one of the places that they think of looking.
CHUCK: Yeah. The other thing that I have seen is that if you can get your developers to show up and be involved. It seems that out here in Utah, you don’t have a ton of companies lining up to host the meet ups and stuff, but the companies that people tend to look forward first are the one that have the elite guys that are presenting all the time that users groups or doing mentoring before or after and answering questions and are active on the mailing lists. And so then when people are looking for job, it’s like, “Well, I wanna work for that guy because he is smart and he can mentor me and help me move up with my career and things like that.” and so they go find out where he works and then they apply there.
JOSH: Yeah that’s great. The other thing that is great is participating in a Rails Bridge workshop. We really have to have—Sarah Mei on to talk about Rails Bridge soon– but mission of Rails Bridge is to increase diversity in the Ruby on Rails community. And they have been successful at this. They have pulled people in to community and given them free training in how to do Ruby and Rails development. And I have met people working as Rails developers here in San Francisco who they came to Rails because they went to a Rails Bridge training, they got their start there. And next thing you know, “Oh, hey I’m a Rails developer and I work at a consultancy.” And if you look at the amount of financial investment that a company has to put into hosting a Rails Bridge workshop or sending a developer to go be a teacher in one of those workshops versus what you would pay a head hunter for 30% of someone’s annual salary to place them, why would you spend all that money on a recruiter when you can produce similar results?
DAVID: Vastly superior results.
DAVID: So I just wanna further recant and repent of my snotty comment and point out that networking is a social skill. And a lot of us started in to programming because we could relate to computers and objects and things. And we got really into computers because we didn’t like spending time with people. So, social skills can be terrifying. So I just wanna further repent and basically say, if you are out in one of these areas or if you’re in a very enterprisey job and you don’t wanna know how to network outside your job and what you need to do is to find some safe people that you can trust and you can contact. And start with David Brady, start with Avdi Grimm and start with Evan light. Just contact. I mean, I know those three people have out open call to if you are interested in pair programming and interested in networking, talk to us. We are literally waiting for you to – I mean, we are busy. We may put you off, but we are absolutely interested in helping you get out of non-Ruby job because by definition, it would have to suck.
CHUCK: Alright. We are getting close to our time, but I do wanna ask one more question, and I know that this is kind of a stretch hypothetical, but assuming that you guys were willing to take a regular full time job, (not what you are doing right now) what would that job have to look like for you to be willing to work there?
DAVID: I can answer that in one sentence, go watch the RSA Animate of Dan Pink’s “Drive” and it will answer. I will take full time job as long as I had autonomy, ownership, something challenging me and in a meaningful compensation.
AVDI: So you will take a full time job if it was exactly like working for yourself?
DAVID: Pretty much. [laughter] Well working for myself is, I mean working for myself because I haven’t had a lot of full time jobs where I’ve had control over of all four key variables from drive and working for myself, I have control of those variable. So yes if it had those four innate qualities, the same way working for myself and yeah I would do it. Would it have to do anything like for my day to day job as — Chuck just asked me if I’ll put a link to that in the show notes and I will. – A full time job have to look like anything like what I do day to day as a contractor? No, not at all. In the past six months, I have considered interviewing at Heroku and Pivotal Labs and a couple of other places just because I’ve hang out with people. And here again, it’s networking guys just because I’ve hung out with a bunch of ex-Pivots and I’ve realized, it might be fun to stay a year at Pivotal Labs pairing all day everyday just so that I could have that experience. So that was a really long sentence but in fairness, Avdi prompted me for more. [laughter]
CHUCK: Awesome. What about you Josh?
JOSH: What was the question? What would be the job I would leave my current job for?
CHUCK: No. Let’s say you’re in a position to take full time job and you are willing to do that, what would that job have to look like to make it worth it for you to take it? What would that ideal job look like?
JOSH: I think two things that tend to correlate closely with my happiness at a job, one is there is a great team of people that I get to hang out with all day, and two is I’m working on something that is important to the company. The times that I have been working on stuff that is not central to the business of the company isn’t very closely related to the company making money or being successful; I always feel like nobody cares what I am doing. And I like to be a guy who has an impact. I can’t be satisfied just by doing quality work on my own, if it’s not work that matters with other people. So, I know that about myself. I know that there is other people who just say, they wanna write the best algorithm they can and that makes them happy, more power to them but, so for me, it’s just what is the quality of the team and do people care about what I am doing.
DAVID: Yeah. I once worked in a job where I got a bug report that began with the sentence “Fortunately, nobody was killed but–” [laughter]
JOSH: You’ve told that story.
DAVID: I’ve told that story so you can go listen to the past episodes about it. But the comment that I wanna make about it is that job, to this day, I still feel that that is the most important thing that I was doing for humanity. I was saving lives every day at that company. It wasn’t the best programming I’ve ever done, it wasn’t the most enjoyable programing I have done but it’s the most job satisfaction at the end of the day that I ever had.
CHUCK: All right. Did we ask Avdi about his ideal job?
AVDI: So, I don’t know if I have a good answer to this because at this point, it would be unfair because it would be the job that would pay me to keep doing what I am doing, which is writing and researching blogging, podcasting, doing open source pair programming sessions with people. If somebody came along and say, “Hey, we want to pay you all that stuff.” I’d be like, “Great!” but I can’t imagine like there is no working environment or anything like that that will be like, “OK. Yeah, I will stop what I am doing right now and switch to your project.”
CHUCK: Yeah. I’m kind of in the same boat, I mean the podcast are really important to me and I like being able to work in some open source stuff every once in a while. I think there’s a lot of freedom there. If they are willing to let me continue to do the shows and continue to work on open source, then that would be terrific. But the other thing is for me, it seems like in a lot of cases, autonomy is really big thing for me. Just to be able to do things that I think I add value; look at the things, the problems that we have, be part of the conversation there and be able to solve the problems is huge for me. And that is something that I did at Public Engines where I was setting up the continuous integration and I set up our internal Git server and worked with the IT guys to make the process less horribly painful, I guess. But just things like that where I can just add value where I can see that I need to. And be able to work with people. I like being mentored and I like mentoring people, so I like the ability to work with people who are way ahead of me that can kind of bring me up to their level. And I also like being able to help other people who are just getting started into Ruby and stuff. There were couple of guys that weren’t junior programmers, but they weren’t Ruby programmers and so helping them at Public Engines was also a nice thing that I really enjoyed. But I mean just the quality and calibre of people that I work with. Sometimes you wind up working with people that you can’t just deal with. And if you have to deal with them on more than a weekly basis, you really just want to put a hole in something.
DAVID: Sorry about that.
CHUCK: [laughs] It wasn’t you. [laughter] I won’t mention which VP of Marketing I’m talking about. So, I mean there are just things like that where its more that they don’t have things that drive me crazy that they just give me some freedom and let me really do what I do well. And then obviously you’d have to pay me well enough if you wanted to get me out of freelancing to actually compensate for all of the other things that I like about it. Anyway, so let’s get into the picks. I know we are over our time, but we’ll make David start us off.
DAVID: I’ve got a really crazy one. In episode one, according to the David Brady Pick Machine, James Gray picked Tmux as his pick. And I was using Screen. Screen works just fine and tmux was the new kid on the block. It was kind of interesting and yay! Whatever — didn’t really get all excited on this tmux thing. And I came out here to Chattanooga to work on this team and one of the guys on the team picked up the tmux book from pragprog and in just two days or three days of reading, he was doing stuff in tmux that was like black magic for me in the Screen; like splitting pane windows visually, resizing panes, having the panes be labelled and named, the sharing is so much easier than Screen. Screen is really restrictive on how it is shared and what not. You can make it so that everybody is in lockstep, so that if somebody changes from page one to page two; everybody sees that we have gone to page two. Or you can make it so that you can go off on your own and you can go to page two and on page one and you are all just sharing combined environment. So, the pragprog they’ve got a tmux book and it’s really great. I just bought my copy yesterday and I’ve sort of flipping through it and it’s got this very quickly through the hurdle of being able to share a shared text environment remotely with each other.
CHUCK: So your pick is book on black magic?
DAVID: Yeah. Basically.
JOSH: You are trying to get excommunicated? [laughter]
DAVID: I would say “trying”. [laughter] Correlation does not equal causation. I’m just going to keep telling myself that.
CHUCK: Oh yeah. I had to bit my tongue when we were in the same congregation because if the bishop knew what I knew.
JOSH: Hope he doesn’t listen to the podcast.
CHUCK: [laughs] All right. Josh, what are your picks?
JOSH: So I have a relevant pick; it’s a video of a meet up that happened here in San Francisco a while back and it’s called “Scaling Your Rubyists”. And it’s a video of a panel discussion between people from engineer at Pivotal Labs, Carbon Five, Cloud City Development and a bunch of local businesses that hire a lot of Rubyists and talking about their strategies for hiring. So, it’s completely relevant to the conversation today and worth watching. The other pick that I have is something that is in alpha, you can’t just jump on and use it right away, but you can request an invite and get in. It’s called “Easel.io” and it’s pretty cool. It’s a tool for doing web UI design in a browser, so it’s a direct manipulation editing of the DOM. And they have tools for making H1s and paragraphs and buttons and you can style everything and you click a button and it exports the HTML and the CSS. I’ve only started using it about a week ago, but the cool thing about it is that, it’s an easy way to collaborate. So if you have a couple of people working on the design, it is a shared space and you can work on the designs together. It’s so much easier than emailing stuff back and forth to each other and even putting shared things in Dropbox. So, it’s worth trying to request an invite from them. And they have a cool little social networking thing — the more people that you get to sign up in the waiting list, the faster your waiting list thing gets accepted. So, that’s it for me today.
CHUCK: Awesome. Avdi what are your picks?
AVDI: Let’s see. I got a few picks. So, something I enjoyed reading this past week is an article on InfoQ, it’s a “Virtual Panel: Code-To-Test Ratios, TDD and BDD” is the title. They basically sends some questions to several people that have been kind of prominent in the TDD and BDD field. So, some people like J. B. Rainsberg, Dan North, Ron Jeffries, Steve Freeman (who is one of the authors of Growing Object Oriented Software — our Book Club book). And the questions in this interview or this roundtable aren’t that great, but its kind to of redeemed by the people that are answering the questions. And its really, it’s a great way to get the point of view of some of the people that have been foremost in evolving TDD and BDD methodologies or whatever you wanna call them – practices. How they use it, what they really mean by it and I think it clears up a lot of misconceptions. So, I’ll put that link in the show notes. Real quick mention, I can’t believe I haven’t mentioned this before, but I don’t see it in the picks. One of the podcasts when I do get the time to listen to the podcasts, I try to catch up on old episodes of This Developer’s Life, it’s a podcast that’s explicitly styled on This American Life and it gets into sort of more the social aspects and the not quite so technical aspects of the life of a programmer. And just a really, really well done podcast. Finally, I feel I should have something that is non-developer related in here so, few weeks ago, I bought myself a pair of sort of do-it-yourself Huaraches or how the heck you pronounce it. They are just minimalist running sandals from invisibleshoe.com and I’ve been pretty happy with them. So, check them out.
CHUCK: Awesome. So I guess it’s my turn. One thing that I got invited to a few days ago — I think it was one of the guys on the Ruby Freelancer Show that mentioned it. There is a service there called “Prismatic” and basically it’s a service that looks through your social media links or your social media connections like on Facebook and Twitter and stuff, and articles that people share and it picks stories that looks like you will be most interested in. And it’s really kind of cool. It’s actually done a really good job as far as everything on here is something that I would be interested in reading. And so you can get it at getprismatic.com.
DAVID: So, it’s basically kryptonite for ADD?
CHUCK: [laughs] something like that. Yeah. So the other thing that I got and I bought these because we were all out of town for a while and my wife went to Texas and my two oldest kids were with my mother in law. My two youngest kids were being taken care of by my sisters and then I pick him up in the evening. So while they were gone, I ordered these little animals that you can across the room. I think Dave might remember these because Kevin brought them in at one point in to the office.
DAVID: Oh, the screaming monkey?
CHUCK: So, I don’t know if I can get it to go off here but yeah, so you basically pull the arms of the monkey back and then you let go of it. [monkey sound] And I don’t know if you heard that. But anyway, I got that one and a chicken and a cow. And they all make different noises when they get launched and they could be fun. I bought them off of amazon for like a buck or something a piece and so, I’ll put links to those as well. They are just kind of fun things to have around the house. The kids were throwing them around everywhere for like 2 days. So if you are looking for a fun little office thing that you can launch at your office mates and get a laugh out off.
DAVID: No. No. I hated that thing.
CHUCK: [laughs] Yeah. Come flying at your monitor and you are like, “Whoa!” and it’s like [elephant sound].
DAVID: I’m seven layers deep in a subselect trying to figure out some code and then [animal sound].
CHUCK: [laughs] Yeah. They are a lot of fun office but that’s one of them that’s one of my favorite. Anyway, that’s pretty much everything. We will be doing a book review of Growing Object Oriented Software Guided by Tests. I always get stuck after the first word.
JOSH: They obviously grew the title of that book guided by something other than tests.
CHUCK: [laughs] Yeah. But we will be talking to the authors on the 22nd of August. And we got both authors lined up for that. So I’m just going to keep following up with them and lining things up. I’ve had a few people asked me for discount codes; I haven’t gotten anything back from them on that. I don’t know if their publisher will do that or not. So I highly recommend at this point that you just go buy the book and read it before we talk to them. You can also leave us a review on iTunes. Just go into iTunes, look up Ruby Rogues and leave us a review. We really, really appreciate that. And if you have any topics you wanna share with us on the show, go to rubyrogues.com and click on request a topic. And finally, if you wanna be on the email list where we all kind of talk about stuff related to the show and things like that, you can go to rubyrogues.com/parley and you can sign up there. That’s everything that I can think of and we will catch you all next week!