Joel: Welcome to No Compromises. A peek into the mind of two old web devs who have seen some things. This is Joel.
Aaron: And this is Aaron.
Joel: All right, I'm just going to say upfront, this is a little potentially self-serving but I think it's a good topic so I wanted to bring it up with you today, Aaron. Which is this idea of whether I'm a solo developer, working on my own stuff, where I work on a team, or maybe I'm even a team leader, or I have some responsibility, where are those moments where it really makes sense, either in terms of financial sense or just business objectives to get outside help? To bring in an expert, to get some coaching, to get a second opinion. You see where I'm going with this? Do you have any thoughts on this as a whole? And then I can share kind of what I'm thinking too.
Aaron: Yeah. I think the first thing it kind of comes down to is what is your measurement and what's your goal? So, sometimes when the projects have been going on for so long, you're working in a company for so long, you start to think, "If I just had more hands, we'd finally get caught up." Or, "If I could just hire that person, or if I just put some more developers on this." And guess what, that's not the answer, that's really not the answer. The question you have to ask yourself, basically the first question is, what is it that I'm trying to accomplish that I can't right now? And the answer isn't trying to get all my projects done, that's always going to be something that you'll always be able to do and not do. Okay? That's not the thing. It's, "Do I need to increase my velocity? Do I need to get a subject matter expert? Do I need to find project management?" because that's my thing. So you start to find... The first question I'd say, before you even get to do I need a coach or whatever is what is it that's even wrong? What's the problem here? Tell me what that is and then we can kind of figure out now how people can solve that for you.
Joel: And I think when you say, find out what the problem is you're kind of saying like at a holistic team level. Because that question could also be at a technical level, like "What's holding us back?" And then you might be back in that position where getting an outside opinion would help. But I think what you're saying is a step before that. Like, what would we want to see improved if we sought help or we upskilled ourselves, or whatever? Like, what is the actual change we want to see in the team or project?
Aaron: Yeah, and I think I can speak from that from a lot of personal experiences. A lot of time I'll get invited into a project to do some development work, and either I'll develop for a month or I'll stop right away. But usually, it's like, "Okay, thank you for bringing me in. Let's talk about what your actual goals are." And then we find that really they didn't actually need another developer, that's actually going to make it worse. What they need is something else, and what is that something else?
Joel: Yeah. I'm thinking of analogies. Like, in the medical field, it's like if you went to the doctor and asked for a certain prescription. You might get it right but maybe you should talk about the underlying problem first. Okay, yeah. I want to take it in a specific direction because it's a topic I am thinking about a lot. It's also a topic that I see firsthand, from the projects we join, that I think there's a need for improvement in the Laravel community. I'm just saying as a whole kind of like a trend I've observed and it's a lack of a testing practice, right? Writing automated feature and unit tests. So I care a lot about this topic, we've talked about it a lot on this podcast, but I think it's also one of those areas where a team or developer can feel kind of stuck and not know how to get out of the habits they're in. Or maybe everyone's on board, "Yeah, we want to do this," maybe we've even tried it and we're just running into roadblocks. So, if we bring it down to that specific example, does it change at all your thoughts on that? Because they've diagnosed the problem, like, "We want to write tests, we know why we need to, we know how it'll help us. We just haven't done it and we want to do it."
Aaron: So that kind of changed. I wasn't sure if you were saying they had tests and they needed to make them better or they need to start. But either way, we can kind of wrap that all up. And it's really... I don't think it changes anything, it's just asking the same question just one level deeper then. So it's like, "Okay, so do you need tests? Oh, okay. Are you sure you need tests?" I mean our answer is yes.
Joel: Right.
Aaron: But why, right? And when you answer that why that tells you then what kind of resource maybe you want to bring into a project. So, "I need tests." "Why?" "Because I have a lot of buggy code and we think tests will stop us or help us." Okay, so that might be a person that more... maybe a hands-on resource to write more tests and to fix bug little bugs and stuff. Maybe the thing you identify is, "I want to write tests because overall, in general, we don't even know how our application works".
Joel: Oh, okay.
Aaron: Well, that's going to be a different type of person than maybe you want to consider bringing in. Because a hands-on person that's just going to write what you tell them to write and just do those boring tests and just keep doing that over, they're not going to be able to explain to you how your application works holistically, potentially, because they're just doing some mechanical work. So, you have that question, you have another question that's like, "Okay, we want to write tests, but we can't because our developers don't have the skill to do that." So maybe that's a different resource. Are they going to learn from looking at examples of someone writing them? Or, are they going to learn from maybe an interactive training and coaching session?
Joel: Yeah, you're right, because testing is a broad topic. I was laughing to myself like, "Oh, we need tests because we heard that 100% coverage is good." "Well, okay, let's talk about that." But, yeah, there's different nuances. Is it a skill gap? Is it a time gap? Is it an experience gap? I'm just thinking of some examples on things we've worked with, projects we've worked on where it's like most of the pieces are in place and they probably actually could figure it out, but they don't want to suffer through it. They're like, "You've done this a hundred times before, can you just help us do this faster or point us in the right direction?" There's sometimes where you just need a boost and you don't need somebody to sit down and do the work for you either. So that's probably a dimension to this as well, like what you're trying to accomplish.
Aaron: I know we joked about it in the beginning that this is a little bit of a self-serving conversation and I'll identify that again and agree with that. Yeah, obviously we can do all these things. But what you'll notice sometimes is even if we join projects, what we'll do is if you're even further beyond or in front of this question like you don't know how to ask the questions, we'll work with people and develop the questions that you even need to ask. And then kind of say, "These are the questions you need to ask for your potential resource, whether or not it's us."
Joel: Sure, yeah.
Aaron: "We just want you to be successful." I mean, that's our goal. "And then here's how you can measure that success and here's the questions you need to ask," the next step and the next step. So depending on where you are too, you don't even need to have a team in place. Sometimes it's, "I don't even know what questions I need to ask. Can you help me learn how to ask the questions?" The reason I bring this up too is because it's really easy, I know we have all different types of audience members that listen, it's really easy to find a resource, a technical person, and say, "Well, that's my technical person. They'll ask all the questions that need to be asked." That's a horrible position to put yourself in because that person could go away, they could get hit by a bus, all those different things and it's your business. I know I'm rambling a lot here, but really what you want is someone to help teach you how to ask the questions and understand those technical sides. You don't need to be a pro, but you need to be able to ask those questions. And that's the sort of resource that you might need at a different level. So where are you? Do you know you need tests? Well, what kind of... Why do you need that? Do you need your project developed faster or something like that? Why is that? Do you know you just need someone technical because you have this project and everyone's gone, and what are you going to do? Well, what is your goal? What do you want to accomplish? And let me, let us, let someone teach you the questions to ask.
Joel: Yeah. I like that because I'll admit I've taken advantage of, that's the wrong... I've benefited from getting coaching. You know, I'm thinking maybe in business matters, in financial matters and health matters. And a lot of times, the person I'm talking to that's coaching me, I kind of know the facts of the situation, I know the information but I'm not looking at it the right way or I'm not processing it correctly. So just the act of them asking me questions and forcing me to think it through is hugely beneficial. That's what was resonating with me when you were just talking now about getting somebody to help you know how to ask the questions. That's a huge scale as well.
Aaron: Yeah, I think it's really... Do you watch the Bruce Lee movie and learn karate or do you get yourself a sensei? So I have an alternative take on a lot of things in life and one of them I want to test out with you.
Joel: Okay.
Aaron: I don't think we have one weekend.
Joel: All right. Say more.
Aaron: I think we have two. The weekend is one day and there's just one at the start and one at the end of the week.
Joel: Oh, okay. I disagree, but I can see how somebody would think that.
Aaron: Because the week is Monday through Friday and that's a week, it's a block. And then we put an end on each side, like a bookend so we have a weekend. The only thing that I think that has two of something at the end of it would be a train engine.
Joel: Okay. So the end, Saturday and Sunday isn't one weekend? You're being like, it's a weekend day and a second weekend day. So you can't have two ends at the end.
Aaron: Right, exactly. You wouldn't have five books and then two bookends.
Joel: You wouldn't. I hate to say you're kind of convincing me here, Aaron.
Aaron: Yeah. See some of my weird takes on life are actually pretty accurate. Hey, Joel, this is normally where we do the call to action and we talked a lot about coaching, so-
Joel: It was already kind of self-serving. We can definitely help with coaching, but I don't want to take it too far. So I won't even mention the website.