DAVID: Well, the reason I’ve been off the show for the past month is because Avdi tricked me with that whole, “You’ve been fired from the podcast” email again.
AVDI: It never gets old.
[This episode is sponsored by Hired.com. Every week on Hired, they run an auction where over a thousand tech companies in San Francisco, New York, and L.A. bid on Ruby developers, providing them with salary and equity upfront. The average Ruby developer gets an average of 5 to 15 introductory offers and an average salary offer of $130,000 a year. Users can either accept an offer and go right into interviewing with the company or deny them without any continuing obligations. It’s totally free for users. And when you’re hired, they also give you a $2,000 signing bonus as a thank you for using them. But if you use the Ruby Rogues link, you’ll get a $4,000 bonus instead. Finally, if you’re not looking for a job and know someone who is, you can refer them to Hired and get a $1,337 bonus if they accept a job. Go sign up at Hired.com/RubyRogues.]
[This episode is sponsored by Codeship.com. Don’t you wish you could simply deploy your code every time your tests pass? Wouldn’t it be nice if it were tied into a nice continuous integration system? That’s Codeship. They run your code. If all your tests pass, they deploy your code automatically. For fuss-free continuous delivery, check them out at Codeship.com, continuous delivery made simple.]
[This episode is sponsored by Rackspace. Are you looking for a place to host your latest creation? Want terrific support, high performance all backed by the largest open source cloud? What if you could try it for free? Try out Rackspace at RubyRogues.com/Rackspace and get a $300 credit over six months. That’s $50 per month at RubyRogues.com/Rackspace.]
[Snap is a hosted CI and continuous delivery that is simple and intuitive. Snap’s deployment pipelines deliver fast feedback and can push healthy builds to multiple environments automatically or on demand. Snap integrates deeply with GitHub and has great support for different languages, data stores, and testing frameworks. Snap deploys your application to cloud services like Heroku, Digital Ocean, AWS, and many more. Try Snap for free. Sign up at SnapCI.com/RubyRogues.]
CHUCK: Hey everybody and welcome to episode 190 of the Ruby Rogues Podcast. This week on our panel, we have Avdi Grimm.
AVDI: Hello from Hath.
CHUCK: Totally didn’t expect that.
CHUCK: Coraline Ada Ehmke.
CORALINE: I’m mashing code in Sandusky, Ohio.
CHUCK: Jessica Kerr.
JESSICA: Good morning.
CHUCK: David Brady.
DAVID: David Brady is brought to you today by first world medicine. First world medicine: he’s not dead; he’s merely in a persistent vegetative state.
CHUCK: I’m Charles Max Wood from DevChat.TV. And this week we have two special guests. We have Jill Lynch.
JILL: Greetings from [Shiberia].
CHUCK: And Joseph Mastey.
JOE: Hello from wonderfully un-diseased Chicago.
CHUCK: You folks want to introduce yourselves real quick?
JOE: Sure. So, my name’s Joe Mastey. I am the manager of internal learning for Enova financial which is a financial company here in Chicago, which I’ve been doing for maybe I don’t know, eight, ten months.
JILL: And I’m Jill. And I’m Enova’s Inaugural Apprentice. [Chuckles]
CHUCK: Awesome. It sounds so presidential.
JILL: [Chuckles] I try.
CHUCK: Alright. Well, we have a couple of things we’re going to talk to you about. I think the first thing that we wanted to talk to you about was your apprenticeship program. And maybe Avdi, since you invited Joe and Jill on the show, you can give us some background on how we got them here. And then they can take it from there and we can talk about it.
AVDI: I had the pleasure of meeting Joe recently when Sandi Metz and I went and visited his company, Enova. And while I was there, I was really, really impressed by the apprenticeship program they have. Unlike a lot of these, a lot of the Ruby and Rails companies we talked to, Enova is not a small company. And they’re not a software company. They’re a financial company. But they have a software department. And it seemed to me that unlike a lot of other companies that are trying to find people who already have a ton of experience, strictly people that have a lot of experience under their belts, they were putting a remarkable amount of effort into bringing people up and training them to be developer. And I was fascinated by that, so I really wanted to talk to Joe about that topic.
So Joe, how did this happen?
JOE: So, what happened? We’ve actually as a company always hired a lot of junior folks. Our premise is really that it’s better to hire very smart people and teach them Ruby than to hire Rubyists and hope that they’re very smart.
But what we weren’t able to do actually is address really, a lot of the folks coming out of Dev Bootcamp and that kind of stuff. What we’ve found is really that a lot of the time, they’re really at first prototype as they’re exiting DBC. They can build a good prototype and what we’re always hiring is production-level juniors, if that’s a thing. But we had a huge hiring rash in the last year. And what that let us do is focus on expanding our ability to train. And what we happened to get as a side effect is that we can handle these even more junior folks.
So, we had basically one candidate who after their interview she didn’t meet our technical standards, to be terribly blunt. But the idea of not working with her was painful. And so, we decided to invent a job to just train her up instead.
JILL: That was me, yeah?
DAVID: That’s awesome. You said you had a hiring rash. Like, you broke out in employees?
JOE: Yeah, it was just like hives. They’re everywhere. It’s really terrifying.
DAVID: Yeah, yeah.
JOE: Yeah, so we have…
CHUCK: No matter how hard you scratch, it just makes it worse, right?
JOE: [Chuckles] It seems like that. Every day I discover a new employee just hiding somewhere in the department.
AVDI: Let’s talk about that a little bit. You actually created your own curriculum for this, didn’t you?
JOE: Yeah. Alright, so given that I’m not a teacher, I’m an engineer, what I found is that people like you Avdi are people… all these different sites out on the internet do a great job of teaching some particular skill. But what I found out is basically that people don’t really know what they want to learn or what they need to learn for the job. So, there’s RSpec versus Test::Unit or whatever your deployment system is, all these types of decisions.
And so, what I did, what I had to do based on the number of people that came in was to start to formalize a roadmap and gather all the context and resources and provide them to people. And it turned out to be useful to help them, to have them do programming assignments just to verify that I was not completely insane and that they were actually learning things. And so, I built a series of programming assignments to prevent myself from being bored to tears and to help the thing get done. So, and thankfully actually, Enova’s let me open source it, interestingly. It’s MIT licensed. It’s on the internet. It’s LevelUPRails.com. It’s pretty ugly. But it does the job. [Inaudible]
AVDI: [Inaudible] a lot of really good things about it from people that were in the program, while I was there.
JOE: Yeah, we get to talk about dinosaurs and bombs and stuff. So, they’re always, I try to amuse myself when I’m writing assignments. And it seems to be working.
CORALINE: Joe, what kind of resources did you use when you were putting that curriculum together?
JOE: I started by doing the worst possible thing and basically trying to list all of the things that I wish somebody would know once they were fully up to speed. And then I backed into all the things that I found on the internet that could help. So for instance, Active Support in Rails. There’s an easy one there and that The Rails Guide to Active Support’s actually pretty straightforward. Or some of the CodeSchool.com, their resources are really good as far as some Ruby topics. And so, what I give people is essentially, “Here’s the topic. Here are some things to know and how we use it. Go off and learn Active Support. Go off and learn this basic Ruby thing. And then come back and write some code to prove to me that you know how to do it.” And then they submit a pull request and me and some of my magical elf helpers will review those requests and make sure that they’re on track.
JESSICA: It’s easy enough for the internet to tell people how. And as you talked about, you tell them what they need, which is awesome. How do they learn why they need it and when they should use it and when not?
JOE: The initial why is relatively straightforward. On Level UP I try to give a little bit of context on how we use it or rather, why we are using the things that we are using. As far as that latter part, I think that falls into taste. And I’m not really sure how to teach taste in any kind of lasting way other than to provide a lot of suggestions and do a lot of code reviews and talk people through those decisions as they make them, which is helpful because we have groups of say, five people going through the same assignment. We can talk about their different implementations and how they might have chosen to do it differently.
JILL: I think one of the takeaways is how much of this is just design decision. Going in I thought often that there would just be one right way to do things. But I can see how it’s just a design process and there are tradeoffs. And when you have an enormous app like Enova’s codebase a lot of tradeoffs have to take place. So, just being exposed to that is pretty interesting.
CORALINE: Is pairing a component of that learning and training process?
JOE: I encourage it. I don’t force it.
JILL: Yeah. I generally [spend] my time in the kitchen in the afternoons. And people often want to take a break from whatever they’re doing and just sit down and help me with my work that’s often a little bit easier than their own. So, they often take a break and just help me for a few minutes before going back to their own work.
JESSICA: Hanging out in the kitchen. It’s like Snipe pairing.
AVDI: [Chuckles] They do have a really nice kitchen so I can’t blame you.
JOE: Award-winning kitchen.
CHUCK: How much of the training is self-guided and how much of the training is sit down with a mentor or in a class or whatever?
JOE: So, we don’t do a lot of classes. But I would say… so the training is relatively guided but very much self-paced. So, if you come in already knowing Ruby which is a thing that happens certainly. Maybe about 20% of our new hires come in knowing Ruby. They can skip through everything, go write the Ruby exercise just to verify that that’s the case, and just move on to the next thing, which presents its own challenges as far as the code reviews and people working on very disparate things. But I think otherwise, we’d be wasting people’s time.
CHUCK: So, the other question I have, and this is something that I run into out here a bit. So, there are two groups that this really seems to impact. The first one is: I talk to companies. Go to any users group, really, and all the folks there, “Hi. My name’s George and I’ve been doing Ruby for 50 million years and we’re hiring.” And they all say, “We’re hiring. We’re hiring. We’re hiring.” And then all of the new-ish people go and mob them at the end of the meeting and they’re like, “I need a job. I just graduated from the bootcamp and I’m awesome.” And they’re like, “Well, we’re looking for senior people.”
JOE: [Laughs] Always.
CHUCK: And of course, they’re going to be perpetually hiring for those positions forever because all the senior people are either in jobs they’re happy with or they’re going to work with their friends who are in jobs that they’re happy with. So, how does a company go ahead and implement something like this so that they can take advantage of the fact that maybe you have newer, new-ish people who don’t have all the skills you want but those are the people that are looking for jobs.
JOE: Yeah, there are a couple of interesting things that happen around this. So we are, we’re a billion-dollar company. We have hiring targets and we certainly have senior people in those targets. So, it’s not a factor that goes away.
And the other interesting thing is that when you open up an apprenticeship program for instance, nobody wants to take the shot at being a regular developer because the Impostor Syndrome and all these things that we know happen. So many of them apply for the apprenticeship program who could actually apply for our regular developer jobs, which is an odd result. But I think I get why it happens.
But as a company, I think it’s partially just realizing that even if you think you’re hiring experienced folks, they don’t necessarily know your stack. And a lot of times, their understanding is very, it has gaps. It’s lumpy. And so, I guess understanding that the pretense of hiring people with a bajillion years of Ruby is really just a pretense, it’s really helpful in getting to the idea of, “Well, when they come in we’re going to have to onboard them anyway, so we might as well do a not terrible job with it.”
DAVID: So, speaking of not doing a terrible job of onboarding, how many people did you take in, in your last hiring round?
JOE: [Chuckles] Something like 50-ish since I started this in April. [Chuckles]
DAVID: Yeah, now I loved what you said in the pre-call. You said, “This was literally a bad idea.”
DAVID: Could you expound on that? [Laughs]
JOE: On how bad of an idea? Yeah, I feel like it’s almost self-evident how bad of an idea it is.
DAVID: But it sounds like an awesome bad idea.
JOE: Yeah. So, we needed to scale. We need more resources. We just went public as a company. We’re doing more initiatives than ever, just like everyone else. I have 50 projects and enough developers for 10 of them. And so, at some point we decided to just eat that pain and scale some of the department quickly. And thankfully, it coincided with having somebody whose entire job is to make those people part of the culture and to train them up. But god help me, 50 is too many people.
CHUCK: Is it just a lot of work to bring them up to speed and run the apprentice program? Or are you suffering in other ways from having brought on so many people at different levels?
JOE: So, it’s very difficult to scale bringing people on board, from a cultural perspective probably as much as it is a technical perspective.
JESSICA: You can’t bring that many people into a culture and expect them to take on the culture. How has your culture changed already with these new people?
JOE: So, this is the mastermind part of this. Because all of them come through me, I get to…
JOE: Basically change the culture as I see fit. So, what we’re actually done though is by saturating them in this idea of training and learning and that sort of thing, people have glommed onto that. And it’s really actually significantly shifted our culture around how we deal with training as an ongoing thing. It’s definitely, I think it’s shifted in other ways just because of people’s perspectives. But I think it’s more subtle. And to be honest, I don’t think I’ll be able to recognize it for maybe another six months or a year.
CORALINE: What sort of…
JILL: You know, I know from the new hires’ perspective, having the onboarding and training is something that they’ve all been pretty excited about because every wants to grow. Everybody wants to improve. And even people that had a lot of experience, having these weekly three times a week code reviews, they improve as well. And I think it shows that the company is interested in growing the talent and the skills of their people. So, I think the employees really feel like the company’s investing in them.
CHUCK: I like that you guys are giving us general terms on how this all works. But I really like stories. [Chuckles] So Jill, it sounds like you’ve been around with this system for a while. Can you just tell us about how you came in and what your experience has been with this apprenticeship program?
JILL: So, find out what it means, TDD. And so, my experience with the program has been that I meet with that cohort three days a week for code reviews. And we are all familiar with the same assignments. So, we are reviewing each other’s code and giving each other feedback. In addition, I have a mentor named [Costi]. He’s a really cool, crazy Romanian guy that gives me all sorts of advice that’s not always programming-related but it’s very fun. And I also have a buddy Sophia who I think, did she go to Carnegie Mellon? But she’s busy working on…
JOE: Yeah, [inaudible].
JILL: Yeah. She’s busy working on Rubinius and low level stuff. So, I think I’m just experiencing the program through osmosis. I’m just watching all the time. And in addition to completing the assignments, just observing people and what they’re trying to accomplish and what it is to be a programmer and be a developer at the company.
CORALINE: Jill, do you find that most of your professional support is coming from the mentors and most of your emotional support is coming from your cohort?
JILL: I’ve found that I’ve gotten tremendous emotional support from all the new hires that have come in at the same time. I really have been pleasantly surprised with how much people enjoy teaching and sharing what they know. But as far as professional support, I would say it’s a lot of, I would say a lot of the support comes from my peers, I guess, the other developers, the new developers.
DAVID: You’re hiding in the kitchen, so you’re getting support from the hungry people.
DAVID: That’s a really good multilateral approach.
CHUCK: So, where would you say you started and where are you at now? I’d also like to know about how long you’ve been doing it. And the other thing is what made the most difference for you with this apprenticeship program?
JILL: Like I said, I had been teaching myself for years. And the feedback loop of getting instant feedback from your peers, like look at this code, what mistakes am I making? To read an entire text or several texts and come to the realization like, “This is a mistake that I’m making” independently, it’s just so much faster when you’re getting the reviews from your peers. And a lot of helping you prioritize what’s important and what’s not. Like, “Oh, this is important. You have to do this. Or this is sort of important. You can worry about that later.”
CHUCK: Yeah, where did you start and where do you feel like you’re at now?
JILL: At the beginning of the program?
JILL: I think that I started with a pretty decent basic knowledge of Ruby and Rails. But I really wasn’t thinking about design decisions. And the whole, I’ve really been a total Sandi Metz convertee, so I’ve been really subscribing to a lot of her methodologies. And I feel like it’s definitely helped me improve.
JESSICA: One thing Jill, from all this hanging out in the kitchen and asking a million people questions, you are going to be an incredibly productive developer because you know who’s good at what and you know who cares about what.
JESSICA: And who’s doing what. And knowing the people in an organization is at least as necessary as knowing the technology stack.
JILL: Yeah. It’s just, like I said, it’s been a tremendous experience.
CORALINE: Jill, how did your previous experiences before you entered the software development industry affect what you’re doing now, affect your perspective or the people skills you’re talking about? How much of that is transferable?
JILL: I think a lot of it. I think dealing with having clients and having deliverables and how to negotiate that is definitely transferable as well.
CHUCK: So, I really want to ask Joe a question. How much of this was on purpose?
JOE: What do you mean? I’m not sure I get the question.
CHUCK: So, how much of the experience that she’s talked about where she meets people in the kitchen and gets questions answered versus the mentors and how well that’s worked out, and the curriculum and the things that she’s got out of it. How much of it was by design and how much of it did you just figure out watching Jill go through this experience?
JOE: A huge amount of this is very much just reacting to circumstances that come up. So, I would say that the things that I’ve planned upfront very much changed right away based on the feedback and what people are doing. I would say I will always encourage people to know more about the other folks in the company and encouraging Jill to pair with all sorts of folks on different projects. But I mostly just come up with ideas as I see pain points and [chuckles] see if they’ll work.
CORALINE: What does the feedback process look like and how are you using that to refactor the apprenticeship program?
JOE: So, the easiest feedback but is probably not the most valuable is simply observational. Obviously… I actually permanently sit in the kitchen. I don’t even use the desk that I have. But I also have been soliciting feedback from the various groups, either one-on-one from folks, folks like Jill. Or we’ve done a couple of internal surveys both of the learners and the managers of the groups that they end up going into. And typically I’ll try to identify. So, if there’s any really, really specific easy thing I can fix that’s obvious. But then other than that, we’ve noticed some trends over time that we need to adjust for.
AVDI: I’m curious about the environment that makes this possible. It seems like you have a lot of leeway to implement new programs and to decide how you want to bring developers up to speed. How does this happen?
JOE: So, part of it is having built up trust from the leadership in the department, honestly. And another part of it which is equally unsatisfying as an answer is that everybody is very busy all the time. And so, they don’t really have time to provide 100% oversight. But the more important part, the part that I can actually affect, is that we keep trying to demonstrate success on the way out. And the more we can demonstrate success, especially when we have setbacks and still adjusting around those and showing that we’re still providing impact to these folks, they’re more inclined to trust that we have the ability to do that in the future.
It’s a fight though. Like I said, we’re a billion-dollar company. We’re financial which means that we’re regulated heavily. And so, there’s always this pull of needing to justify the things that you’re doing or the money that you’re spending because none of it’s free. And that’s something that we do contend with on an ongoing basis.
CHUCK: So, I have a question. Let’s say that I’m a company, I’m a decent-sized company. I’ve got plenty of money to hire people. I’m not hitting my hiring targets and it’s starting to hurt where I’m losing opportunities. Maybe I’m losing money because I’m just not bringing in enough people. So, how would I go about setting up a program like this so that I could start bringing in some of the really impressive but maybe not as experienced people so that I can start reaching some of these other targets for my business?
JOE: So, the first thing I would do is definitely have some type of internal advocate for the process as a whole. So certainly, if you’re a hiring manager and you care about this, that’s a really important part of it. The second thing just as importantly is to have mentors for anybody that you bring in. It’s really important to me that Jill has somebody who she can go talk to if she’s frustrated, if things aren’t going well. We actually give two different helpers to every one of our apprentices, somebody who’s much more experienced and somebody who’s much closer to them in development level. And having those people commit to really being available is a massive part of it.
Beyond that, the structure of the program. I think there are a lot of different ways that it could look and still be successful if you have those support mechanisms in place. Obviously I’m partial to having some kind of roadmap and pushing them along that roadmap. But I’m positive that there are other things that could work.
CORALINE: What makes the ideal candidate for the program and what makes the ideal mentor for the program?
JOE: Our criterion for the candidate is it must be painful to think of not working with the people.
JOE: So, people with fantastic social behaviors, people who are engaged, people who are driven, people who have great problem solving skills but who for one [reason] or another haven’t had really the opportunity to build the specific technical skills that we’re looking for. So, there’s a lot that you can demonstrate in whatever field you’re in and whatever you’ve been doing up until now. Our other apprentice actually came from our call center. And so, it’s folks who really have demonstrated that once they do get those technical skills, they’re going to be just an absolutely fantastic member of the team.
CORALINE: How about the mentors?
JOE: So, for mentors it’s folks, obviously precarious people with high EQ is really, really helpful and people who are interested in engaging with somebody who is starting out and who is learning this stuff, and who is interested and is willing to spend that extra time on top of their existing job duties to really sit down and explain to somebody some of these concepts that they haven’t had a chance to see yet.
CHUCK: And it scares off a lot of these newer folks that really would be terrific candidates. So, how do you attract somebody like Jill to come apply at your company?
JOE: We may almost have the opposite problem. We don’t even post the apprenticeship listing because whenever people hear about it, we get a massive number of people applying to it. Honestly, what we’ve done is we sent our director out to a Women Who Code meetup. I’ve been connected to them and to CODE2040 which is another organization in the city, Dev Bootcamp. So we basically, we’re going out to places where we think there are folks who are sort of self-selecting as drive people, the right kind of people. And then we say the word “apprenticeship” and then everybody waves resumes at us and we get to take a pick from there.
CHUCK: Is there something that people can do to (this is similar to the question Coraline asked), but is there something people can do if they’re not that ideal candidate to become more attractive to you as a potential candidate?
JOE: It’s a lot of things that I think have been mentioned before. If you’re going to meetups, that was the first thing that impressed me about Jill is that I think three different people had mentioned her name independently as having met her at meetups. And so, she spoke to everybody. Being involved in community groups. If you have the opportunity to contribute to open source, I know that sometimes that can be intimidating if you’re new. But any kind of engagement that you have that shows that kind of drive is fantastic. And certainly if you have some avenue, some venue in your life where you can demonstrate some of this problem solving or working really well with people, that’s massively helpful.
CHUCK: Jill, were there other things that you were doing that Joe may not have noticed but picked up on when he talked to you?
JILL: Basically, I was probably the most… I attended probably I volunteered three times a week or something for Girl Develop It. So, I was a very motivated volunteer for that organization. And I just was really excited about the technology and wanted to share that with other women that were new to the field. And so, I think that infectious excitement about computers and technology, I think that was maybe not something that he knew about at first but was evident when I talked more about my volunteering for Girl Develop It.
CORALINE: On the note of working with women in particular to bring then into the field, Joe what sort of, how diverse is the population of incoming apprentices? What does that look like?
JOE: Two women, one of whom is of color.
JOE: We are early on in our apprenticeship. We have a sum total of two at this moment. But both of them…
JESSICA: How about those 50 new hires?
JOE: So those, I don’t have it for the new hires. Actually, I checked yesterday on the whole department and we’re moving in the right direction. But we are not where I want us to be yet. We’re at, to put it informally, exactly 50% white dudes. So, our male to female ratio is 4 to 1, which again is not where I want it to be. But it’s moving in the right direction.
JESSICA: It’s above par these days.
DAVID: That’s sad.
JOE: [Laughs] But there’s stuff we’re doing though, actually. I’m really excited. We’re going to be working. So, one of my coworkers who runs the recruiting for the department, we have a ton of latitude around that. So, there’s a lot of stuff we want to try to essentially compensate for some of these biases that we agree that we have but that we haven’t yet compensated for.
JESSICA: Like what?
JOE: So, A, making sure that we have representation on the interview team. The most experienced folks tend to end up on the interview team, which tends to not lead to the correct composition. But one of the things that I’ve floated is that we have a huge number of incoming resumes, hundreds of thousands of resumes. And I want to start doing them blind. I want to have essentially nameless, blind resume sorting, because my suspicion is that that will cause a significant shift in composition.
CHUCK: I really like the idea of experimenting. So, you can try that, see if it changes your bias, changes your composition. And if it doesn’t, then there are a lot of other things that you can do. And it sounds like you’ve got plenty of people applying to where you can do that and just see what tends to work so that you’re getting the people that you want.
JOE: Exactly, exactly. There is a huge amount of opportunity. I think a lot of this stuff is you can observe the outcome of some of the things that you’re doing. And like I said, a lot of the things we do will probably fail to work or not work exclusively or solve 50% of the problem instead of 100% of the problem. But you don’t have to solve 100% of the problem. You just have to start doing something to move in the right direction.
JESSICA: Speaking of moving in the right direction, I was reading this article the other day about how the most productive teams, by far the biggest indicator, if you can measure it which is tricky, of a great team versus a ‘meh’ team is the energy and engagement of the team members as they talk to each other and also to people outside the team. There are two things that you’re doing that are really clearly helping with this. One is that kitchen that keeps coming up. That kitchen is a great source of interaction and engagement between people.
DAVID: I want to go to this kitchen.
CHUCK: [Chuckles] I know.
JOE: It’s a mythical [one]. It’s beautiful. There are pictures of it online. We [inaudible].
JESSICA: Oh, good.
JESSICA: Yeah, yeah, let’s post that link. I totally want to see the kitchen.
CHUCK: I want to see the unicorns in the kitchen.
JESSICA: And the second thing that you’re doing that’s remarkably good for engagement between team members is hiring so many people. Jill remarks that most of her emotional support and professional support comes from her peers. That’s consistent with my experience with my children. They learn their speech patterns and stuff like that comes not from us but very much from their peers. And what you’ve given people by hiring so many is a peer group. When you come in and you’re the only new person on the team, you don’t have any peers and it’s a long time before you really feel like you can engage with people on the team sometimes, at least it has been for me. Whereas with my first job I came in with dozens of other right out of college people and we had a peer group. And that was beneficial for us for years. Heck, most of our friends are still from that group. So, that…
JOE: [Chuckles] Yeah, the emotional support’s huge there.
JESSICA: Yeah, that crazy 50 people, there’s some magic in that.
JOE: Absolutely. And one of the interesting things you could do is I wanted to put people into cohorts according to training. But then they’d go off into five or six different teams and at the same time they still have those strong social bonds so that they, it actually increases the amount of informal communication that happens in the department. And it lets me seed the people into teams where I think that it would be good to have somebody with the right kind of social characteristics or somebody who I want to be a good role model and put them into the right team to help push that team forward.
JESSICA: Yeah. And that informal communication, we talk about IT as information technology. But information really mostly passes in those informal conversations.
JOE: Oh, completely.
JESSICA: Has anybody else been in an IT department that felt like it was communication center of the company? And the only way departments communicated with each other was through developers?
CORALINE: I’ve had that experience, definitely. And some of it is physical colocation of the development team in a central area as opposed to being on the outskirts of the company’s headquarters or office space. So, I think geographical proximity is pretty important in terms of establishing those communication networks.
JESSICA: And big kitchens.
CHUCK: Big kitchens.
CHUCK: So, I want to play devil’s advocate a little bit here, because I know somebody’s going to go to their company and they’re going to be like, “I heard Ruby Rogues. I think this is an awesome idea.” And they’re going to have some management guy that comes in and goes and says something to the effect of, “Well, I don’t want new people distracting the experienced people.”
JOE: That’s probably a valid fear. One of the things that we do is actually, these folks are 100% on training, which is actually contrary to the common wisdom which is that you get somebody to commit on their first day. So interestingly, these folks are not doing production work for six weeks, eight weeks. And that’s including…
CHUCK: The mentors or the…
JOE: No, the new hires, including if they’re experienced new hires. So, even folks who come in with 10 years of development experience actually are spending time solely in training, which I’m not 100% positive whether I’m doing the right thing or not on that. But it’s working really well. And it actually means that by the time they get into a team, they understand so many of the basic fluencies and literacies around Ruby and Rails that they actually start the conversation much more knowledgably.
CHUCK: So, your mentors, these new people are going to be asking you questions. So, how do you address them taking some of that time away?
JOE: Would we all have a long-term perspective, that would be fantastic. The way that I’ve sold it in is basically that we know that we want people to be better around the department. We know that it’s better for retention for the older people, that being able to teach and to have that kind of culture is actually something that people value from both sides of the equation. So, it’s actually better for the older people. Obviously teaching we know makes people better at their own topic. I could ramble things off. But ultimately, my experience has been that our management at least thankfully is happy to make that tradeoff at least a little bit. And once we can demonstrate that that’s successful then we can expand that over time.
CHUCK: Right. The other one that I’m sure is going to come up is, “I don’t want to pay somebody to learn Ruby on Rails for four to six weeks just to have them go get a job somewhere else.”
JOE: Yeah, if I had, if our retention was lower, if we thought that people were going to leave in 18 months I would have a really tough time selling in a six-month apprenticeship. So, a lot of this was convincing people that we will keep folks around long enough that it makes sense for them to learn that stuff. And we actually have another interesting secret advantage, which is that we have a Rails codebase that comes from Rails 0.7. This is how long this codebase has been around.
CHUCK: [Chuckles] Oh.
JOE: [Chuckles] Yeah.
JOE: And so, all the things about maintainability where nobody quite believes you, we’ve hit all of them. And so, people are feeling that pain and they say, “Oh okay, well now it starts to make sense that by teaching somebody to be a little bit better they won’t inflict as much pain on this codebase which is already terrifying.” And I think that’s actually an advantage to have a painful to maintain application.
DAVID: Is your codebase still on Rails 0.7?
JOE: No. We upgraded it all the way to 1.3.
DAVID: Okay, 1.3 is good because the important thing is that you want to give these new hires training in skills that are not transferable.
JOE: So, to be fair, alright, alright. I’ll defend us here. We actually have a newer platform as well which is Rails 4, federated services, all the modern fix-ins.
JOE: But as a big financial company, to be honest all the money comes from the legacy platform.
JOE: For now. And so, that’s a thing that’s relevant, which also makes it impossible for us to pretend that we’re going to hire people with all the necessary skills too, which is nice.
DAVID: That actually might be a good definition of what it means to work in the enterprise.
DAVID: The enterprise means all your money is coming from the legacy platform.
JOE: I don’t know anybody in an enterprise for whom that’s not the case.
JOE: So, I think that might be correct.
CHUCK: If it ain’t broke, let the new people on it.
AVDI: So, we’re talking mostly about training and apprenticeship here. But let’s talk technical just a little bit. Since you do have so much experience with a very, very old, very big codebase, would you mind talking just a little bit about some of the things that have worked and things that haven’t worked for dealing with a codebase like that?
JOE: Sure. So, the thing that didn’t work that was one of the original premises for starting on training was really throwing people into the deep end and just coming back and visiting them a couple of weeks later and saying, “Hey, did you figure it out?” What we see is obviously that people’s understanding is very flawed, that people copy patterns that were maybe not the right patterns to copy. And one of these interesting things that I’ve seen is that they submit code and then you try to fix it. But then after a couple of times that you try to fix it, you start to feel really bad because you’re not a bad person. And so, you start to let code in that isn’t up to your own standards because you really feel bad about not letting the person’s pull request in after three attempts. So, that didn’t work. [Chuckles]
The other thing that didn’t work was rewriting the entire platform and hoping that we would just be able to turn the old one off on day one. So, we have a long-running, we’re getting customers over to the new platform from the old platform. But there’s no running away from your old platform, in the short-term at least.
What has worked is basically a lot of what we’re doing, is formally teaching everybody in the organization some of these baseline things. The biggest one to me is testing. Everyone sucks universally at testing. I suck at testing. And raising the caliber of everyone’s test skills by just a little bit pays these massive dividends, which has been really fantastic.
CHUCK: Yeah, but you’re in Chicago. You just hire Corey Haines.
JOE: [Chuckles] Yeah, right? We’ve have him in a couple of times. It’s been a little while. I did that workshop.
AVDI: That was a great insight about what happens when you have somebody new who’s trying to commit code on the first day. And yeah, you want to give them a win. And so, you start letting stuff through that maybe isn’t top quality but at least you’ve pointed out a few egregious problems in it and had those corrected. And I’ve definitely seen that happen. And I just think it’s important that you pointed that out.
JOE: Yeah, and it’s important to, again we’re an enterprise. I hate that name. But we probably are that. We have to ship stuff. We have regulatory deadlines that you may not sleep if the deadline doesn’t get met. So, we are forced to ship code on certain deadlines come hell or high water. And so, if people don’t have the skills we can’t go back all the time and correct it up to being perfect.
JESSICA: It sounds like you’ve learned that you either pay for good onboarding or you pay for the pain that new people inject into the codebase.
JOE: I like that. I’m going to use that.
CHUCK: So, do you ever bring people in and during the four to six weeks you figure out, “This wasn’t a great hire,” and what do you do about it?
JOE: Thankfully, that has not been terribly very much the case. I think a lot of early problems we do diagnose early problems and we do attempt to fix them. Like any other company, when you hire you may mis-hire. And it has happened in the past. And hopefully if you’re being kind to the person you end that in six weeks and not in six months when they have gotten out of job-searching mode and now it becomes a snafu. So, we coach people up. We spend, I hate when people are not doing well because I think that I’m failing when they’re not doing well. And so, I work really hard to get people back on track. But sometimes it happens and I’m positive it’ll happen in the future where it doesn’t work out. The best you can do is say, “Look, we both made a mistake here.”
DAVID: Joe, I think you really missed an opportunity here to say, “Well, there’s one person in the [inaudible].”
JOE: No, Jill’s fantastic. We love Jill.
DAVID: No, just have all 50 of them listen to it.
JOE: Oh, yeah.
DAVID: And tell them, “One of you needs to shape up.”
CHUCK: Oh, man.
JOE: I like that.
AVDI: And you know who you are.
CHUCK: I actually worked at a company, it was a really small company, and my boss came in. There were five of us on the team and he looked at us and he said, “One of you is getting fired today.” And I was just like, “Oh my gosh.”
CHUCK: And then he basically…
JESSICA: How actionable is that?
CHUCK: He then proceeded to interview the people he thought were underperforming and he fired the one that he thought was the worst.
CHUCK: It was really counterproductive. Anyway…
AVDI: That’s like some serious movie villain stuff.
DAVID: Yeah, yes.
JESSICA: Talk about power trip.
CORALINE: [Inaudible] in theory to employee management.
DAVID: Yeah. I don’t know. I’m really enjoying working at CoverMyMeds because it’s a place that has that rare thing where the management does not exhibit open contempt for its employees.
DAVID: And I’m sad that that is so rare.
JOE: Yeah, I would be super stressed in a stack ranking kind of situation.
JOE: I can’t [imagine] how morale happens at those kinds of companies.
CHUCK: No kidding. I do have one other question and that is, so you mentioned that you hired 50 people. And most of the companies that I talk to or know about, if they hired 50 people they would 2x or 10x their company by doing that.
CHUCK: And you mentioned before the show that there are certain advantages to working at a company that has money to spend to hire people. What are some of those advantages in working at a company that makes a lot and therefore can spend the money to bring in people and things like that?
JOE: So, it’s a question of scale but I’m not sure it’s purely a question of money. I think the question of scale is we could do stuff like hire five people to start in the same week. And that’s a huge thing on its own. So, when we have these cohorts we had mentioned earlier, I think it was Jessica who mentioned, starting as the one new person versus one of five new people, that’s a massive difference.
There’s also easy stuff like books. Books are the cheapest thing in the universe to buy for your developers. And so, weirdly most people don’t do that. And so, we have actually two libraries. One of them is near the mythical kitchen full of just really modern books to help people get up to speed. And as a whole, we can finance those kinds of things. Or, having Avdi and Sandi in was fantastic. I think a lot of the smaller companies might not have been able to stomach that choice where we can say, send 18 people to that training, which is what we did, and then have them expand that knowledge out to the rest of the organization.
So, there are huge advantages to scale in that sense. And even applying experiments over the course of hiring 20 people, 50 people, right?
CHUCK: I think it’s funny you mentioned books because I’ve worked at, at least two or three companies where I’d go to them and I’d say, “You know you want me to do this and it’d be really nice if I could buy this book on it.” And I’d have to fill out 50 pages of paperwork in order to…
CHUCK: Get them to spend $20 on a book.
JOE: That is [crazy].
JOE: That is just crazy.
CHUCK: And then the flipside is I go to my boss and I’m like, “You know, this machine’s getting a little bit slow. It’d be nice if I had a little more RAM.” And they ram through a $2,000 order to get me a new laptop.
CHUCK: Same company, right? And it’s just like, “Wait, what?”
JOE: It’s the [Inaudible]
CHUCK: You want me to solve the problem and you’re willing to drop $2,000 on technology for me to solve it and you’re not willing to spend $20 so I could pick up the knowledge to solve it.
JESSICA: You’re paid to do technology, not reading.
CHUCK: Yeah, no kidding, right?
DAVID: I’ve actually worked in an environment where I had a book on my desk and the CEO asked the VP who was over me, “Doesn’t he know this stuff?”
JOE: What are we paying you for, man?
JESSICA: Oh my gosh. That’s [inaudible] about the culture of learning.
JESSICA: Versus everybody else.
CHUCK: Right. And when you go into work and you’re going to solve that problem, what’s really supposed to happen is you’re already supposed to have memorized the code that will do it. You’re not supposed to actually figure out how to solve it.
DAVID: That’s right.
JOE: This is again why I think our reviews of code…
JILL: But that was one of the fun things for all the new hires and for me included. We got a package in the mail a week before we started with five books that say you’re going to learn a lot. So, we had the Sandi Metz book, RSpec book, ‘The Well-Grounded Rubyist’. So, it definitely set the tone that we’re going to be learning. We wanted to grow.
CORALINE: Joe, I’m curious as to…
CHUCK: ‘Exceptional Ruby’.
JILL: I think maybe…
JOE: It might have been like ‘Lean Startup’ or something.
CHUCK: Oh, yeah.
JILL: Yeah, ‘Lean Startup’ and maybe the Dave Thomas Programming Ruby. I don’t know.
CORALINE: Jill, I’m curious as to, within this formal program you’re obviously doing a lot of learning and training. But you talked about your passion for independent learning and how that brought you to this place. How much of your learning is still outside of the purview of the apprenticeship program?
JILL: Well, right now I am pretty focused on the specific curriculum that Joe has outlined. But I love edX. I love edX and I love Coursera. I just think it’s amazing that that kind of structured curriculum is available for free. And a lot of what teaching is, is directing people to the right resources. I can’t tell you how many horrible tech books that I have purchased just wandering amongst the bookshelves myself. So, it’s really great to have guidance from people who know and can direct you to the right books.
JOE: Jill, that’s unauthorized learning. I’m writing this down right now.
CHUCK: You’re going to get written up for over-performing is what I just heard.
JOE: Yeah. [Chuckles] Right.
CHUCK: [Chuckles]. So, what were those two resources again? I’ve heard of one of them but not the other.
JILL: Oh, edX and Coursera?
CHUCK: Coursera I’ve heard of. EdX?
JILL: edX. So, edX is, I think Coursera may be not be a non-profit. And edX is specifically a non-profit. And it has courses from Harvard, MIT, Stanford. So, they created their own site because I think there are some ownership issues with Coursera.
CHUCK: Okay. We’ll put links in the show notes.
JILL: Though it’s pretty amazing. Yeah, it’s pretty amazing. That’s definitely one of my picks. And having not come to programming from a traditional background, I enjoy those courses because I see what I missed out on. And so, I’ve gotten exposure to a little bit of algorithms and some of the basic CS coursework that you might not get on the job through that program. It helps with the Impostor Syndrome a little saying, “Oh, I completed the class.”
CHUCK: I really want to commend you on your taking initiative and just going for it. But the other thing is you mentioned that you don’t have a traditional programming background. How many people on this call have a traditional programming background?
CORALINE: Not it.
CHUCK: I’m probably the closest. I have a degree in Computer Engineering. But even then, I came up through IT and tech support and got into programming.
JOE: Now I feel bad, because I actually have a CS degree. Oh well.
JESSICA: [At least] somebody did.
DAVID: I feel like I have a traditional programming background because I got exposed to computers as a kid and then I dropped out of college.
CHUCK: [Laughs] Yeah. But I think the point is that it doesn’t make a big difference. Some people come up through a CS degree and it pays off for them. And some people come up through other means and it pays off for them.
JILL: I’ve gotten positive feedback from my peers too, like, “Oh this is good code.” And that helps a lot. So, getting the feedback from people that do have the traditional background that you’re writing programs that make sense is pretty great. But yeah, I have to say I got the bug. There’s something about those counting machines there that have a little touch of the magic. And I just, I really enjoy the field.
CHUCK: Yeah. I just really want to encourage people. If you’re interested in this stuff, take a little initiative. Go take some Coursera courses or Code School or edX or whatever. And get into an apprentice program and talk to programmers and learn stuff.
DAVID: Absolutely. This is still a field that you can shade tree your way into. You can pick up a book and pick up a computer and, granted that assumes a certain amount of resources are available to you. But if you’ve got the time and energy to solve puzzles all day, by all means crack open a computer book and a laptop and in a year you can be doing this fulltime.
JESSICA: Alright David. I’m going to challenge that.
JESSICA: I have a feeling that we developers with a lot of experience, the real senior devs that everybody is trying to hire, are in this magic inner circle. And there’s a ton of demand for the people in this circle who already have this production experience. And yet there are millions of people trying to get in. And very few apprenticeship programs and very few entry level jobs compared to the demand for senior people. And if you do, do all that studying and you learn how to do it, to put the question to Joe, do you hire people who don’t have any production code experience into your regular developer position?
JOE: It’s unlikely. To be totally honest, I think you’re right in so far as we don’t typically even for junior positions. I will say that those types of behaviors are exactly the types of things we’re looking for in the apprenticeship program, which is largely our attempt to deal with that kind of issue. But I don’t think that you’re wrong and that there’s… I don’t certainly see a lot of these positions out there. I actually…
JESSICA: Right. Two apprenticeship programs out of 50 new hire positions.
JOE: Oh yeah, absolutely. So personally, I came by way of contracting was my first real production work. I don’t know if anyone else really did that as a way to I guess…
DAVID: Yeah, same here.
JOE: Not have to show them my resume.
DAVID: Yeah, yeah.
JESSICA: I was lucky. I came in, in 1999 and everybody was hiring entry level. I feel like I entered the secret circle before it closed.
DAVID: And see, I respectfully disagree but I am open to the fact that you are seeing a different perspective than me, because I’m just heaving with straight white male privilege. But the perspective that I see, I sat down with Brandon Hays. I’ll embarrass. He’s @tehviking on Twitter. And he came and talked to me I think in 2008 and said I’m in a marketing job and I hate it. And I like computers and I want to get out of marketing. What do I do? And I said learn to program. And he’s like, “Really? Because that sounds like fun.” And literally within 10 months he had switched to a job where granted, he was doing half marketing, half programming. So, he was leveraging the skillset that he already had.
And I feel like that’s not different than what Jill did, is Jill went in and leveraged the skillset that she already had and literally created a position for herself by basically being so, to use Cal Newport’s term, she was so good they couldn’t ignore her. They couldn’t imagine not creating a spot for her.
JESSICA: Those are two beautiful anecdotes about really exceptional people.
JESSICA: I was talking numbers.
AVDI: So, I’m curious about this. I…
DAVID: Yeah, that’s fair. But what I’m saying is in terms of numbers, no, 9 out of 10 people won’t… we had somebody on the show in the marketing episode who said if you charge up the hill, 9 out of 10 people won’t follow you up the hill. But what my experience has been is that if you sit somebody down and tell them, if you’re willing to charge up the hill, you’ll be in a class by yourself. And I find that very helpful. I find that very inspiring to know that that’s a possible, doable thing.
AVDI: I want to hear from people. I want to hear from people about this. I have anecdotes too because I get a lot of [wonderful] emails from people that say stuff like, I actually just got one of these last week and I get these all the time, that say something like, “You know, I was a total non-programmer. I was a cook. And I’ve been spending the last six months just listening to Ruby Rogues and consuming all the resources I can. And now I’ve got an entry level job.” But there’s bias there because maybe probably the only people that are sending me those emails are the people that were successful at something like that.
DAVID: Right, just selection bias.
AVDI: So, I want to hear about this. I would love to see some comments on this episode. Or Chuck is there an email address people can email stuff in? I’ve love to hear.
AVDI: I’d love to hear, what are people’s experiences? Are you finding if you’re entry level, are you finding that it’s very hard to get in? Are you finding that it’s easy to get in?
JESSICA: Ooh, goody.
CHUCK: I’d like to chime in here real quick on the same conversation, because I’m finding that a lot of people, I have these conversations like what Dave is talking about. And the thing that I’m really figuring out is that a lot of people I’m telling them to do a lot of the things that Jill said she did. And the ones that go out and do it, most of them wind up getting entry level, junior level jobs. And the ones that don’t, so the ones that just complain about not having a job and don’t go out and do those things, and then complain about not having a job and don’t go out and do those things, don’t get a job.
DAVID: Right. But I want to show some respect for Jessica though.
DAVID: And say I wonder if because I’ve got all this privilege and it’s very easy for me to get another job, do I see people that are trapped at the intersection of their trans-colored women or disabled or English isn’t their first language or whatever reason. And they don’t get in. Is it easy for me to write them off as, “Oh, you didn’t try hard enough”?
JESSICA: I think in our specific case, the experience that we have is a tremendously greater privilege than gender and race. All that stuff contributes. But once you have the experience, that’s the biggest thing for being in this particular circle.
DAVID: Ah, that’s fair.
JOE: So Jessica, I was…
JESSICA: Certainly, everything else matters.
JOE: I was going to ask Jessica, what do you think about stuff like Open Government Hack Night and those kinds of places where you can, where you’re really not being selected for but you can just show up and start working on experience? Do you think that that helps or is it one of those things where, as I was formulating this I was thinking, “Oh, but if I was a single parent of three I wouldn’t be able to take that time off.”
JESSICA: Yeah, yeah, and that’s the point. When you ask people to go out, get at user groups, meet people, network, speak at conferences, blog, you’re asking them to be rock stars.
JESSICA: And is our circle really that magical that we should only let rock stars in?
DAVID: I, oh boy. Okay. So, I…
DAVID: I’m torn by this, because if you take a normal person with no experience and get them to sit down and type at a keyboard and they’ll go, “Well, I can’t think of anything to write about.” And then you ask them, “Well, what did you work on today?” “Well, I worked on this problem and there was this inversion in the code,” and pretty soon they’ve been talking for 15 minutes. And you realize there’s your blog post. And they go off and they write this blog post. And six months later, they’re a rock star, because it’s… [Sighs] I don’t know. I don’t know. I worry that I’m sounding entrenched in my privilege here. But on the other side, I really feel like anybody that sits down and does this will have these results. And I don’t want to grind on the face of people that are doing these things and are working hard and are not getting these results. So, I…
JESSICA: I hope some of those people will email us from Avdi’s request.
DAVID: Yes, yes.
CHUCK: Yes, please.
DAVID: And tell me how wrong I am. The interesting thing that I’m noticing though is that Jill went out and was gregarious. And then she got a weird job. She’s an apprentice. But her next job is going to be a full on developer, because like you said experience trumps intersectionality.
JESSICA: Exactly. She’s going to be in the circle in a few months.
DAVID: Right, right. I got a job selling…
JILL: In the rock star circle? Awesome.
DAVID: Yeah, yeah.
JESSICA: Well, you’re a rock star so we let you in the circle, see?
DAVID: Yeah, the example that I used with Brandon, he was a marketer and he got a hybrid job, a weird job. He got a hybrid marketing/programming job. And I told him before he interviewed for the job, “Look, they’re going to be on you to do marketing. They’re going to say 50/50 but they’re going to be on you to do marketing 90/10. And you’re going to have to fight for that 10% of programming time. But that’s okay, because a year from now when you leave, what you’re going to put on your resume is programmer. And it’s going to look like you’ve got a year of programming experience.” And that’s exactly what he did. And he got a full-on programming job out of it next. And I did the same thing.
JILL: And just too, him on the job, if he’s got a question, there’ll be experienced developers for him to ask.
JILL: So, a problem that might take him two days banging his head in isolation, he can really be learning best practices as well.
DAVID: Right, right.
CHUCK: And he’s sort of on the dev team, so he’s sort of one of us, kind of thing.
DAVID: Right. And you do pick up speed almost exponentially once you get out of isolation of being alone and trying to learn on your own and get into an environment where you’ve got mentors and coworkers that want to see you succeed and want to help you move forward.
CHUCK: Can I ask you a question about this circle that we’re talking about here, because I’m not sure. Who decides where the circle is? Is it the people who write paychecks for fulltime programmers? Or is it…?
DAVID: White dudes.
JESSICA: Yeah, it’s the people hiring.
DAVID: White dudes.
CHUCK: So, it’s the people hiring. Is that what we’re saying?
JESSICA: Well yeah, that’s my definition of the circle.
CHUCK: So, how much control do we really have over the circle then? Because some of these folks are going to be senior developers or people who have been programming for a long time who are hiring other developers, and some of them are going to be that manager who’s written some code or never written code who’s hiring folks.
JESSICA: As programmers, right, if we’re not hiring, all that we can do to be nice is to recognize that we’re lucky to have this experience that we have and not disparage people who want to be programmers. And try to make it seem easy to get where we are, just because it’s easy for us.
DAVID: Oh, that’s fair. That’s fair. I’m saying it’s totally possible. It’s going to a, I need profanity to express…
DAVID: It’s going to be a pant-load
DAVID: Of work. It’s going to be a ton of work. And that’s where I think intersectionality really hits home, right? Because people that are intersectioned often don’t have the time.
AVDI: Fewer spoons.
DAVID: Yeah, fewer spoons available, yeah.
JOE: I think Jessica that we can do even better, even if we’re not technically hiring. One of the things that we can do, if you’re not hiring, is to really normalize some of the decisions. Some of the folks who are making these hiring decisions aren’t deciding not to hire people from those backgrounds. They just don’t even know it’s an issue.
JOE: And so, even if you’re not in control of hiring, just making it such that it is normal in the community to do these sorts of things I think would go a really long way with folks who technically you have no sway over.
CORALINE: Really being out in the field or being out in public, being part of user groups and meetups, that is a form of recruiting as well, because you are providing an example of the kind of person who works at the particular place that you work at. And the more diverse those groups are that you’re interacting with, the more likely you are to get diverse candidates applying.
JOE: Sure. And as somebody who has the opportunity, if I go work with say CODE2040 which focuses on black and Latino folks trying to get jobs, what I want to do is honestly shame all the companies who aren’t doing it into doing it.
JOE: [Inaudible] for just feeling bad for not being as cool as us. And I think that that interestingly will move them by force in the right direction.
CHUCK: Yeah, well the other thing is even in your company, if you’re not the decision maker and the decision maker isn’t doing the right kinds of things, and I recognize you can’t do this in all companies, but you probably can insert yourself one way or the other. Because you know the issues in the code, you know what’s going on with the programming, with the team, and so just stepping in and saying, “Why didn’t you hire her? Or why didn’t you hire that guy that could do the thing?” and really explain to them not even in terms of intersectionality but just, “They could really solve a problem for us, and why aren’t you considering them?” And help either point out their biases or help become involved enough to where you can at least influence the decision if you can’t make it.
DAVID: I’ve never seen a racist modern-day let themselves get caught out like that though, Chuck, right?
CHUCK: No. Usually it’s people, they don’t realize that they’ve missed an opportunity, right?
DAVID: Yeah. It’s almost invisible. I love what Joe’s talking about, about almost shaming other companies. I think a great use of privilege is removing invisible doors and blockages for other people. And going out and creating a peer culture of basically saying, “We’ve got a heck of a lot more diversity and we’re profitable because of it and we’re happy and we have much more engagement as a result.” And if you want to fix this at your company, all you have to do is be aware of the fact that you’ve got these biases and start taking steps to deal with them.
CORALINE: I think a lot of it is beyond recruitment as well, though. A lot of it is providing support to people once they’ve entered the company and making sure that they’re not the only woman in engineering, for example.
JOE: I agree.
JESSICA: Working on the outflows, right?
JESSICA: Joe’s experience provides an insight here too, because he notices that the senior developers at the user groups are flooded with job offers and recruiters while as soon as he says apprenticeship, he is flooded with candidates. So, when you go outside and a little further afield than other people, you have completely different problems. He has too many resumes. What IT recruiter wouldn’t love to have that?
CHUCK: [Chuckles] No kidding.
DAVID: Exactly, exactly.
JOE: And what we do know as people inside of the rock star circle here is that stuff like learning the basics of Ruby, the one year of Ruby experience. Alright, so even if you’re at zero, you’re one year away from one year of Ruby experience. We can get you to that point way more easily that we can source a ton of highly experienced already entrenched people that are in the circle.
JESSICA: Also, build a really big kitchen.
JOE: Awesome kitchen.
CHUCK: Alright. Well, let’s go ahead and do some picks.
DAVID: Guys, I actually have a hard stop right now. I have no picks. So, I love you all. You’re my favorite. Don’t tell the other programmers. And have a good week and I’ll see you next week.
JOE: I appreciate that, David. I love you too.
JILL: Bye David. Thank you [inaudible].
CORALINE: Bye David.
CHUCK: I love being his favorite.
DAVID: I said not to tell the others!
CHUCK: Sorry. I always do that.
JOE: Take care.
CHUCK: Alright. Avdi, do you have some picks for us?
AVDI: Sure. I have lots of picks. I’m going to have to narrow it down a little bit. But first, I haven’t done any shameless self-promotion for a while. And I thought I’d indulge a little bit today.
Lately because I’ve been busy with our new baby, I planned ahead a little bit and I got a bunch of guests, special guests to come into the Ruby Tapas kitchen and bring their own flavor to it, in order to give myself a little bit of leeway. And there’s just been some terrific stuff on there. So, if you’re not a Ruby Tapas subscriber, now is a great time to sign up. I’ve had people like Noah Gibbs, Nell Shamrell, Peter Cooper. We’re about to have some episodes from Noel Rappin. We’ve had Justin Weiss. It’s just some phenomenal folks, a lot of people that you may have heard on this show who’ve been sharing some really neat stuff, stuff that blew my mind when I first saw their episode. Like I said, if you’re not a subscriber, now is a great time to sign up. There’s some neat stuff on there. That’s RubyTapas.com.
Apart from that, let’s see. I mentioned last week that my life got a lot more complicated recently and I feel back on GTD as a framework for keeping things organized and not letting stuff fall through the cracks. I went and looked around for a tool to facilitate that process, because I tried to just do it in Evernote like some people do. And that was not working. Yeah, yeah, yeah, I know. I should be using Org-mode because I’m an Emacs fanatic. But honestly, I just, my life involves way too many different devices that need to be synced up. And I’ll need the same information for Emacs to work for this kind of stuff.
So, I’ve been using a tool called Nozbe. It is sort of a to-do list app but it’s specifically geared towards GTD. And it’s not the simplest to-do list app out there. It’s also not the cheapest. And it’s not just a general tool like Wunderlist or something like that. It’s very specific towards the GTD process. And it’s probably not going to make a lot of sense if you’re not using that process. But if you are, it works really well. It works on every kind of OS and device. And it’s been working out pretty well for me.
So, speaking of Evernote, since I’ve been spending more time in Evernote lately, I got to thinking recently that it’d be really nice if I could jot down notes about interesting blog articles or pictures or whatever that I’d seen. And just jot them down in Evernote and have that be blogged automatically rather than having some more elaborate process around it. And so, I googled around a little bit and I discovered this service called Postach.io, which does exactly that. You hook it up to Evernote and you can just write a note in Evernote and assign it to the right notebook, give it the right tags, and a few minutes later it shows up because it syncs. And you can even update notes and the changes will sync up to the blog. So, that’s been making me really happy for just little scrapbook-y type blogging, not the long form blogging, but just little notes here and there that are a little too long for Twitter but too short for one of my long form blogs.
And I will draw the line there since I don’t want to take up all the pick time.
CHUCK: Alright. Coraline, do you have some picks for us?
CORALINE: I do. I’m working on an artificial intelligence side project. And I just discovered Neo4j which is a graph database engine. It’s a really incredible set of technologies. When you download Neo4j you get a few eBook from O’Reilly on graph databases. I’m using it on this side project. It’s schema-free. And the really interesting thing about it is that it does relations better than relational databases because relations are actually first-class objects. So, absolutely stunning performance, especially if you have a complex data model and you need to do queries that span multiple relations. So, very, very happy with that. And I think it would be interesting to lots of people to explore it as an alternative to a relational database.
My second pick is just something fun that I came across called This Charming Charlie which basically combines quotes from Morrissey and Smith songs into Charlie Brown comic strips. It is absolutely hilarious and can make a nice break during the day when you need to step away from your coding problems for a little while.
CHUCK: Nice. Jessica, what are your picks?
JESSICA: My first pick is forget about goals and focus on the process, because in the end if you decide you’re going to write a book and you fail at writing a book then you failed. But if you decide that you’re going to write something every day and you do that, then you could succeed every day. And in the end, chances are better that you’ll wind up with a book. This is how I live pretty much. If I don’t want to do something for its own sake, I’m not going to do it. So, I’ll supply the link to that.
And then I have to supply my current favorite book as a pick, because this is by Dana Meadows. Her full name is Donella H. Meadows. And it’s ‘Thinking in Systems’. It’s about stocks and flows and complex systems and how we can learn from them and affect them but give up on controlling them. And it basically applies to absolutely everything in life. Yeah, it’s the best book ever. And you should read it. That’s my picks.
CHUCK: Nice. I just have one pick this week. And it’s actually something that Mike Hostetler (we interviewed him on The Freelancers’ Show this week) pointed out to me. It’s called DeskTime. And it’s just a way of keeping track of what you’re working on. And I use a different system for tracking my time for my clients. But this is just keeping track of how productive I am and where I’m spending my time. And I’m just trying to find ways of increasing productivity. So, DeskTime, you can check it out at DeskTime.com.
Joe, what are your picks?
JOE: So, the first one that I’ve got is a post called ‘Codes of Conduct 101 + FAQ’. And we’ve been talking a lot internally about whether our company code of conduct is sufficient or whether we should do a little bit more than that. And this post helps me understand exactly how little I understand. And so, it’s been a fantastic resource for me.
And the other one I’ve got which is a completely non-technical pick but I know some of you folks have children. This Christmas somebody gave one of my kids a book called ‘The Book with No Pictures’. And it is the only book I’ve ever seen that makes every one of my kids from 5 to 12 just laugh hilariously every time you read it. And so, I absolutely, if anybody has kids or nephews or nieces, to get them a copy of that book because it’s a fantastic time, especially if you read books in voices, if you’re one of those people that does a bedtime story with all the accents and things. So, that’s what I’ve got.
CHUCK: Awesome. Jill, what are your picks?
JILL: I’m going to have to go with Sandi Metz’s ‘Practical Object-Oriented Design in Ruby’. It’s a great book. I really enjoyed, especially for the beginner.
And I’m going to say edX CS50 class which made learning C actually super fun. So, I would say check that out.
CHUCK: It’s funny, I think you’re the eighth or ninth person to pick Sandi’s book on the podcast.
JILL: Well, it’s just so good. If it’s good, it’s good.
CHUCK: Yeah. I think the five or six of us that were on the show at the time all picked it during different weeks. And so, we just got her on the show to talk about the book. Alright. Well, thanks for coming. Just some awesome perspective there, and hopefully we can help inspire I think from the other direction. We inspire people to get into programming but we can also inspire companies to help people get into programming.
CHUCK: Alright, well we’ll wrap up the show. Thank you guys for coming and we’ll catch you all next week.
[This episode is sponsored by MadGlory. You’ve been building software for a long time and sometimes it’s get a little overwhelming. Work piles up, hiring sucks, and it’s hard to get projects out the door. Check out MadGlory. They’re a small shop with experience shipping big products. They’re smart, dedicated, will augment your team and work as hard as you do. Find them online at MadGlory.com or on Twitter at MadGlory.]
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Blubox.net.]
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]
[Would you like to join a conversation with the Rogues and their guests? Want to support the show? We have a forum that allows you to join the conversation and support the show at the same time. You can sign up at RubyRogues.com/Parley.]