CHUCK:
Four kids, two keys at the same time. [Laughter]
CHUCK:
[Sings two notes]
[Laughter]
[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 a company or deny them without any continuing obligations. It's totally free for users. And when you're hired, they 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 instead. Finally, if you're not looking for a job but know someone who is, you can refer them to Hired and get a $1,337 bonus if they accept the job. Go sign up at Hired.com/RubyRogues.]
[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 you application to cloud services like Heroku, DigitalOcean, AWS, and many more. Try Snap for free. Sign up at SnapCI.com/RubyRogues.]
[This episode is sponsored by DigitalOcean. DigitalOcean is the provider I use to host all of my creations. All the shows are hosted there along with any other projects I come up with. Their user interface is simple and easy to use. Their support is excellent. And their VPS's are backed on solid-state drives and are fast and responsive. Check them out at DigitalOcean.com. If you use the code RubyRogues, you'll get a $10 credit.]
CHUCK:
Hey everybody and welcome to episode 241 of the Ruby Rogues Podcast. This week on our panel we have Avdi Grimm.
AVDI:
Hello from Tennessee.
CHUCK:
Jessica Kerr.
JESSICA:
Good morning.
CHUCK:
I'm Charles Max Wood from DevChat.tv. Just a quick shout-out. Ruby Remote Conf is coming up in March. If you're interested, go check it out. RubyRemoteConf.com. You can also submit talks for the Call for Proposals which will be up for another month or so.
We have a special guest this week, and that's Phil Spitler.
PHIL:
Hello from oddly hot Charlotte, North Carolina.
CHUCK:
Oddly hot, what does that mean?
PHIL:
Oddly hot. It's about 75 degrees here. At least it was yesterday.
CHUCK:
I'll trade you.
PHIL:
[Chuckles] Right, yeah. No, but the cold's coming.
AVDI:
Yeah, you've got the same weather we do.
CHUCK:
Yeah.
PHIL:
Yeah, you're in Tennessee, right Avdi?
AVDI:
Yeah. It's been like shorts and t-shirt weather.
PHIL:
Yeah.
CHUCK:
Well, we didn't bring you on to talk about the weather. Do you want to introduce yourself really quick and then we can jump into our topic which is what makes a successful developer?
PHIL:
Yeah, absolutely. Thanks for having me, first of all. I'm a long-time listener, first-time guest. And for roughly two years I've been working as a mentor at Bloc, which is the original online bootcamp.
CHUCK:
Oh, interesting. What does that mean?
PHIL:
We were established in 2011. We were really coming to the show early as far as bootcamps are concerned. And right away we decided to go with an online program instead of doing an in-person classroom setting. We chose a one-on-one mentorship online. And that's the way we've been working with that ever since.
CHUCK:
That makes sense. I think we all have opinions about what makes a good developer. I'm curious though, and maybe we can just go around the horn, what in your opinion is the most important thing that makes a good developer? Obviously there are a lot of things. But what's the most important?
PHIL:
I [inaudible] consider the most important aspect of becoming a good developer is a growth mindset. It's a mindset that nothing is beyond you and you can overcome any problem that you're faced with really, as long as you're persistent and as long as you understand that you not knowing something right now doesn't mean that you will never know it. And so, a really powerful word is 'yet'. I can't get this yet. If you just throw that at the end of a lot of your thoughts, you can start to think in more of a growth mindset that if you keep going at the problem at hand, then you can overcome it and take over any challenge, really.
CHUCK:
That's really interesting. Jessica, what in your opinion is the most important quality for becoming a great developer?
JESSICA:
I think Phil is right. You need that curiosity and that desire to figure things out. And then after that, it takes a lot of time. Time spent figuring things out, because everything that you figure out how to do, every tool that you use, every problem that you successfully debug, is going to make your job easier in the future. It also takes a bit of luck to happen upon the right people who'll teach you the right things and you get tools that are actually useful. Yeah, so I'm going to go with curiosity combined with time and luck.
CHUCK:
Alright. What about you, Avdi?
AVDI:
So, are we… is the question what does it take to become a developer or a productive developer or a great developer?
CHUCK:
A great developer. And in particular I'm just curious, what is the most important quality you can have?
AVDI:
I think perspective, which for me is illustrated in a lot of things. But one of them is the ability to decide what not to do.
JESSICA:
Thank you, Avdi. You just said what I was thinking about maybe trying to say but I couldn't figure it out.
CHUCK:
So, what do you mean by that, knowing what not to do?
AVDI:
What not to study, what not to fix, what ticket to throw away.
JESSICA:
I totally agree. I was thinking this the other day in fact, when I was trying to work on a program for work. And as an experienced developer I feel like I should put something, not put something in production with bugs. My stuff should be really solid and tested. But that makes me slower than the right out of college people. But then I thought, “Wait, wait, wait, wait. As an experienced developer, what I bring to this is not getting everything right. It's knowing what needs to be right and what doesn't.”
AVDI:
Yeah. I think it's really easy to be a very productive developer. But that's not necessarily what I want to be.
CHUCK:
Mmhmm.
PHIL:
I totally agree.
CHUCK:
Yeah, and I would just add, and this is something that Phil pointed out in his email when we were talking about this topic before, is just wanting to sit down and do the job and sticking to it and having that grit where you just get in and figure stuff out. Especially when you're beginning, you don't know a lot of these things that we're talking about. And so, you have to just get in there and make some mistakes and knock down some walls and break some stuff. And then you figure out, “Oh, okay.” That's the way you learn what Avdi and Jessica were just talking about.
PHIL:
There's a lot of in between where you start and what you become. And much of that is driven by what you're willing to put yourself through to figure things out. And that's where the grit comes in. Even as early as today, I'm working on an Express middleware and basically the documentation does not have anywhere how to do what I'm trying to do. It's just outside of that. And so, I'm just, I'm literally hacking. I'm going to try this, I'm going to try this, I'm going to try this. And eventually things started falling into place, working correctly, and then other things wouldn't. And so, it's just that I'm making little progress and eventually I'm going to get that figured out. And I've been doing that my whole career. And that's part of what I enjoy about programming and what drives really great developers, I believe, is that thrill you get from getting to the next step of a problem.
JESSICA:
Chuck, can I challenge you on a question?
CHUCK:
Sure.
JESSICA:
The question was what does it take to be a great developer? But the topic of the show is being a successful developer.
CHUCK:
A successful developer. Oh.
JESSICA:
And I'm wondering, what do we mean by great or successful? Because great implies comparison. Successful does not.
CHUCK:
That's true. It's interesting because I've had… I've worked with people that showed up for a job and collected a paycheck. And they added value to their company they were working for but when it came right down to it, they weren't out there actively growing or working on anything that really meant anything. And so, I don't know that I would classify them as great developers even though they were successful developers. Meaning that they were successful. They got out there. They did their job. They were worth hiring but they weren't necessarily great developers. I'm not sure how I would define great developers. I know people who I kind of hold up as role models. But I don't know that that's necessarily the exclusive group of great developers either.
JESSICA:
And it's certainly not the exclusive group of successful developers.
CHUCK:
Right.
JESSICA:
Because yeah, there's people who don't do programming in their spare time but they contribute to the organization and are nice and helpful and share what they know. Those are successful people and I'm happy to work with them.
CHUCK:
Yeah. But that being said, Phil brought up a great point and that was that growth mindset, that hunger to learn. And that's something that I really admire about Avdi in particular. I've been following RubyTapas for a while and I've read his blog off and on over the years. And it always looks like he's exploring something new. And at the same time, he's also then really thinking deeply about the way that it affects things that he works on. And by making that growth and making that movement upward, I think that really does epitomize what makes a great developer. But I also know other people that go out, they do a great job, they're constantly learning, they're just not as public. And I think they're great developers. They're just not great public developers, I guess.
PHIL:
Right. The measure of success, like what you're measuring that against… so, great implies comparison. Measure of success almost does as well, I believe. Because one of the things going on in the bootcamp world right now is basically, like job placement rate is the measure of success that a lot have established. And for many of them, it's a number that you can use the metric. But that metric, it's built in with so much fluff that it's a marketing tool. It's not… it has nothing to do with the reality of how successful their students are. And we're working on our number, but when we plan on publishing it we will with basically showing our work, which is what you don't get most places. Who do they leave out of that equation? And in regards to success, I believe that you are successful if you contribute and give back to the development community. That's successful to me.
JESSICA:
That's your personal definition of success.
PHIL:
Yeah. The more that I can give back and the more that I can do to help developers grow and learn, the more successful I feel. So, maybe that's just me as a mentor. But yeah, and other people of course have their own value of what makes them successful, for sure.
AVDI:
I want to respond quickly to what Chuck said, first of all. Thank you. But I also want to say, kind of build on what you said Chuck, which is that there are different forms of success and there are different forms of greatness. And it's also very easy for me to look at some people who are fantastic communicators, programmers and fantastic communicators, people like Martin Fowler or Kent Beck, and sort if idealize them as the great programmers. And they are. They absolutely are. At the same time, there are a relatively small number of them and there's probably space for a relatively small number of these sorts of transcendent communicators. And I've worked with a lot of terrific, skilled, generous, kind, and just incredibly effective programmers who didn't have anything like that kind of high profile. And I think it's easy for… it's a little too easy for somebody like me to say, “Well, I've gotten to where I am partly by being a prolific communicator. And so, you should be, too.” But no, not really. There are a lot of different paths to having a terrific career in this field.
PHIL:
I agree with that. In regards to the different paths to being successful in this field, I had a thought. [Chuckles]
CHUCK:
Mmhmm.
PHIL:
It's been mentioned by both Chuck and Avdi now, speaking to developers that we look up to. I can say right off the bat… it's all summed up in a tweet that I sent out probably four years ago. And that is, “If I could have lunch with Sandi Metz and Robert Martin,” Uncle Bob, “That would be like a dream lunch for me.” The conversations of object-oriented design would just be phenomenal and I would just… it would be great. I can't imagine it wouldn't be like, “Yes, yes, absolutely. Maintainability. Yes.” [Laughs]
JESSICA:
That is one thing I like about conferences, is getting to eat with people who are transcendent communicators.
AVDI:
What do they sort of symbolize for you in terms of… what do they epitomize for you?
PHIL:
For me, they epitomize basically what they speak about, what I take away from what they speak about mostly in their talks, is maintainability. And that's another thing that I'm extremely passionate about. And I believe it's the number one factor in being successful, or having a successful product. And also possibly, even being a successful company, is having something that's maintainable in a way that is not rigid. It's very easy to add features when they request it. And it's just easy to maintain. Everything else is secondary, whether your application… if it needs to be a little faster, sure, work on performance. But the things that they talk about are very powerful, I believe anybody can take away from. Even if you're not a Ruby developer, you should be listening to Sandi Metz. If you're not… Robert Martin's completely agnostic as far as I've seen. That's what I take away from them, is pretty much the message of maintainability that is basically I guess preached, for lack of a better word, through object-oriented design principles.
CHUCK:
What about in functional programming?
PHIL:
In functional programming, I have to say that Eric Elliott is somebody that I look up to in functional programming. And that's just because I'm a JavaScript head myself as well. I love Ruby, love JavaScript, and I could stay in those two languages forever and just live on that. So, you have two podcasts that I greatly love. [Chuckles] So yeah, Eric Elliott. And in regards to just functional programming in general, to flip object-oriented design and flip over to functional programming, I have a very keen interest on that because it's another way to manage complexity. And that I love. It's another way to get to the same place. Actually could be, maybe not a simpler way but a cleaner way than with huge object structures.
CHUCK:
So, I think it's interesting that you basically said, “I would go and find an opportunity to be mentored by such and such a person and such and such a person,” Sandi Metz and Uncle Bob. What about people who are newer who maybe wouldn't recognize all of the pearls of wisdom so to speak, that Uncle Bob and Sandi Metz would start? The really new, the beginners, or they just haven't taken the time to educate themselves. Where do they get started? Do they just find somebody that's a rung or two up the ladder?
PHIL:
I would say maybe not a rung or two up the ladder but someone who's used to working with people who are just getting started. One of the things that I do at Bloc, we get some developers who come in and they've been working on Codecademy on their own for a year. And so, they come in and by the time we get to the end of a course or a track, they're ready to roll. And they're asking me about topics that aren't even in the curriculum and it's a blast. That's one student.
And then another student is completely green, never done that in their life. I worked with a student, Carmen. She was an extremely fun student to work with because she was an Administrative Assistant at a college. And we worked together for eight months. And I'd say she struggled a little bit with… she'd spend too much time on problems. But then it kind of let me know that she had the right idea about this. She didn't want my help. It was a little bit too a fault. So, I persuaded her a little bit and basically I was a little more active in staying in touch with her between our meetings and getting her to tell me, “What's a sticking point for you right now?” And basically she'd tell me. And many times I was just a rubber duck. [Chuckles] She'd start telling me and then she'd work it out on her own, which is incredible. But yeah, today she works at a startup in San Francisco called Flyer.
And I'll say this in regards to any bootcamp. To get your start in programming, bootcamps are essentially equipped to work with someone who's beginning to program because that's just what we do every day. Now, our model's a little different. We actually work with a mentorship. Mentorship is really the cornerstone of the way we operate. It's a highlight. It's [inaudible] throughout the whole organization as really what makes up our company. And so, with pair programming and working one-on-one like that, you really get to know your students and work with them directly in a way that will positively affect them. And they get the attention regardless of what skill they come in at, of what they need.
And to find someone like that… that's essentially how I got my start, is trying to solve a problem and seeking out a sys admin and be like, “What language should I learn to solve this problem?” And he said Perl. And so, I dug in and I kept going back and forth with him. And I didn't realize this, but I just, I ended up with a mentor and didn't even know it. And so, he mentored me through my first project. And two and a half years later, we were still using what I built. And that got me a job in a web department. And everything just moved from there. But working closely with someone who knows how to direct people who are novices is definitely a great way to get into the field and to become a good developer. And then onto greatness.
AVDI:
Now, I'm curious, Phil. Did you care from the beginning about being a great developer? Or was there a moment where it started to be important to you?
PHIL:
I would say there was a moment when it started to become important to me. When I first became a developer, it was literally to scratch my own itch. I was working at this internet access company and I was a customer service rep. And essentially we were doing something on paper that I was like, “We're a technology company. I have no idea why we're doing this on paper.” And I just decided that I didn't want to do it that way anymore and so I was going to figure out how to turn it into a web form back in the day. And so, that's what I just chose to do and decided to just push forward until I figured out how to do it. But it was just about that one project then. And then when I got a job as a web developer a couple of years later, I would say that it was still a number of years before I
started looking into object-oriented design and started to want to be a better developer, rather than just solving the problems at hand. So yeah, there was a little lapse there, which I hadn't even considered until you asked. So, thanks for that.
CHUCK:
I'm curious, Avdi. Same question.
AVDI:
I was just thinking about that, myself. And it gets a little fuzzy when I think back. [Laughter]
CHUCK:
Well, I can jump in here and talk about my experience. Because I've been programming off and on little toy things since I was in junior high school. And I never took it seriously. I took a whole bunch of computer science classes. I didn't take it seriously in college. I was going the IT route when I was in college. And I wasn't really interested in being the great developer at that point. I was really more interested in just getting through my classes and getting my degree. Once I graduated and started working on an actual project that actually impacted people, that was when it really clicked for me. Oh, if I were a better developer then I could make a difference in this way or that way. And so, when it got tied to something I really cared about as far as the impact I could make and the way that it impacted people I know, because the application that I was developing was actually an application that was used by my coworkers to manage our tech support load, and that was where it really clicked, was that, okay.
The other thing was that I started participating in users groups. And I was fascinated by the conversations I could have. And so, it was much more social for me, I think, than actual, “Oh, if I were a better technologist then I would make better technology.” And that kind of came along as I
developed in these other way.
PHIL:
Yeah. I'll actually go back refactor my statement. Basically, I believe it was likely when I felt the pain of my own inefficiencies as a programmer or when I felt the pain of other developers' inefficiencies is when I decided I needed to get better, because I needed to basically be as, not even productive, but to provide better code for other developers to work on. Because unless you're a one-person show, you're not the only person there. So, it was doing them an injustice by me not improving.
CHUCK:
So Avdi, can you answer the question now?
AVDI:
Thinking back, it's hard to spot a point where I wasn't pretty gung ho about wanting to just be the best I could be at what I was doing. Looking back at my first programming classes and jobs, I always wanted to understand everything. I think it did develop over time gradually, that it sort of moved from wanting to understand everything and know all of the things to more wanting to create quality solutions and then more wanting to be more discerning about what I was working on and stuff like that. But there was always that desire to just, to learn and learn and learn and understand how to create really elegant solutions.
PHIL:
And Jessica, I'm extremely interested to hear your answer.
CHUCK:
Yeah, I was going to go there next.
[Laughter]
JESSICA:
Oh, [thanks]. I've always wanted to be a good developer once I started programming, once I had a full-time job in it. But it was 10 years before I really cared to go beyond just good. And that was when I started, I wanted to speak at conferences. And once I got that bug, once I started looking at, at the time it was functional programming in F#, and started looking at other languages and started going to conferences and having conversations… and like you Chuck, the conversations about code are really fascinating. And yeah, I wanted to be able to sit down at lunch or dinner with, oh I remember one with Marcus Lagergren and Daniel Spiewak and [Bodel]. And they're talking about all these category theory things that I now know enough about to have a conversation. [Chuckles]
CHUCK:
Mmhmm.
JESSICA:
And the intellectual stimulation of that has really motivated me to learn more and more about programming. And it's made better code, but as far as having an impact, I find that the way to have more impact than just being productive is to make the people around you more productive.
CHUCK:
Mmhmm.
JESSICA:
So Avdi, you were saying that you learned and learned and figured out all the things but at some point you started focusing on helping other people figure out all the things.
AVDI:
Yeah, gradually.
JESSICA:
And that's [inaudible] for me.
PHIL:
Absolutely, yeah. To your point of being able to have a conversation, I recall it was… I'm not even sure which RailsConf it was. It was probably six years ago. But I was sitting at a table by myself and Aaron Patterson was sitting at the table next to me. And he was sitting with, I'm trying to remember the guy who basically maintains the Windows version of Ruby, but he was sitting there too. And basically they invited me over. I was like in awe [chuckles]. I was, “How am I going to even speak?” And this was only six years ago. And we had… I was fine. Holding my own in a conversation was what I was trying to do. And I was successful with that. But yeah, it's now extremely exhilarating and fun to talk shop if you will, code, whatever. It's extremely interesting to talk about programming and to actually get into deeper levels of thinking about the way to solve problems with code.
CHUCK:
So, is that how you know you've arrived is you can sit down with Aaron Patterson and…
JESSICA:
[Chuckles]
CHUCK:
And whoever else? Eric Hodel and…
JESSICA:
I don't think it matters who you sit down with, as long as you enjoy it.
CHUCK:
Yeah, but…
PHIL:
But…
CHUCK:
But people are like, “Okay, so,” and this is something I hear a lot from junior developers or people who are newish anyway. It's like, “How do I get that badge that says Senior Developer?” And they want to know sort of when they've crossed that finish line and can say, “Okay, I'm here. I've done it.” Is there a Great Developer badge or some tattoo you get on your forehead that tells everybody that you're awesome?
JESSICA:
I think everything we've said so far is about, there is no done. There is only the hunger.
PHIL:
Yes.
CHUCK:
You just ruined some people's day. I know it.
JESSICA:
[Laughs] PHIL:
[Chuckles] Hopefully you made some, too. I don't know. If there are masochists out there who love the pain of growth, then they love what you just said.
CHUCK:
Yeah.
PHIL:
And I'm one of those people. So, you're absolutely from what I've seen just through my own experiences and even through my students, if you can accept and love the challenge of growth, then you're right. It never ends. It just never ends. And it's an art in that way, like a martial art. And it's wonderful.
CHUCK:
I think the other thing that's important is that, and I think Jessica was the one that kind of implied this was, is that what you want? Are you getting out of it what you want? Because we all contribute in different ways. We all throw in our lot in one way or another. I hear some people talk to me about the way that I contribute to the community, which really isn't open source code. Avdi contributes to the community by his speaking and his videos and things like that, his SIGAVDI mailing list which is awesome, too. Which is more perspective than just code anyway. But you have all of these different things. Jessica contributes through her talks, through her Pluralsight courses, through some of the other things that she does out there in the community, about Git or about functional programming.
And so, there's a lot there that we give out to the community. And it really is, am I contributing in the ways that I want to contribute? To my team, to the community at large, to the people around me. Is it providing me with the lifestyle that I really care about so that I can spend the time I want with my family, with my friends, with whatever? Am I able to support the people that I need to support and pay for the stuff that I got to pay for? There's just so much more to it than just whether or not you can write great code.
PHIL:
Absolutely. One of the things that Bloc has done is created a software engineering track, which is geared towards being able to go to Google or Twitter and actually get interviewed and be able to land that type of a job. We're basically pushing the bar and changing the scope from online bootcamp to pretty much going up against some of the best computer science degrees in the country. And with that, because we have a bootcamp background we're teaching the practical skills but now on top of that, the practical skills being Git, just the tools that are being utilized today by companies, and then on top of that we're training students in algorithms, object-oriented design, data structures. And from that they're in a much better starting point to accelerate in their career. And sometimes, it's about getting the job first and then deciding that… the love may be secondary to, this is a great field to be in. And so, the growth mindset can happen further on, I believe, in choosing to become a great developer. We've discussed it here. That can definitely happen at a later point in your growth. And we love seeing the outcomes that we're already getting from this.
CHUCK:
So, let me push that button a little bit, because I see a buzzer button here and I want to hit it. Because that in some people's mind anyway is kind of how they arrived, right, is they're able to get that job. Even the job at Twitter or Facebook or Google where maybe the bar is a little bit higher. So, what skill sets are in there? What are those companies looking for where you can at least say, “Well, I've at least got the basic level of good developer in here”? I think communication skills are pretty critical. I think knowing how to use Git and a basic understanding of whatever language or technology, framework you're using. I think critical thinking's a critical thing.
JESSICA:
Resourcefulness, like knowing how to use Stack Overflow.
CHUCK:
Yeah.
JESSICA:
But also, you have to be willing to ask questions.
PHIL:
Right.
CHUCK:
It sounds like Phil has a list. I'm kind of curious to see what's on it.
PHIL:
[Laughs] Yes. So really, the part that's missing when you come from a bootcamp, and the thing is a lot of those practical skills you listed are part of working, at least through our bootcamp. Because that's the environment that I'm aware of, is working one-on-one with students. So, through our bootcamp courses, and we have a full-stack track that's actually Rails and then followed up by frontend which is mostly JavaScript, it's like 80% JavaScript, through that working with a mentor, it's not that you understand how to socialize about programming. But you understand how to work with someone else pretty directly, like you would in a work environment instead of a class environment. And so, that just comes with being from a bootcamp.
On top of that, what the software engineering track that we put in place has, which we actually spoke with engineers from Twitter and Facebook and Google and others that were listed to me, we just talked with many organizations. And the two things that we ask them is, “What's missing from camp graduates?” and basically “What did you learn in your CS degree that you utilize at your job?” So from that, what we have is a list that's data structures, algorithms, design patterns, database design, and essentially understanding how to build a framework and what runs things under the hood instead of the surface level just knowing how to approach problems at the surface. You understand how the things that you're using work underneath. And you can get in and really dig in on that.
JESSICA:
Yeah, that is useful.
CHUCK:
Mmhmm
JESSICA:
To be able to dig into the library code once in a while. I guess I don't want to do it very often. But it is a great skill to have, to just not be afraid to go deeper.
AVDI:
Yeah, code archeology seems like an underrepresented skill in curricula.
JESSICA:
That's true, of looking at useful existing code and discerning the design decisions that went into it and maybe why that was made.
CHUCK:
Yeah.
PHIL:
I absolutely agree. And thank you for that, Avdi. You've just given me a new tool. I'm essentially going to go find libraries that I can reference source code from to show students who have questions how things work. So, that is awesome. Thank you.
JESSICA:
So, I have a question. I would like to hear more about your job. You have an interesting… you're in software engineering but you're doing something different from most of us. Can you tell me about that?
PHIL:
Yeah, absolutely. So basically, I've been in web development since 1999. That's when I had my first job as a web developer. And I started building my skill set. And this is just the way that I found myself where I am. I ended up in between jobs and somebody, one of my Facebook friends who I worked with three years ago, it's been five years now since that happened, but basically posted about Bloc and said, “I'm doing part-time mentorship at Bloc.” And I was like, “Well, that sounds extremely interesting.” And I have worked with a couple of junior developers so I was like, “Let me check this out.”
And essentially, I sent in my resume, spoke with someone, and I was working with three students and decided to ramp it all the way up to 15. And it ended up turning into a full-time thing. And now I'm hired as a full-time mentor. And really, we just recently brought, or are in the process of bringing all of our mentors onboard either as full-time or part-time employees instead of contractors, which a lot of companies that have this setup have a lot of contract mentors. But even though sometimes it's harder to do things like we've done with bringing people in-house, it's definitely going to provide a better solution for our students, because we can work more closely with all of our mentors. Me specifically, and here's where you can start if you want to… [Laughter]
PHIL:
Sorry about that. Okay. So, thanks for asking that question. I, on a day-to-day basis, my day consists of multiple calls with students that are taking either Rails curriculum, the Rails course, the JavaScript course, or are in the full-stack track and are in various different stages of either of those two courses. And coming up very soon, I will also be teaching the software engineering track, which I'm having to level up myself on many of the things I listed out earlier. [Chuckles] Algorithms, data structures, because I don't have your typical background in CS.
But yeah, so essentially working with students to help them get through the curriculum that we have and the challenges that we provide for them to overcome to become a successful graduate, that's what I do. So, the cool thing is, and one of the reasons I love it so much is that I love solving problems. It's almost an obsession of mine [chuckles]. And I don't get to just solve my own but help people solve theirs as well. So that's, to be able to do that daily is just fun. That's day in and day out. And students can ask me questions any time. We use many tools which we can talk about if you like as well, to communicate with our students.
JESSICA:
How many students to you meet with in a day?
PHIL:
I meet, depending on the day, anywhere between I would say five, five's actually close to the upper range, anywhere between three and six students. And there's a lot of work in there in regards to… we have students communicating with us all the time, asking us questions about places that they're stuck and stuff like that. So, it's pretty funny that if you look at the number of calls that we have, they keep the load light enough on us as mentors to where we can really work with our students on a level that they need. So yeah, it's anywhere between three and six a day, probably.
JESSICA:
And how long do you work with one individual student?
PHIL:
30-minute sessions.
JESSICA:
Time, months. How long do you like…
PHIL:
Oh, oh, okay.
JESSICA:
How long does this pairing of mentor with learner last?
PHIL:
We meet with our students either for 12 weeks, 18 weeks, or 36 weeks. And we meet with the 12week students three times a week, the 18-week students two times a week, and the 36-week students once a week. Now, that's just the meetings that we have. In regards to communication, because we have open lines of communication with all of our students, that's really driven by them and what they can do, as far as meeting with us and how fast of a pace they can move through the curriculum. So, we can work with anybody from just out of high school and wants to get into programming, to someone… I've worked with and I'm very happy to say that I've worked with a single mom who is an amazing individual. And I can't wait for her to graduate to see what she moves onto. We can work with all aspects of that. She has a full-time job and she's still able to do this. And that's exciting for me to be able to see the total range of people that we can help.
CHUCK:
What do you do during these meetings or during this process that gets them to that point where they are great developers or successful developers or whatever you want to measure them by?
PHIL:
The typical meeting, it starts off with if they have any sticking points that they can't get past. So, helping them think about how to get past those problems is probably I would say one of the biggest values that you can get out of this type of mentorship paradigm that we have.
And so, through the course of us either challenging them because we see they're at the point of needing a little more than the curriculum is asking them for, or when they get stuck in the curriculum, like on both counts when they have questions, showing them how to think about problems. And how to solve them rather than solving problems for them through a little bit of… it begs the question. I'm trying to remember. Like the Socratic Method, through a little bit of that. We definitely, we're not totally Socratic. But sometimes that's… so, what if it were like this? What if it were like that? And just getting them to think through problems in a certain way that's going to help them. Once you learn how to think through problems, if you get good at that then I believe you can continue to move forward. And that's what we're really trying to do, is to create that.
AVDI:
Yeah, that's a question that I had is, as a mentor I'm curious if you have thoughts on where to draw the line and how to draw the line between showing somebody how to do something and saying, “No, I'm going to stop here. I need you to make the next step.”
PHIL:
With the level of compassion that I have, I have to be hard on myself to draw that line. That is definitely a good question. I would say it's probably, if they are ready to, which you can freeze your enrollment, if they're ready to freeze their enrollment, you realize you're not helping them enough. If they are breezing through things, you're meeting with them and you all are flying through things and you can tell that they're really leaning on your for everything, you can catch yourself providing everything that they need rather than teaching them to fish essentially, yeah it's a big balancing act.
Like I said, there are some, not metrics but factors that you can take into account, like is the student going to freeze if they can't… because I'm not actually stepping in enough? Or like I said, there are some factors that you can look out for. But it's definitely not set in stone. A lot of individuals tried to set a rigid line on something. And the thing is, every student, being an individual, it's weird. If you do gain rapport with people, through rapport you can figure out what this student needs. And as far as whether they need to be pushed harder through asking them more of themselves or whether you're going to lend them the helping hand they need to get through the course… but essentially I never want a student to get through the course holding their hand the whole way. Because they're not going to be better for that. So, we definitely make sure that communication throughout our organization takes into account exactly what you're asking.
AVDI:
So, you talk to each other about how to draw those lines as well?
PHIL:
Yeah, absolutely. We have lead mentors, the mentors we report to. And it's not a report type thing. They're actually mentor of the mentors. And I'm very lucky to be paired with an individual that I greatly respect mainly by the way he handles himself I would say socially. And he's a skilled individual with being soft in an approach that it makes you want to follow him. He just leads in that way. And so, I'm very happy that my lead mentor, Levi, is my lead mentor, yeah. Without the lead mentorship group, which we didn't have for quite a while…
AVDI:
Mmhmm.
PHIL:
Without the lead mentorship group, we would have conversations but they were never directed.
And now we have that leadership and direction to formalize a lot of that communication.
CHUCK:
One thing that I see here is that mentorship is a different skill set than development. We had the same conversation with Marcus Blankenship a week or so ago where management requires different skills than programming. So, by having a mentor who can help you become a better mentor, you are developing the skills that you're using every day. Now certainly you have you technical knowledge and I don't want to discount that at all. But your ability to help somebody and communicate well is also just as important when you're doing that kind of work.
PHIL:
Absolutely. I see deficiencies in my own abilities all the time. And I go to Levi and say, “I was presented with a situation that I didn't know exactly how to manage it. I got through it but I know I can do it better. How can I do this? What's your take on this?” And so, having that is incredible. Levi was a mentor. He's been mentoring way before I have. I've been mentoring for two years. I think he's somewhere around six or eight. And really, just to have that go-to to become a better mentor… because you're right. Programming-wise, I have a huge passion for it. Mentorship I have a huge passion for it. So, it's a great place to be right where I am.
But I'm definitely a lot earlier in my progression as being a great mentor, much earlier along than I
am if I were to consider myself a great developer, which I don't like to even think in that capacity. Because there's so much more I can level up on even there, that it's just always a moving target. And you just have to be happy with where you are in the moment
AVDI:
Here's a question about mentorship that's on my mind a lot as an educator which is, how important is it to do some hands-on work of your own? And how often do you think you should be doing that? There's that old saying that kind of haunts me from time to time: Those who can't do, teach. And I always worry a little bit about as an educator, am I losing touch with the very craft that I seek to show people if I don't actually take time off to work on a big project or something like that. Do you have any thoughts on that?
PHIL:
Yes. It's without a doubt important to continue to sharpen the axe if you will. And to stay current with technology. We have top notch curriculum that is changing not too frequently but frequently enough that it keeps up. But from the perspective of just myself, I wish I was further along in digging into things like Elm and functional programming in general, because that's… when I see things move, I am interested in why it's moving. And so therefore, it makes me want to dig in and learn it.
And I do agree that I have the same… when I started teaching as a mentor, I had the same kind of thought of, “Wow, is this the death of me as a programmer?” [Chuckles] And it hasn't been. I've worked on some open source projects of my own, really libraries and utilities, open source backend as a service thing. And they keep me sharp to a point. I'm definitely not up-to-date with the very latest. In fact, I've only messed around with React for all of about a half hour. But yeah, I definitely think to continue to do what you're teaching is very important. I believe the only way that you can continue to convey certain principles, you have to stay current with them yourself.
AVDI:
Do you set aside time for that?
PHIL:
I would say not in a regimented fashion. One of the things that I'm trying to do with my growing as an individual and to have more time with my family and to be a better mentor, just to be better in life, is to be a bit more organized with stuff like that. And everything in general. I kind of like to freestyle a lot of everything in my life. And it's a lot of fun. The conversations are fun to do that way. Conversations with people are definitely fun when you can just freewheel and say how you feel and bounce ideas and all that. But when it comes to organizing your life, having a freestyle approach is probably not the best for long-term. [Chuckles] So yeah, that's something that I'll probably by looking at doing in the near future, is actually having a set amount of time to do that. Right now it's literally what just compels me to code ‘til three in the morning.
CHUCK:
Yeah, I will jump in on this. We had a long conversation actually last week on the Freelancers' Show about setting goals and then how to reach them. And one of the things that we went into was basically how do you get things like this done? And for me, what I wind up doing in the morning is I have a set routine. And one of the things on my routine is to watch technical videos of some kind. So, it can be a conference talk. It can be a RubyTapas or Elixir Sips are my go-to's for keeping current on technologies I'm interested in. I'm also going to be watching and picking up WatchMeCode by Derick Bailey, which is another technology that I would like to pick up on. And I
may actually go after something like NSScreencasts by Ben Scheirman.
Anyway, so I build that in. And then I usually have a project running and I will schedule at least a couple of hours to work on it every week. But I have run into this same concern that Avdi raised, except that I spend a lot more time coordinating things for podcasts, coordinating things for conferences, doing other things that affect business more than any kind of coding exercise or coding growth. And so, I deliberately have to build it in because if I don't, I won't get to it.
PHIL:
That absolutely makes sense. And it actually begs the question as we grow in our careers as developers and branch out into speaking engagements, running podcasts, running RubyTapas, as we start to do more of those things, because RubyTapas now it probably runs itself code-wise, that's creating content. So, as content creators, how far does that take us away from our original craft that brought us to that point?
CHUCK:
Well, and does it matter, right? Because I have these conversations with great people who probably code a whole lot more often than I do. And I feel like I can still hold my own. Now, there are a lot of things that they're talking about that are new to me. But at the same time, do I bring the value or don't I? And it depends on what kind of value I'm measuring.
PHIL:
Absolutely. And it depends on what values are important to you.
CHUCK:
Mmhmm. Alright. Well, let's go ahead and do some picks, then. Jessica, do you have some picks for us?
JESSICA:
Sure. My favorite Christmas present that my kids got was a card game called Rat-a-Tat Cat. And it's memory and some numbers. And it's just a simple card game that's really fun for the family. And it's cheap. So, I recommend Rat-a-Tat Cat.
And my second pick is a beer pick, because oh my gosh, we have the most awesome beer around here at the moment. And I wonder if you can get it nationally. It's called Sorry Not Sorry, which is a great name. Because it's like, “I'm an IPA! And you're going to like it!” Very hopsy but totally worth it with its richness. It's a collaboration between Stone Brewing and one of the local St. Louis ones, 4 Hands, which is pretty neat. And that was my favorite beer this Christmas. The end.
CHUCK:
I'm expecting Avdi to chime in and go, “Hey, that's my bit.”
PHIL:
I was going to say myself, a beer pick, that's easy, right?
[Chuckles]
PHIL:
That's awesome. I love it.
CHUCK:
Alright, Avdi. What are your picks?
AVDI:
Well, I don't have a beer pick today. I do have a Christmas present pick. The big gift that I got our kids this year was I got the oldest three of them their own tablets, which is something I've been thinking about doing for a long time. And I'd been looking at some of the cheaper kid-oriented tablets that were out there for a while and I didn't really see anything super compelling for a long time. But Amazon in their holiday sales put something up which actually was pretty compelling. I'm really, really happy with it. Amazon sells, they sell these Kindle Fire tablets. And they're Android tablets with a sort of light Amazon skin. But what you can get from them, and you can get one of their standard lower end Kindle Fire tablets in a children's edition, and what you get is you get this sub $100 tablet with perfectly decent specs. You can play games just fine, play videos just fine. It's not HD but it works quite well, good battery life, all that stuff. It comes with a big cushy bumper that you can wrap around the whole thing that makes it, not indestructible but pretty hard to kill. You could probably drop it down a flight of steps with no problem.
The package also comes with a couple of years, two or three years of no questions asked replacement for when the inevitably destroy it anyway. And it comes with a year of their Kindle FreeTime service which is basically you create a profile for your kid and you enable this service. And it's like, if you already get Amazon Prime it's a few bucks on top of your Amazon Prime subscription once the free year runs out. And it gives them this huge catalog of curated, totally free games, videos, shows and stuff, kids' shows, and books that are selected from Amazon's library. And the games are not ones that sit there nickel and diming them trying to get them to put in their parent's passwords for more money or anything. They're complete editions. And they can just sort of, they can go through, find stuff on their own. It's all curated to be age-appropriate. And they absolutely love it. They're so happy with it. And I'm sure we will come to regret this in some way eventually. But for the time being, they leave us alone in the morning.
CHUCK:
[Laughs]
AVDI:
[Laughs] And they don't scream at each other for control of the television either. So, you put all this stuff together and it's actually a really great deal for kids. So yeah, that's one thing that I've been really happy with.
I'll do one more pick which is the last audio book that I finished. The book is called 'The Now Habit' by Dr. Neil Fiore. And it's one of these self-help books. It's aimed at procrastination and dealing with procrastination. I wouldn't say that procrastination is my biggest issue right now. I've certainly had bigger problems with it in the past. I really have, I feel like I rarely have time to procrastinate these days. But it's still been a really… it was still a really good book for thinking about where I spend my time and how I make the choices to do something less threatening that feel productive rather than doing something that might be more long-term useful.
And it has a lot of good strategies and it has some good strategies about realizing that procrastination is not just weakness but it's really a perfectly rational coping strategy for some of the stressors and self-talk that we have around doing the big things in our lives. And even the fear of success that we can have sometimes when you realize that if you complete this big thing, you're just going to have to do another even bigger thing after that. And there are these non-obvious dynamics at work. So, it's good for that.
It's good for… he talks a lot about the concept of guilt-free play and the importance of actually scheduling your week. If you intend to do some fun things in your weeks, actually scheduling your week around those things so that you're not constantly pushing back all the good stuff that you wanted to do, plan on doing one of these days, and never doing it and feeling worse and worse and worse. And so, procrastinating more because you feel like you're never get to have any fun. And so, you procrastinate as rebellion against these things that you have to do. And that's another thing he talks about a lot, is getting rid of the self-talk of have-to's. Because pretty much everything really is a choice. So yeah, it's been helpful.
I've started restructuring my life a bit in response to it. I've started scheduling in unequivocal times of, “Okay I'm going to hike on Wednesday mornings” and I'm not going to let the idea of, “Oh, but I didn't get enough done on Tuesday” to change… I'm not going to allow that to change my plans on Wednesday morning. So yeah, if any of that speaks to you, I would recommend the book. I think it's pretty good. He's absolutely terrible at writing guided meditations. But other than that, it's a good book.
CHUCK:
Awesome. Alright. I'm going to throw out a couple of picks of my own. One of these also is Christmas. It's something I got for my wife, actually. She will yell for the kids to come upstairs and talk to her or whatever from our bedroom. And they won't hear her, or they selectively won't hear her. I'm not sure which it is. But anyway, so I bought a four-channel intercom system for the house. It just runs through the electrical system in your house which means that you can't put it by… you can't put it behind a surge protector or backup batter or anything like that. But if you plug it directly into the wall or into some kind of power strip that doesn't have a surge protector in it, then you can use them that way. Anyway, so now all she has to do if she wants to kids is push the button and talk. And that's been pretty nice. It was $100 for four stations. And I'll put a link to that in the show notes.
Also, another thing that I bought my wife, I'm picking her gifts. Anyway, on Fathead.com, I don't know if anyone's been to Fathead.com. But they have those big decals that go on the wall. And she's a huge fan of Maleficent. And so I got her a six foot six by four foot something decal for the wall of Maleficent. And she's pretty excited. She's trying to figure out where she wants to put it. So yeah, so those are my picks.
Phil, what are your picks?
PHIL:
Yeah, so definitely. I have quite a few picks so I will run through them fairly quickly. But my first pick and I'll get these out of the way is spitfire. It's a Backend as a Service storage that I created. It's in Node. I also have AutoAPI which is a Ruby gem, which actually pretty much does the same thing but I've taken it a bit further with the Node version. That's at GitHub.com/spitfireio.
And then the next one is Bloc's SET program. One of the reasons why it's one of my picks is because I have trouble thinking that sometimes bootcamp 12 weeks, and then people touting 8 weeks and even less, I don't believe that can make a successful developer. And then the other side of that is CS grads who don't have the skills they need in the job market to be able to actually go in and just start working. So, the SET program marries those two very nicely. And I'm really happy that we're offering it now at Bloc.
And my third pick is Kyle Cease. I'm not sure who's heard of him. But he's basically a comedian turned what I would only consider a reality navigator. I kind of came up with that. That's the only thing I can think of him to be. It's not really spiritual. He's not motivational. Really, he just points out perspectives on life in certain ways that are comforting and actually have helped me greatly recently.
I have to mention this one. My coworker Ariel's man crush on Avdi. That's my fourth pick.
Carol Dweck's TED talk. [Laughter]
PHIL:
Yeah. Ariel, he found out I was going to be on the show and he was like, “Oh my god. You got to give me a shout-out to Avdi.” He wanted me to give you a shout-out due to his man crush on you. So, his man crush on you is one of my picks.
So, Carol Dweck's TED talk, 'The Power of Believing that You Can Improve', it's a great talk about the growth mindset. And it has some really great data in it as well.
And then last but not least is a show called Wild Kratts. It's a children's science show.
CHUCK:
[Laughs] My kids love that show.
PHIL:
Yeah, absolutely. My three-year-old daughter loves it and is extremely into science, telling me things about animals and stuff that I didn't even know. And it's just amazing to see her latch onto something like that show. And for me, it's very powerful. It's got a lot of substance to it. So, that show is wonderful. We're even having her, we're theming her birthday party around it. So, that's coming up in March. So yeah, that show is, it's great. It's great. It's informational. And it's fun. I enjoy watching it. So, those are my picks.
CHUCK:
Awesome. I guess I'm going to piggyback on your Carol Dweck pick. Her book 'MindSet' is awesome.
Alright, well if people want to know more about you, more about what you're doing, more about Bloc, what do they do?
PHIL:
They go to Bloc.io. And in the show notes, I'll definitely need to get you the link to the Software Engineering Track landing page. That's the best way to get in touch with us, is through those. And we have…
JESSICA:
Spell Bloc.
CHUCK:
B-L-O-C.
PHIL:
Yeah, Bloc is B-L-O-C dot I-O.
JESSICA:
Thanks.
PHIL:
So, to learn more about Bloc go to B-L-O-C dot I-O.
CHUCK:
Now is there a way for people to identify, I am a terrific fit for Bloc? Are there specific people or a specific type of people that you're targeting that you can help better than others?
PHIL:
Actually, anybody who wants to. We accept everyone. Our acceptance rate is 100%. We don't have a process by which we only take the top 10% of people who do certain pre-work or whatever. That said, really if… again, I'll go back to the growth mindset and accepting challenges as challenges. Anybody regardless of what level they come in at, if we can get to that mindset fairly quickly then they will be successful at the end of the program. And it also has to do with what their measure of success is. If it's getting the job, if it's just getting better to eventually get the job, it's what their level of success is and how they wish to grow. So yeah, there's really not a certain I guess prototype of a student that is successful coming through our program.
CHUCK:
Okay, sounds good. Well, we'll go ahead and wrap this up. Thanks for coming, Phil.
PHIL:
Thank you.
CHUCK:
We'll talk to you all next week.
[Hosting and bandwidth provided by the Blue Box Group. Check them out at BlueBox.net.]
[Bandwidth for this segment is provided by CacheFly, the world's fastest CDN. Deliver your content fast with CacheFly. Visit C-A-C-H-E-F-L-Y dot 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.]