No Compromises

This episode is a little different. We take a peek behind the scenes as to how we qualify projects, and the sorts of things you might think about before deciding whether or not to take on something new.

Find out more about Mastering Laravel Validation Rules.

Creators & Guests

Host
Aaron Saray
Host
Joel Clermont

What is No Compromises?

Two seasoned salty programming veterans talk best practices based on years of working with Laravel SaaS teams.

Joel Clermont (00:00):
Welcome to No Compromises, a peek into the mind of two old web devs who have seen some things. This is Joel.

Aaron Saray (00:08):
And this is Aaron.

Joel Clermont (00:16):
We have been talking through all of these past 20-plus episodes, mainly on development topics and things that would pertain to your general Laravel/PHP developer. But we had kind of planned maybe doing a few special episodes, very special-

Aaron Saray (00:36):
Very special episode of No Compromises.

Joel Clermont (00:39):
Maybe less that and more how we work on projects. While there'll be some overlap with development topics, a lot of it'll be more process and maybe even a little business oriented. So if you're listening to this and you do independent programming/consulting/development, you might find this interesting. If you are somebody that has thought about working with us, this might be eye-opening and scare you away completely. Or not, you might love us. Or maybe you work on a team and some of these things will apply in principle perhaps but maybe you've considered doing some moonlighting side business type work. We're going to share some topics over a few episodes and hopefully everybody finds it useful. My brain works in a very linear fashion and so when we start this topic, I thought to start at the very beginning of the process as I see it, which is deciding whether or not I even want to do a project. Right? That might sound like a diva, like, "I only work-"

Aaron Saray (01:51):
Mr. Fancy here who gets to decide what projects he does.

Joel Clermont (01:56):
Right. But the reality is when you're doing work for other people and you're independent, you have the choice. Like, "Do I want to work with them or not?" I thought I'd walked through a couple different metrics that you and I have come up with over the years we've worked together to help us make that decision. I'll even preface it by saying, "None of these are absolute rules. We've bent or broke some of these rules in the past for a variety of reasons," but we'll try to cover the nuance here.

Aaron Saray (02:27):
Before we get into that I wanted to kind of interject a little bit because I know that if I was listening to this the first time, I would already be a little stuck right now when you talk about, oh, you get to pick who you want to work with. Because there's always some caveats. First of all, sometimes you don't always have the best ability to pick. It kind of depends on how you've been doing your budgeting, what's come up in life, what's in your bank account.

Joel Clermont (02:52):
Sure.

Aaron Saray (02:53):
What I don't like is when people talk about these great setups of like, "Oh, this is how I do business." They never address... Like, sometimes everything just sucks and you got to do what you got to do. In our careers we've not been above that, we've had to do that sometimes too. You never, know that might happen again in the future. The second thing is these are some sort of steps that we go through and we try to keep these steps in mind. Sometimes it's also emotional and sometimes it's not a great client but you really like the project, so you're just going to do it anyway. Or vice versa too. Like, everything looks fine but you just feel off about it or something. I just wanted to address those first two things before we get into it. Is that, this isn't just a perfect world scenario, we do understand that sometimes you just got to eat the sand sometimes.

Joel Clermont (03:48):
I'm not familiar with that expression, but yes.

Aaron Saray (03:50):
I couldn't think of anything that's not incredibly profane.

Joel Clermont (03:55):
All right, the censored version.

Aaron Saray (03:58):
Sorry, yeah.

Joel Clermont (03:58):
But no, that's a good point. Because it's easy to get into the trap of like, "This is the ideal scenario and this is what you should do in all cases." But you're admitting and I'll admit the same, we don't follow this a hundred percent, but they're guidelines. I'll point out, your guidelines may be different where you draw these lines but I think they're still valuable questions you should think through as an individual or as a company, or even as a team, if you're taking on projects as a team.

Aaron Saray (04:25):
Can I make one other argument-

Joel Clermont (04:28):
100%, yes.

Aaron Saray (04:28):
... before we get into it?

Joel Clermont (04:29):
Okay.

Aaron Saray (04:30):
On the flip side, one thing I've heard people tell too when they seem to get in the groove of things is they say, "Don't pick bad clients because there's the opportunity costs." If you are stuck with a client that you don't prefer, you won't be available to say yes to the right client.

Joel Clermont (04:50):
Sure, yeah.

Aaron Saray (04:51):
They don't always phrase it that way, it's usually a lot like somehow mystical. Like, "If you have bad people in your life, then the good ones won't be drawn to you," which I don't believe in that. But I can say that it's been a great fear of mine. Me and Joel have talked about this many times too. Like, "If I turn this down, I don't know where the next client's coming from but I do know that this is probably a bad idea. So I'm going to take it a little bit on I guess to faith that I have that everything's going to work out fine and just say no." I don't want to have to knock on wood here or whatever, but surprisingly that's turned out as people have told me it's going to turn out. Which is good.

Joel Clermont (05:32):
So you haven't died yet is what you're saying by turning down a job?

Aaron Saray (05:35):
Yeah, I have yet to have died.

Joel Clermont (05:37):
I'll add to that. Even many years into doing this, I still have that fear every once in a while of saying no to something for those reasons you just cited. I think a lot of people could relate to that, it's like, "But it's money and it's work and I like eating."

Aaron Saray (05:56):
Yeah, I just wanted to cover those couple things before we got into it because that's always been my pet peeve and where I've turned off shows like this when they're like, "Let's tell you about how to qualify clients." You're like, "Sometimes you just can't." But, yeah, sometimes you just can't. Or, sometimes you'll have to and you just have to... it's going to be okay.

Joel Clermont (06:13):
Yeah, you'll be fine.

Aaron Saray (06:14):
But anyway, sorry, let's get into it.

Joel Clermont (06:16):
All right, here's my thought process and kind of here's how you and I work. The very first question is, "Do I want to work with this client?" The client could be an individual or it could be a company. There might be a couple of reasons we would answer yes or no, and some of it boils down to communication style, personality, what do they do? Is it a company that does something that you just are morally opposed to? Or is it a company that does something that you love and is like right up your alley? That might seem like a weird thing to mention first, but to me it's kind of like an easy pass fail/test. So it's hard to get a sense for this over an email or any sort of text communication but this is where sort of an exploratory call helps a lot. You can just get a feel right away, like, "Boy, this person is just completely opposite to the way I like to work." That might be right away a sign like, "No, this just isn't going to work out."

Aaron Saray (07:19):
I can put that in concrete terms.

Joel Clermont (07:22):
Yeah, but don't name names.

Aaron Saray (07:24):
Right. If I have a lead and I send them a Calendly link or some sort of automated tooling. They schedule their call and they get on a Zoom call on video and we have a chat, that's almost 95% of what I need. If throughout that process they're unable to do any of those steps, they don't know how to do a Calendly invite or they can't get Zoom working or something like that, I probably am not going to like them as a client. One of my choices is I don't want to have clients that I have to babysit.

Joel Clermont (07:58):
Yeah. Or lack of attention to detail. You send them the Calendly link and they send back, "Hey, can we do it Tuesday at 3:00?" It's like, "You could click the link I sent you and you could see if that works," because, I mean, again not that we're like a diva where like, "Oh, they didn't do things exactly my way." But these are smells early on, like is this person invested in working with me? That's sort of round one. Then round two where I would kind of make a decision is, do I want to work on this project? Generally when a client meets you or gets introduced to you or referred to you or whatever, they have a specific project in mind. Now the thing they may have in mind may be scoped differently. We may pick a smaller piece of that or recommend something else. But in general, they have a project in mind. Whether it's a software product that exists they need help on, or something they want to build from scratch. But that's another place too. Kind of the same questions like, "Do I want to work with this client? Do I want to work on this project?" If it's an app for, I don't know, like-

Aaron Saray (09:07):
If it's an app.

Joel Clermont (09:09):
Okay, I'm using app in the generic term. But, you know, if it's something that is totally not something we care about or we know is going to fail... I mean, there's all sorts of reasons we might just, the client is great, we'd have no problem working with them but this project just like... It seems like a bad idea, it seems like something we'd really not be a good fit for.

Aaron Saray (09:31):
Along with what you're saying, I guess I would say I look at the project that they have for me and I determine if there is any kind of wiggle room in this. And I'll give an example too is, a lot of times people come to me with a specific project in mind and they are like you said, but they might not have unit tests available or they might not have their code in version control or something like that. So the way I look at it is like, "is there some wiggle room in this project?" Because from how I do my projects, I have to have a certain number of different things in place that signify that level of quality of output I have. That's version control, unit test and stuff. If we're having that conversation and the answer is, "No, it's not going to be in version control ever," or, "No, you can't spend time to work on unit tests or whatever," then that's probably not a project that I feel comfortable putting my name on.

Joel Clermont (10:33):
Yeah, that's a fair point. I know as we were talking about a few topics to discuss, we might even have a whole episode dedicated to getting up to speed in a legacy project. But you're right, if out of the gate they're like, "No, we absolutely will not do that. That's not worth it to us," or, "nobody else on the team will write test like that," that could very well be a deal breaker early on as well. So the next layer in, the client and the project seem okay is the tech stack? There's a couple of reasons I think this is important. Not that we inherently feel like one technology is better than another, but the reality is you can only know so many technologies. You and I have chosen to specialize and focus on Laravel projects, specifically products that maybe are longer lived with a team of developers behind them. That's not to say we couldn't work in a symphony project or whatever but that's not our chosen tech stack. So there's trade-offs by saying, "Oh, yeah, I can figure that out." Or, "I know that." Or, "I used to do that in the past." If it's not our ideal tech stack, then is it something we want to get involved with?
I know recently we even decided, is it a mobile app? Well, the answer is no. Because you can build those with web technologies like View and things that we do know well and are part of our chosen tech stack. But it's just this whole other ecosystem and sphere of knowledge that you have to have and all the different hurdles and things like that. And we just said, "You know what? We're not doing anymore. It's not worth the pain for us coming in doing occasional mobile app projects. Let's focus on web apps, that's where our expertise is, that's where we can have the most impact. There's other people that can do these mobile apps, we don't have to grab after every project."

Aaron Saray (12:30):
I think the tech stack too, there are some steps iterations. Like you mentioned, you could do a mobile app because you could be using the same technologies. So we have done that and that was our reason to do this because it's using the same technology. I've worked with clients that actually the whole project was a Node app, that's JavaScript and I know JavaScript and I've been doing that for a while. But I just never did Ruby and I never did .net. Those are two things I haven't done so if someone's like, "Well, I just have this quick Ruby thing to do." "Sorry, it's just not me." I'm just, "That's not me."

Joel Clermont (13:14):
Well, and a nice side effect to this is instead of just saying no, if over the years you network with people and maybe you do know a .net developer or a Ruby agency. Making that introduction, like, "Hey. I don't do this, but I can introduce you to somebody." Another nice benefit. Number one, it's easier to say no if you give them somebody else to talk to. But number two, that other agency or consultant or whoever that gets the referral, they're going to love that. And you know what? They might come back to you when it's a PHP Laravel app and that's not their specialty. I learned early on that there really doesn't need to be competition even within a small community of developers. Just cooperate, share work around there's plenty to go around. Everybody is going to keep food on their table, it's not a big problem.

Aaron Saray (14:01):
Well, and that client too. What they found was even though you couldn't help them, you're someone that can help. So while hopefully they won't bother you for everything, they do have in their mind that maybe you weren't the one for them but that you're a good person if they happen to know anyone who's looking for XYZ. Because they know that XYZ being what you're good at. Because they know that you'll pass off things you're not good at, you're not just there to try to suck money out of everyone.

Joel Clermont (14:29):
Yeah, absolutely. The last point I wanted to bring up and I think this might be the hardest for developers, maybe it's just a Joel thing but I suspect not is, do I have the time for this project? Because most of the time somebody approaches you with a project, you already have existing commitments, you're already working on existing projects. Especially if it ticks all the boxes that like, "Yeah, this would be great to work on." If the final box is like, "Yeah, we want to start on this at the first of the month," and I know I'm booked up for two to three months, I can't say yes to that. That's a way to set yourself up for stress, overwork. It's really a bad way to kick off a relationship with a client to overpromise and under-deliver, but that's... I mean, to this day it's probably the one I struggle with the most. Is trying to balance what I think I can do and what the reality is. Like, "Oh, I think this other project will be done in a week." No, you probably have a month of work left on it. And not being too eager to say yes to something and end up extremely overworked.

Aaron Saray (15:37):
I think a little insight into how Joel and I work, which if you've been listening for a while, you probably have an idea how this works. But Joel will be like, "Hey, yeah, let's do this." And I'll be like, "Hold on a second, Joel. Let's just think real quick, what are our commitments?" Then I get to be the bad guy a lot of times. But no, it's a good point you made there. I would say it's not only the time commitment, but going all back into like, what does my pocketbook look like? I really need money for whatever. I need money for school or I need money for a pool or I need money for food. Whatever it is, right?

Joel Clermont (16:20):
Yeah.

Aaron Saray (16:21):
And looking at that and being like, "Is it ethical to take someone's money if I can't do the thing?"

Joel Clermont (16:25):
Yeah, absolutely. If you can cross all of those hurdles, you too can work with us. No, that's not the reason we're sharing this. But just think through that process. And maybe there's other things that are important to you that we didn't cover, but you have those in mind when you're deciding whether or not to take on a project.
The other day a package arrived and that's not that unusual in this household. There's people ordering stuff all the time. But what was different this time is it was addressed to one of my younger sons who was eight. He saw his name and was on a big heavy box and he got really excited. Like, "What's in the box, right?" We opened it and it was school books. And just to set the stage, it's in the middle of the summer so the furthest thing from his mind is like the next school year. So that was a massive disappointment to him. But in the box the other thing that I saw is they have this list of school supplies you have to buy and it is pretty ridiculous. There's all sorts of really oddly specific things on the school supply list.

Aaron Saray (17:41):
Like, two yellow folders?

Joel Clermont (17:43):
Yes, two yellow folders or seven envelopes. Like, okay. Or, things like four boxes of tissue. Just weird stuff. In fact, this one... Because we're doing homeschooling this year, they have other things. It would be like a lime. Like, "Okay, should I buy that lime now for when school starts in three months?" It was just kind of weird. The other thing too is we were at the store and they already have all the back to school stuff set up. And it's so depressing to be a kid in the middle of summer, peak of summer, and everybody is already thinking about school like the summer is over. Aaron, do you have any memories of bizarre back to school rituals or supply list, or anything like that that you had to deal with as a kid?

Aaron Saray (18:32):
Well, yeah, I do remember the weird things because my mom was always so upset because it was like... Well, we were very poor, like extremely. One of the things, the school thing was like they need two notebooks but they must be college ruled. And basically last year after school was done, she went and bought all... Then they put the notebooks down like 5 cents and so she got-

Joel Clermont (19:00):
Yeah, super cheap.

Aaron Saray (19:00):
15 of them, but they were all wide ruled. I just remember her just being so angry and she's like, "No, you're getting the wide-ruled ones and that's it." Then being a kid being scared to go to school the first week too because I'm like, "I have the wrong notebooks." And teachers are like, "I don't care."

Joel Clermont (19:18):
It doesn't matter.

Aaron Saray (19:18):
Yeah. It's weird when you think about things from school though, like the importance. I'm not sure if this is for all of our listeners, but it was for at least probably a lot of people in the United States. The importance and the excitement of having your own desk and inside your desk when you lift up the top was all of your stuff. And it was this rectangle and you got to keep your stuff in there. Then when people would move around in the desk and then someone would sit down at your desk, you're like, "You better not open that."

Joel Clermont (19:49):
It was nice though.

Aaron Saray (19:50):
"Yeah, you better not look in there." Or, we would move around and then people would put gum wrappers in it and so you'd open it up and you'd have three gum wrappers after the day. You were like, "Oh, you jerk." But I think one of the things that really stuck with me was... This is how I learned my entrepreneurial spirit. Because I learned that we could go to Fleet Farm, which is basically like a farm store and they had really, really, really cheap candy by bulk there. So as a young kid, I would save all my money and I'd buy some really cheap candy. My mom was a little upset but I told her, "No, I'm taking it to school for my friends." She said, "Oh. Okay, that's good." No, I was not taking it to school for my friends. I was taking it to school so I could barter after Christmas because we didn't celebrate Christmas. When I'd go to Christmas, remember again, we were very poor and so I didn't have a lot of nice clothes or anything like that, then these kids would come to school and they'd be upset because for Christmas all I got was some brand new socks. I'd be like, "Do you want maybe six Jolly Ranchers for a pair of socks?"

Joel Clermont (20:53):
"Instead of your socks?"

Aaron Saray (20:54):
Yeah. So I would literally get socks off kids in the classroom for six or seven pieces of candy. Then my mom would be like, "Where did you get these Haines-themed brand of socks?" Like, "It was a gift from a friend."

Joel Clermont (21:10):
Kids buy each other socks all the time, that's totally normal.

Aaron Saray (21:12):
Yeah. No, it's not a gift, it cost me six Jolly Ranchers.

Joel Clermont (21:18):
But the price was worth it.

Aaron Saray (21:20):
Yeah, exactly. I just imagined if that kid went home and his mom and dad were like, "Where's your socks?" "I lost them."
I was just thinking the other day, Joel. Wouldn't it be great if there was a book that covered the ins and outs of validation in Laravel?

Joel Clermont (21:41):
Well, there is and you know that because you helped write it.

Aaron Saray (21:44):
Oh, that's right. Nocompromises.ao/book. Is that it?

Joel Clermont (21:48):
That's it.