Sculpt, not Spec

Sculpt, not Spec

Scott Hanselman

0:04 When you and I re-run code that uh number of minutes per speaker.

0:09 Oh, that's a good idea.

0:10 We should do that.

0:11 The the market's got to talk too much.

0:14 No, Scott talks too much.

0:19 [laughter]

0:20 Actually, that's a good point though.

0:21 That could be a live a live repair.

0:23 The thing is though,

0:24 that's a great example of so for for context for folks that are watching

0:30 uh there was a question about which of us spoke too long in these things.

0:34 So I went and I wrote uh Mark It was no question.

0:36 Too much.

0:37 There was no question.

0:38 There's no question.

0:38 It was pretty pretty unambiguous.

0:40 Well, you were like, "No, we're about half and half." And Dude,

0:43 okay, so I'm I'm looking at the code here.

0:45 It was 10 months ago that we did this.

0:48 Wow.

0:49 So uh this is the uh GitHub Mark and talk too much repository.

0:56 The thing that's funny about Yeah, I did a whole thing about this.

0:59 Uh-huh.

1:00 I think that's funny about these kind of things is

1:02 that you will find that um you will find that it

1:08 isn't the code that that the two rehydrate this from 10

1:11 months ago won't be like um dependencies or anything like that.

1:16 It's going to be whatever codes have expired between

1:20 that and you know now and then whatever whatever

1:22 piece of uh of of personal access token that I

1:27 need to get back into It's always the rehydration.

1:32 And you don't remember.

1:33 I don't remember any of these things.

1:37 Yeah.

1:37 [music] [music] Yeah.

1:52 All right, so then what are you doing right now?

1:55 [clears throat]

1:54 I am running a new analysis on um on Mark and Scott and see who talks the most.

2:00 So Uh [clears throat] what did you have to do to get it rehydrated and do this?

2:03 So so this is a great actually a great segue.

2:06 You would think I would be smart

2:07 enough to have markdown files explaining the project.

2:10 I just said refamiliarize yourself with the project

2:13 and re- and run it again on the latest content.

2:16 The only docs I had because this is 10 months ago when we did this.

2:20 Um this is probably pre-Opus even.

2:24 It is quite old on Sonic.

2:26 Yeah.

2:26 I have interactive guide which is basically a user guide of you

2:32 are a visualization and you do this and here's how to use it.

2:36 But there's really not a lot here.

2:38 I should have ran you know,

2:40 I should have made this a skill of some kind, you know.

2:43 There was no such thing back then.

2:45 Well, yeah, not not not that anyone had

2:47 really got together and thought about it, right?

2:49 Was it called skill?

2:50 Yeah.

2:51 Oh, do you use a lot of skills?

2:53 No.

2:54 Do you?

2:56 No.

2:57 So this is where I think we're going to get in trouble

2:58 and people are going to call us a bunch of posers.

3:00 All right, so two things we can talk about.

3:02 One skills versus MCP versus CLIs.

3:10 Uh okay.

3:12 I'm just thinking I use a lot of CLIs.

3:13 Yeah, like that's a big part of my workflow.

3:16 And uh the other one is agents.md and inspect.md.

3:25 Which it's so funny they're just text files just loosen

3:28 around like someone I've heard people people that we know,

3:31 people of note who have said that they make

3:34 these exquisite plan files like they're they don't write code anymore.

3:38 They write big long markdown files.

3:40 All right, so you want to start on that one first?

3:41 The specs Yeah, I think it's worth talking about

3:43 because I think it's it's just not my workflow.

3:46 I like I love a nice uh a nice plan.

3:50 It's good to spec stuff out, but I prefer to um I don't know what I want.

3:55 I kind of know a direction I want to go

3:57 and I So you're not very similar in this way.

4:01 Yeah.

4:01 Um and we talked about this before that that I view writing software

4:08 whether it's handcrafting it like the old days or prompting it as sculpting.

4:14 Mhm.

4:14 Because I can't like let's just take um ZoomIt.

4:20 Um I'll Panoramas not a good one,

4:22 but the video editor the video editor That was a complicated thing.

4:26 Probably one of the most complicated things I've seen done.

4:29 That one you'd think oh video clip editor easy thing to just go and fully

4:34 spec out and then give it to the AI and say go make this.

4:37 But I didn't I wasn't sure exactly how I wanted it to work.

4:41 So I had a vague idea.

4:43 Yeah, I want the video and I want play and forward buttons and a timeline.

4:49 But I didn't know exactly how I wanted them to look.

4:51 I didn't know exactly what I wanted the the clicks flow to look to be like.

4:57 So uh I I would have been a waste of time for me to say go do this.

5:03 Let me spec it out and then go wait a minute.

5:05 I don't like that and let me have to undo a whole bunch of things.

5:09 Instead of let's start with the basic and then I'll go from there.

5:12 Couldn't someone argue that that's like a lack of depth in thinking

5:15 that you should have like steepled your fingers and sat there and like closed

5:19 your eyes and thought deeply about what you wanted and then specked it out

5:22 and then done it or is that like waterfall applied to AI augmented programming?

5:28 That's a good point.

5:28 It is water That is exactly what waterfall is as opposed to agile.

5:32 I'm very agile.

5:33 You are very agile.

5:34 I've seen I've seen you like light your feet, too.

5:36 Um but no, that's that's exactly what it is.

5:39 You know um let's take the uh video

5:42 recorder stuff that I added the webcam overlay.

5:46 And you're like, "Hey,

5:47 you should be able to record it at 4 by 3 or whatever." Mhm.

5:51 Yeah, I asked I wanted you to have aspect ratio locking.

5:54 Yeah, that's something that I thought of afterward.

5:57 Um Yeah, so I am I I I'm constantly tweaking.

6:06 I'm constantly playing with it and going no, I don't like that.

6:08 I need to be able to to click this and I need I want

6:11 this option and I and this dialogue will be You called it sculpting, right?

6:16 Like it's like that idea that Michelangelo and you're not

6:19 Michelangelo by the way and I've worked with Michelangelo and you

6:22 Well, he's dead.

6:22 So I'm glad I'm not him.

6:23 It's true.

6:24 Um but this idea that like you've got this block of marble

6:28 and within the block is David and you're looking for him.

6:31 Yeah.

6:32 Like if you think about when um uh

6:35 what's his name discovered Jason um Donald not Donald.

6:41 I forgot his name.

6:42 He used to hang out with him all the time.

6:44 Anyway, the guy that made Jason the the the format.

6:46 He didn't say he invented it.

6:49 Uh he said that he discovered it.

6:51 Douglas Crockford.

6:52 Yeah.

6:52 So you're discovering you're you're carving you're

6:55 you're kind of like sculpting this thing

6:57 and you're having a conversation The whole point is to have a conversation.

7:02 I I saw a gentleman fight with Peter Steinberger Peter Steinberger

7:06 the famous open claw creator and the guy was like, "Yo,

7:10 I I make a very complicated perfect plan.md and I get

7:13 it exactly the way I want." He's effectively programming in English.

7:18 And then he says, "Do it." And that's

7:20 his interaction with the with the with the LLM.

7:23 It's like, "Well, that's not really helpful.

7:25 The interaction with the LLM should be an interaction not a compile step.

7:31 So I'm kind of rejecting that.

7:33 There's balance to be clear.

7:36 But it just seems weird to me to try

7:37 to get the plan perfect cuz that sounds like programming.

7:41 Also, I think the other problem um and this is really where

7:45 the fundamentals come into play is

7:47 that it's impossible to provide a comprehensive spec.

7:51 You know what I think one of the things even

7:53 in the traditional software engineering approach of the product managers write

7:58 the spec and then the devs go and work on it

8:01 is that there's always communication and iteration there even with the spec.

8:06 Yeah.

8:07 The developers go, "Hey, how's this look?" Well,

8:09 no, that's not exactly what I meant.

8:11 And it's because human language is just too abstract.

8:14 And Bingo.

8:16 The other aspect of it is do you want to put in the spec like "Hey,

8:20 performance you know,

8:21 I'm going to completely spec it from a performance perspective,

8:24 from reliability perspective, from a feature perspective uh from a what

8:30 tool what packages you can use perspective, from what architecture perspective,

8:35 like all of the different aspects that go into crafting the thing." Mhm.

8:41 Are you going to go write the 50-page document

8:43 that has every single one of the those things specified?

8:46 And by the way, when this happens, this should happen.

8:49 And when that happens, that should happen.

8:50 And by the way, this edge case throw an exception or this edge case you know,

8:56 like it's just a I've I it's just a huge I think waste

9:01 of time because you're just not even going to get it all right anyway.

9:05 So what do you think about these spec kit

9:07 inspect driven development and specify and all these different things?

9:10 Like I think it's kind of ironic that we

9:12 have this and I've been calling it the ambiguity loop.

9:16 We've got this ambiguity loop and if things are left ambiguous,

9:18 it will be filled with the statistical mean.

9:21 And that's that's a benefit.

9:22 That's actually what makes this better.

9:24 You can be less specific and it'll fill it it'll fill the the the specificity

9:29 hole with a reasonable default and then maybe that's right, maybe it's not.

9:35 But to do spec driven development just sounds

9:37 like coding and specifying everything and that that doesn't

9:42 use the very thing that LLMs are good

9:44 at which is filling spaces of ambiguity with really good point.

9:47 I'll tell you on the panorama stitch thing the hardest

9:50 project I've I've done so far for AI assisted coding.

9:55 I didn't even like I I spent my first spec for it was here's what I want,

10:01 you know, panorama scroll, whatever.

10:03 And it immediately said,

10:05 you know what I you can't do a pixel by pixel comparison,

10:07 so I'm going to use Luma, which is brightness of pixel regions,

10:12 and use that as the the the fundamental approach.

10:15 And it it knew that presumably from other

10:19 places where people have done something similar

10:21 that it learned from during its training

10:23 or maybe when it searched online for ideas.

10:26 Mhm.

10:27 I wasn't aware of that approach um as being the best way to do it.

10:32 Now, it's uh implementation was a giant fail.

10:37 Like and I had to sit and push it and guide it and like here's

10:41 another case that need you need to handle and this isn't working and you need

10:47 to and I think one of the things that I mentioned in the LinkedIn post that I

10:51 wrote about this is that it didn't automatically

10:55 come up with how it should test this.

10:57 Mhm.

10:58 And so I had to guide it as I saw hey,

11:01 this thing is actually much more complicated than I

11:03 thought to say record all the images and record

11:07 your steps um in a file in a directory a debug directory for each one of these.

11:14 And then what I could do is have it go back and replay the stitch.

11:19 And I could see, you know, like hey,

11:21 you um go replay on the last five um and take a look and then tell me

11:26 if you take a look good and I'll go take a look and then it would say,

11:29 oh, things are looking great.

11:30 And I'd go look and be like, no, there's artifacts here and there's stretching

11:34 here and there's repeat black spaces here.

11:36 And they'll like, oh, I missed that.

11:38 Um and uh or I caused a regression.

11:42 Um and then I would go try other things and say,

11:44 here's one that failed, go and and see if you can fix it.

11:47 And it would replay it and that that way I could verify it.

11:49 So the and I can't just imagine that AI's

11:52 going to get so good that it's thinking proactively

11:54 about absolutely every potential case that could come up

11:58 where it's it's just automatically handling all these things.

12:02 And you know uh regardless of whether it does

12:06 that doesn't take away this the sculpting part of it.

12:09 Um Yep, exactly.

12:11 I recently had an interesting problem where my son

12:14 is selling um clothing online and he wanted a lookbook.

12:19 And he thought it was just going to be like a regular gallery of the pictures.

12:22 But he has like a hundred shots from his little fashion show that they did.

12:27 And his company is called infinite something.

12:29 And I thought it'd be cool to have like

12:31 imagine Google Maps tiles of all of the different pictures.

12:36 And then you can zoom in and zoom out and scroll and throw and run around.

12:40 So it'd be an infinitely tiled thing.

12:44 And I specked it out,

12:45 which I thought was very specific at about three three paragraphs because

12:49 he gave me a folder full of a hundred 13 meg raw files.

12:55 So there's pre-processing of the JPEGs,

12:58 there's tile creation at different zoom levels.

13:02 And it has to work on mobile and all of those kind of things.

13:05 And I specked it out and I did it in one shot and it was perfect.

13:09 And then I started scrolling around and it guaranteed relative memory.

13:14 Yeah.

13:14 And then I put it on an iPhone and you

13:17 move it like two inches and it immediately loses loses memory.

13:21 Cuz then you've got viewport and you have decay and you

13:24 have speed and you have all these kind of things.

13:26 And I got the whole thing done in about eight turns.

13:29 But it was really interesting how the first turn worked perfectly Yeah.

13:34 until it completely didn't work at all.

13:36 And then the following seven turns were the Yeah.

13:40 But why would it anticipate all those things, Scott?

13:42 How could it, right?

13:44 Yeah.

13:45 And it's a great example, whether it be the panorama or my thing,

13:48 where it's like, yeah,

13:49 it sounds like it sounds easy cuz it can be conceived easily.

13:53 But just because it can be conceived easily doesn't

13:55 mean that the edge cases will not absolutely destroy you.

13:58 Yeah.

13:59 Yeah.

13:59 I think that's what we forget about the edge cases.

14:01 Edge cases and polish, too.

14:03 Like I that's a lot of polish.

14:05 Like this needs to work like this, this needs to be this responsive.

14:09 Oh, I want to be able to add multiple

14:12 papers in a ref checker rather than just one.

14:15 That's something I came up with after the original spec.

14:18 Oh, and that requires some change to the architecture,

14:20 by the way, to support that.

14:22 Um by the way, turns out 10 months ago I'm

14:24 looking at our Mark and Scott talk too much thing.

14:27 Uh we had ingested the transcripts by putting them into foundry.

14:33 And that's what did our speaker identification.

14:35 And that project no longer exists.

14:37 I think it got deleted.

14:39 So I now it's 10 months later.

14:41 I have to re- architect how we do

14:44 speaker inference because YouTube um transcripts are free now.

14:50 I don't have to go and pay for a transcription service.

14:52 But YouTube uh doesn't do uh speaker inference.

14:56 So I might have to do like a whisper

14:58 model or a local model to determine who's talking.

15:00 Yeah.

15:02 So I'm just letting you know that like this is a great

15:04 another great example of like software

15:06 engineering is like hydrating an old project.

15:08 And by the way, this is a great example of the people that are like,

15:11 no, everybody just fly code everything.

15:13 Fly code my unique thing.

15:15 Um and the software's free now.

15:20 No, it's not free.

15:21 In fact, you wanted to keep this thing working, it requires maintenance.

15:26 Not just from hey, it's something broke architecturally, but The keeping

15:30 uh you've got to do security and I Yep.

15:34 Keeping this thing working is a huge huge point.

15:38 Uh I've got software that will run for months

15:41 and then it just just stop and it's like, why?

15:44 Personal access token expired.

15:46 Azure function stuff, you know, fell asleep.

15:48 It needs to be kicked.

15:50 Like it's your garden and it needs to be weeded regularly.

15:55 Yeah, every project If you wanted to live, you you have to maintain it.

16:00 There comes with some cost.

16:02 Yeah.

16:02 I think I [clears throat] told you a while back that I vibed the back end

16:05 for my my podcast and um I went there

16:10 recently and it had um it's my admin back end.

16:14 And there was a um a crypto JavaScript file

16:17 sitting in in in in the in the main project.

16:21 I got [laughter] hacked.

16:21 I got Dude, I got hacked.

16:23 I had I have all these API routes and one of them was not secured.

16:29 And somebody posted a file and it sucked it in and it dropped it

16:31 right into the main folder and started serving crypto BS to my admin site.

16:37 Like people like we weeds and dandelions will come over the fence

16:41 and drop directly into your your backyard and the next thing you know,

16:44 you're like, what happened?

16:46 And it's just because I hadn't looked at the thing

16:47 in a couple of weeks and you know, I would have noticed it.

16:51 Yeah.

16:51 So software is not free.

16:53 No, it's not.

16:54 So okay.

16:55 So I'm interested in the folks in the comments,

16:57 if you made it this far, if you are make a spec,

17:01 write out the markdown file, if you're fooling yourself, that's a little spicy,

17:05 into thinking that markdown and prose is a programming language.

17:09 So if you imagine that that that gradient between do

17:12 it all as a spec and try to one shot it or if you have no spec and you just kind

17:17 of like figure it out or if it's somewhere in the middle.

17:20 I I would put myself somewhere in the middle.

17:22 That's By the way, the other problem that I've had

17:25 every time I do uh spec driven development where it

17:27 goes creates that markdown and it has the tasks is

17:31 that the AI inevitably skips things and says it's done.

17:35 And I every time I've tried it and I don't you know,

17:39 I think AI is going to get good enough where

17:40 it stops doing that, but at least the current AIs,

17:43 it's been my experience that it thinks it finished the spec when it didn't.

17:50 Um is the we'll probably call this a show

17:52 and move to the next topic in a minute,

17:54 but I'm curious uh if you find the multitasking to be the worst part about this.

17:58 I think you're kind of a single tasker, right?

18:00 Don't you like Mhm.

18:02 Uh focusing on one thing.

18:03 How many projects are you running at once?

18:05 Cuz I'm starting to get a headache more than three to five projects.

18:07 Yeah.

18:08 We talked about this last time.

18:09 I think this week spot is three.

18:11 Yeah, three is the sweet spot.

18:13 Four.

18:13 And actually there was a study that came

18:14 out right after we had that episode, you remember?

18:17 And it said brain fry happens at four.

18:20 Human at four projects and they they found Mhm.

18:24 productivity [clears throat] would increase up to three projects

18:28 at at the same time and then collapse at four.

18:32 Yep.

18:33 Which um which is my personal experience as well.

18:36 Yeah, I agree.

18:36 I think I think it's funny to watch

18:39 humans fool themselves into thinking that they are unique.

18:42 The master I'm the master.

18:43 I've got a hundred I'm big on multitask.

18:45 I'm not I'm built different.

18:46 I'm built different.

18:47 No, you're not.

18:48 Like millions of years of evolution mean you're not built different.

18:51 You you are not multitasking.

18:52 You are you are context switching quicker.

18:55 I don't know.

18:55 How many How many times have you heard people go,

18:57 I've got a hundred agents right now working on it stuff for me.

19:01 It's it's the review fleet of agents.

19:04 Man, I've got so much stuff to review right now.

19:06 Like the code is no longer the problem.

19:08 The reviewing the code for BS is the problem.

19:11 Yeah.

19:11 And that takes time.

19:12 Like even, you know, take like the Zoom at panorama thing.

19:14 I've like got to go and test it at myself

19:16 to see and review it and the zombie edge cases.

19:20 So when do you think the industry is going to figure that out?

19:22 Because I would argue that leadership and leadership would be

19:26 the set of all people who are not you and I Yeah.

19:29 uh need to understand that you can't make people 10x more productive.

19:33 It's just not a thing.

19:34 10x more productive is not a thing because at some point you

19:37 got to stop and you got to like look at the the content.

19:40 Well, yeah, and I also we talked

19:41 about there's fundamental bottlenecks in software engineering.

19:45 Yep.

19:45 Which include things like how long does it take to build the thing?

19:48 How long does it take to run the tests run the thing?

19:51 Yeah.

19:52 And then how much work do I have to do on maintaining the thing?

19:57 Um that all is going to eat into you know

19:59 that you it's like I talk about it like Amdahl's law.

20:03 I don't know if you you know what Amdahl's law is.

20:05 Amdahl's law that sounds like a Lord of the Rings reference.

20:07 It's actually a computer science reference

20:10 which is uh when parallel programming started

20:14 to get popular in the 70s and 80s people would take a look and say,

20:17 "Well, here's part of the program

20:19 that actually gets um it's it's perfectly scalable.

20:24 You throw 10 CPUs at it, it's going to be 10x faster.

20:27 But you know what?

20:27 The beginning the the code that comes before it or the stuff

20:32 that comes before it or the stuff that comes after that's linear.

20:36 Um that's not going to get any speed up.

20:38 That needs to be done sequentially.

20:40 And so your maximum speed up isn't 10x, it's some fraction because you've got

20:46 these non-scalable portions of the task or part

20:49 And I assume that as I'm talking the approach is some maximum speed up

20:52 and you can keep throwing processors at it

20:53 but it's now a context switching problem, right?

20:55 Which I don't know Amdahl's law.

20:57 just take half half of it is perfectly scalable, half of the task isn't.

21:01 So what's your maximum speed up?

21:03 So the curve probably speed up is half.

21:05 Like

21:06 Yeah, it probably kind of starts slow, has a vague big thing and then evens out.

21:09 Yeah.

21:10 So this I don't I didn't know it as Amdahl's law but we used to say,

21:13 you know, nine women can't have a baby in a month.

21:16 Yeah.

21:17 They they can't throw resources at a problem and have it parallel, right?

21:20 Yeah, exactly.

21:22 Okay.

21:23 Well, um so that's the show.

21:25 Uh we have to have a formal ending here

21:27 because we tend to putter out at the end.

21:30 I want to always appreciate our favorite uh listeners and our favorite watchers.

21:35 If you made it this far you are better than your peers.

21:40 [laughter] And I need you to know that.

21:42 Uh [clears throat] so we thank you very much.

21:43 We thank you for listening.

21:44 Leave a comment, like, and subscribe.

21:46 Comments are appreciated.

21:47 We love the comments.

21:49 Yeah, smash that bell.

21:51 Like and subscribe.

21:52 But most importantly,

21:53 the number one thing you can do is help us out by telling people about

21:55 the show because Mark falls into an emotional

21:58 funk when the show doesn't have enough views.

22:01 So please feed our massive egos by sharing

22:05 this [music] with your friends if you think it's useful.

22:07 And LinkedIn is a great place to share the show.

22:09 two friends.

22:10 At least two friends.

22:11 Everyone is required if you made it this far

22:13 to share with at least two friends Yeah.

22:14 and family members.

22:16 And also hi to my mom [music] who watches the show and texts me.

22:20 You're She does.

22:21 She texts me every week.

22:22 She says, "You're a nice friend, Mom.

22:23 You know, actually Mark is he's so nice." She doesn't know the real you.

22:30 Bye.

22:32 She's totally going to text me after this.

22:34 I guarantee it.

Study with Looplines Download Captions Watch on YouTube