WEBVTT



00:00:00.000 --> 00:00:07.999
<v Joel>Welcome to No Compromises. A peek into the mind of two old web devs who have seen some things. This is Joel.



00:00:08.000 --> 00:00:09.999
<v Aaron>And this is Aaron.



00:00:16.000 --> 00:00:22.999
So, as a developer familiar with Scrum and Agile, I would obviously love to do stuff that way, but that's not always how it works.



00:00:23.000 --> 00:00:31.999
Sometimes you get a bunch more requirements docs, like waterfall. So you end up getting a bunch of requirements, maybe pages, sometimes not.



00:00:32.000 --> 00:00:38.999
But you get some sort of formulaic representation of what this next task is, or hopefully you do. Either that or you've written them yourself, or whatever.



00:00:39.000 --> 00:00:39.999
<v Joel>Yeah.



00:00:40.000 --> 00:00:46.999
<v Aaron>And then you can kind of look at that. And I'm used to that, I love that. The more requirements, the better because I know I'm building something out.



00:00:47.000 --> 00:00:52.999
And that's really the skill set that we have as developers too. Anything that you can think of, human, I'm going to then make happen for you.



00:00:53.000 --> 00:01:00.999
So, I just need to know how you think, because how I think is different, right? I mean, that's what makes humans beautiful too. We all think differently.



00:01:01.000 --> 00:01:07.999
So, why that's beautiful is it gives us different ways to solve problems. But where it struggles is any sort of thing you tell me to do,



00:01:08.000 --> 00:01:11.999
I'm going to think about doing it differently than you want. And that's where these requirements come in.



00:01:12.000 --> 00:01:17.999
Now, that's why we say to people, "Hey, write requirements. The more requirements, the better." I know that's frustrating.



00:01:18.000 --> 00:01:24.999
It's like, "Well, just figure it out." Or, "Doesn't everyone think this?" But no, everyone doesn't think that way. So, that's kind of my pitch.



00:01:25.000 --> 00:01:30.999
It's like I need requirements because I'm a smart person, you're a smart person, but we think differently.



00:01:31.000 --> 00:01:35.999
And so, I need out of your head what you want me to build, and then I will build it.



00:01:36.000 --> 00:01:44.999
<v Joel>Yeah, and I'm thinking a lot of the client engagements we have, like there's a business domain that maybe we are not super familiar with.



00:01:45.000 --> 00:01:51.999
And so, there's all sorts of, like, baked-in assumptions they have that's blindingly obvious. Like, "Well, everybody knows this."



00:01:52.000 --> 00:01:56.999
It's like, I literally don't know what that term means. Like, you keep using this acronym, I don't know what that is.



00:01:57.000 --> 00:01:57.999
<v Aaron>Right.



00:01:58.000 --> 00:02:08.999
<v Joel>So, there's like that knowledge transfer and just removing a whole set of assumptions is like a big part of it. But even more like down at the feature level,



00:02:09.000 --> 00:02:15.999
you know, like, "I need a form to add this record." "Okay. Well, what are the required fields? Like, what should it look like? Who's using this?



00:02:16.000 --> 00:02:21.999
Does everybody use it the same way?" Like, these are the things that it's so simple to say like, "I want this feature,"



00:02:22.000 --> 00:02:28.999
but without going that one extra step, we could build something and it will be that thing, but it might not be the thing they wanted.



00:02:29.000 --> 00:02:36.999
So, yeah, I'm with you. More is better. We've also occasionally ignored them, right? Like, "They ask for this, that doesn't make sense.



00:02:37.000 --> 00:02:46.999
I'll let them come back a second time and ask for it again." Like, we've done some of these things where, you know, just for reasons of practicality,



00:02:47.000 --> 00:02:52.999
we'll push back a little bit. But I'd rather still have the information and then do with it what we will.



00:02:53.000 --> 00:03:00.999
<v Aaron>Well, what I've noticed is like if someone writes a ton of requirements, I can then do the whole task, start to finish, never stop.



00:03:01.000 --> 00:03:05.999
There's no bugs whatsoever, it's completely done. And that's why I love great requirements.



00:03:06.000 --> 00:03:15.999
<v Joel>What? No, that's not... Yeah, you're being sarcastic. But, yeah, you do... Yes, even once you have requirements, they're not the final shape of it too.



00:03:16.000 --> 00:03:21.999
Because I'm just thinking of a project. I don't know, if we can talk about a little bit here. Where we're integrating with like a pretty



00:03:22.000 --> 00:03:32.999
complicated third-party API, and it's like we got extensive requirements, like multiple pages. And I looked at them, and I took a pass at them, right?



00:03:33.000 --> 00:03:40.999
Aaron, you're like, "Joel gave me these requirements; they must be good." But once you started working on implementing part of it, it's like,



00:03:41.000 --> 00:03:48.999
"This can't be right because this field that you're saying we're supposed to use isn't actually in this payload where we need to use it, and like..."



00:03:49.000 --> 00:03:57.999
So, your point is there's still some discovery that's going to happen, but you still need the starting place to get going at least on some level playing field-



00:03:58.000 --> 00:03:58.999
<v Aaron>Right.



00:03:59.000 --> 00:04:01.999
<v Joel>... with the person that's asking for it.



00:04:02.000 --> 00:04:07.999
<v Aaron>Because it can be really confusing, especially from a business point of view then. When we say something like that, they'll be like,



00:04:08.000 --> 00:04:10.999
"Well, if you can't do it right anyway, what's the point of writing the requirements?"



00:04:11.000 --> 00:04:11.999
<v Joel>Yeah.



00:04:12.000 --> 00:04:17.999
<v Aaron>And that's true. Like, that's why we joke about like, "Hey, if we did Agile, which really means business person, you're in a meeting with me



00:04:18.000 --> 00:04:24.999
three to four times a week. You're all so involved." And you don't want to do that, but that's how you would do it if that's what you want.



00:04:25.000 --> 00:04:35.999
But I want to give a different example. So, imagine I need to travel from Chicago all the way to New York City. I have two different ways to do that, right?



00:04:36.000 --> 00:04:44.999
My task is to get there. But regardless, I'm going to get lost in Chicago or in New York City, it doesn't matter. But where do I get lost in general?



00:04:45.000 --> 00:04:52.999
Do I get my requirements, my GPS, and take me all the way to New York, and then I have to figure it out? Or do I not even get a GPS and



00:04:53.000 --> 00:04:56.999
potentially get lost along the way and end up in Louisiana instead, you know?



00:04:57.000 --> 00:04:57.999
<v Joel>Yeah.



00:04:58.000 --> 00:05:03.999
<v Aaron>And so, yeah, I'm still going to get lost, but I want to get lost in New York, not all the way across the country. And so, that's kind of the



00:05:04.000 --> 00:05:09.999
reason why we talk about like even though we're saying these requirements are not right, they're better than nothing.



00:05:10.000 --> 00:05:17.999
<v Joel>Yeah, there's definite value in them, but I know we kind of have joked about this too. Because sometimes there's even the request like,



00:05:18.000 --> 00:05:23.999
"Well, how long is this going to take? Now that I've given you these requirements, how long is this going to take?" And like, there's still a gray area.



00:05:24.000 --> 00:05:31.999
Like, the scenario I gave where we discover this requirement is impossible. Like, so if we estimate it to the best of our ability, it's still going to be wrong.



00:05:32.000 --> 00:05:39.999
But I like your point, it's still valuable. Where are you going to get lost? I'm thinking about that analogy now, it's a good one.



00:05:40.000 --> 00:05:47.999
<v Aaron>Yeah. The sort of another analogy or another way to look at this too is... And this has been a controversial way I've said it in the past,



00:05:48.000 --> 00:05:55.999
so this will be great to end the podcast on this. But I've said to people in anger in the past, but now I'm going to say it politely in a more



00:05:55.000 --> 00:06:05.999
intelligent way that actually matters. Is, "If I knew all the things you knew, you wouldn't have a job because I can do what I do and I could do what you do.



00:06:06.000 --> 00:06:07.999
So, what would be the point of you?"



00:06:08.000 --> 00:06:08.999
<v Joel>Right, yeah.



00:06:09.000 --> 00:06:10.999
<v Aaron>And that's not a threat. I used to use it as a threat when I was an immature developer.



00:06:11.000 --> 00:06:11.999
<v Joel>Okay.



00:06:12.000 --> 00:06:17.999
<v Aaron>But now it's more saying like that's the reason why you need to write these requirements, because you exist and I exist.



00:06:18.000 --> 00:06:18.999
<v Joel>Yeah.



00:06:19.000 --> 00:06:22.999
<v Aaron>If I knew everything, you wouldn't be needed, and that's not the world we live in, right?



00:06:23.000 --> 00:06:23.999
<v Joel>Yeah.



00:06:24.000 --> 00:06:25.999
<v Aaron>And so, you need to write these requirements.



00:06:26.000 --> 00:06:34.999
<v Joel>Yeah, that's true. And I appreciate your diplomatic way of stating that here. But before we end, I want to throw one more thing out because we've



00:06:35.000 --> 00:06:45.999
experienced this, and I'm sure we're not the only developers that have experienced this. But there's also the danger of maybe a customer using AI



00:06:46.000 --> 00:06:52.999
to assist them in writing the requirements. So, I just want to throw that out because it's probably its own whole separate topic. But like,



00:06:53.000 --> 00:07:02.999
how do you look at that? Especially if you know or suspect these requirements were generated with Claude or some other tool, some other language model.



00:07:03.000 --> 00:07:08.999
<v Aaron>Yeah. So, there's two different ways I'll go on that real quick. First of all, if I know the requirements are written by Claude,



00:07:09.000 --> 00:07:15.999
I almost don't ever trust them. Because I've not yet seen a business person, and I've not seen most developers read the output



00:07:16.000 --> 00:07:19.999
of an AI model from start to finish and understand it.



00:07:20.000 --> 00:07:20.999
<v Joel>Okay.



00:07:21.000 --> 00:07:23.999
<v Aaron>You start reading it and then you start scanning and before you know it, you're at the end and you're like, "Oh, that looks good,"



00:07:24.000 --> 00:07:29.999
because the pattern is good. So, first of all I don't really trust them. And I'm probably going to push back and be like, you know...



00:07:30.000 --> 00:07:34.999
And it's going to make me irritated because you decided to cut corners, making my job harder.



00:07:35.000 --> 00:07:35.999
<v Joel>Yes.



00:07:36.000 --> 00:07:42.999
<v Aaron>And so, I'm not only irritated but also it costs you more money because your poor requirements generated to save you money actually cost you tokens,



00:07:43.000 --> 00:07:50.999
and they gave me the wrong instruction. So, don't do that. But that's not saying I'm against AI. There's a special difference in how I'll phrase this.



00:07:51.000 --> 00:08:59.999
AI could be used for helping compile and create the requirements, but not write them. There's a very difference there because it's like a research tool.



00:08:00.000 --> 00:08:06.999
So, as you're developing, you might say to your AI, "This is what I wanted to do. What are all the different things I need to consider about that?"



00:08:07.000 --> 00:08:11.999
And it will tell you that. You learn from that, and then you write your requirements. Whatever you do, don't be like,



00:08:12.000 --> 00:08:16.999
"Great, now write that into the requirements doc." That is not good.



00:08:17.000 --> 00:08:26.999
<v Joel>Yeah. Just to push back a little bit? What if somebody used Claude, let's just go with Claude because it's easy to say, to help draft the requirements?



00:08:27.000 --> 00:08:33.999
But before they handed them to us, they actually read them all? Or is that just so impossible in your mind that a person would do that?



00:08:34.000 --> 00:08:37.999
<v Aaron>Reach out to me on Twitter or Bluesky, or whatever, if you've done this.



00:08:38.000 --> 00:08:44.999
<v Joel>Okay. Your position is, the person who's going to do that, they're going to feel like they were in the process, they went back and forth,



00:08:45.000 --> 00:08:52.999
they scanned it, it's fine. They can't possibly read that whole 10-page document objectively before they hand it off?



00:08:53.000 --> 00:08:53.999
<v Aaron>No.



00:08:54.000 --> 00:08:55.999
<v Joel>It's never been done?



00:08:56.000 --> 00:09:00.999
<v Aaron>Well, right, and it's the same thing as like even when you write it yourself and you write your stuff, you're going to miss stuff.



00:09:01.000 --> 00:09:05.999
But you didn't even write this, so of course you're going to miss stuff. You're going to miss more...



00:09:06.000 --> 00:09:08.999
Yeah, you're going to miss more than if you wrote it yourself and reviewed it.



00:09:09.000 --> 00:09:18.999
<v Joel>Yeah, that's fair. And I'll say too. Again, going back to this one project I have in mind with the third-party API, I would even use the requirements,



00:09:19.000 --> 00:09:25.999
and then I would run those requirements through Claude. I'm like, "Can you cross check this against this like 150-page integration guide from this API?



00:09:26.000 --> 00:09:33.999
Does anything stand out that we should know or that doesn't line up?" And it's good at spotting those patterns. But, yeah, I'm with you.



00:09:34.000 --> 00:09:42.999
Like, if I know it wrote it, that's very... I almost get combative, and like I want to find an error in the requirements to push it back.



00:09:43.000 --> 00:09:48.999
<v Aaron>And I'll relate that to our business people, which I kind of talked to a little bit earlier. Is, that was a technical thing, we're reviewing those.



00:09:49.000 --> 00:09:56.999
I don't necessarily expect that my business people are going to give me the exact requirements of what XML field or whatever. But it helps



00:09:57.000 --> 00:10:05.999
when you think about situations where you have certifications, or you have requirements for federal government or something like that,



00:10:06.000 --> 00:10:12.999
and you have a document about that. Write your requirements and then feed it to the AI model and say, "Here is the actual compliance mechanisms



00:10:13.000 --> 00:10:16.999
I need to abide by. Does this requirement hit that or not?"



00:10:17.000 --> 00:10:17.999
<v Joel>Yeah.



00:10:18.000 --> 00:10:21.999
<v Aaron>Because those are the things that we won't know. And we'll build something, and then later on you might come back and say, like,



00:10:22.000 --> 00:10:28.999
"Hey, it needs to do this because of compliance." And it's like, "Well, I didn't know that. I don't know what you're compliant with."



00:10:29.000 --> 00:10:40.999
<v Joel>Yeah. So, it's a useful tool, but I agree with your warning. Is, well taken, because just drafting it and sending it to us is not going to give you the result you want.



00:10:46.000 --> 00:10:48.999
<v Aaron>I want to be more friendly than I look, Joel.



00:10:49.000 --> 00:10:49.999
<v Joel>Okay.



00:10:50.000 --> 00:11:04.999
<v Aaron>Okay. So, I need some help. So, when I go out walking on the walking trail, I see dogs. And I want to say hi to dogs but my walking pace is reasonably fast.



00:11:05.000 --> 00:11:09.999
And I have resting angry face, I wear a black hat and sunglasses.



00:11:10.000 --> 00:11:10.999
<v Joel>Okay.



00:11:11.000 --> 00:11:17.999
<v Aaron>And what I've noticed is that when I walk up to people, I hardly even get a chance to say, "Hello, How's your dog?" or whatever.



00:11:18.000 --> 00:11:26.999
So, I'm trying to figure out, is there a sort of mechanism? Should I be taking off my sunglasses every time I see a dog? Should I be slowing down?



00:11:27.000 --> 00:11:32.999
How do you even say, "Can I pet your dog?" Like, do I need to talk friendlier? Like, I mean, I don't say, "Could I pet your dog?!"



00:11:33.000 --> 00:11:38.999
But I'm like, "Oh, hello, is your dog friendly?" You know, is that normal? People seem to be scared of me.



00:11:39.000 --> 00:11:42.999
<v Joel>No. First of all, the dog's not scared of you, right? It's the person that you're thinking might be?



00:11:43.000 --> 00:11:43.999
<v Aaron>Yeah.



00:11:44.000 --> 00:11:44.999
<v Joel>Okay.



00:11:45.000 --> 00:11:45.999
<v Aaron>Yeah.



00:11:46.000 --> 00:11:52.999
<v Joel>I wouldn't take your sunglasses off, especially if it's sunny. Like, if it's at night, maybe. Maybe that would be the time to take them off.



00:11:53.000 --> 00:11:55.999
But you mentioned the speed at which you're walking.



00:11:56.000 --> 00:11:57.999
<v Aaron>Yeah, because I'm out for exercise.



00:11:58.000 --> 00:12:06.999
<v Joel>Yeah. So, you could maybe temper the pace, or like just start calling out like in advance. Like, "Hey, I'm going to pet your dog. Incoming on your right."



00:12:07.000 --> 00:12:10.999
<v Aaron>"How's your dog? Can I say hi?"



00:12:11.000 --> 00:12:18.999
<v Joel>Yeah, I've had something like that where I will, maybe if I'm intending to talk to the person, I will slow down a little bit.



00:12:18.000 --> 00:12:24.999
And for me too, I usually walk with my AirPods in. I'll even pop one out, it's kind of like a cue, like, "Hey, I'm friendly. I'll talk to you."



00:12:25.000 --> 00:12:31.999
<v Aaron>Oh. Oh, no, don't get me wrong here, Joel. I don't want to talk to the people, I just want to pet the dog.



00:12:36.000 --> 00:12:42.999
We really asked for you to put a lot of effort into writing good requirements because we put a lot of effort, and time, and quality into our work.



00:12:43.000 --> 00:12:50.999
<v Joel>If you'd like to benefit from that, then head over to nocompromises.io and see how you can work with Aaron and I.