Embedded - 436: 20 GOTO 10

Episode Date: December 2, 2022

Chris Svec joined us to talk about kids programming and how well the Joel Test has held up. Svec’s son (“The Kid”) developed an interest in programming by playing games. Most of his programming ...desires are around building games of his own.  Any time we talk about kids and programming, Scratch comes up. It really is that neat and is The Kid approved. Some resources to get you started (actually, getting started is easy, you may want a book to do more than the basics): The Everything Kids' Scratch Coding Book: Learn to Code and Create Your Own Cool Games! by Jason Rukman  Scratch 3 Programming Playground: Learn to Program by Making Cool Games by Al Sweigart (hey, we know that guy!) griffpatch on YouTube  Digipen.edu had two courses The Kid (and Svec) took. Both are free on YouTube: Introduction to Game Design Lessons DigiPen Basic Game Development Series Finally, in a shockingly unrelated twist, we talked about the Joel Test for determining the health of a software development organization. No determination was made on how good The Kid finds his current position. Transcript

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to Embedded. I am Alicia White, alongside Christopher White. This week we're going to talk about programming kids. Wait, that didn't come out right. Programming for kids? Programming of kids? Programming by kids? Something.
Starting point is 00:00:21 And we'll probably cover the Joule test. The Joule test? Joule. Oh, so we're going cover the Joule test. The Joule test? Joule. Oh, so we're going to check diamond hardness and clarity? Okay. Our guest this week is Christopher Svek, who is not a co-host of this show, but is a frequent and much appreciated guest. Hello, Christopher Svek.
Starting point is 00:00:40 Hey, Chris and Alicia. How are you two doing? We're doing all right. Check back in an hour. Hey, Chris and Alicia, how are you two doing? We're doing all right. Check back in an hour. So you have switched jobs, and I know that we cannot talk about your role. Do you have a I am not responsible for what I say statement? Sure, I should say that I'm not responsible for, or rather, I guess I'm responsible for what I say,
Starting point is 00:01:10 but I'm definitely not speaking on behalf of any company I've worked for past, present, or future. And I'm just here talking to a couple of good people about whatever comes up, and it's not in any way related to employers. Can you declare future liability like that? I don't, I don't think you can. I wonder if I could declare that I,
Starting point is 00:01:28 I am talking for a future employer. Could you do the opposite? No. What if your future employer is a time travel company? Hmm. I bet the NDA for time travel companies is really, really hard to, uh,
Starting point is 00:01:44 to write. Okay. So we're going to go on to lightning round now. What? I don't have anything. We have no questions, so it's up to you to ask them and we'll answer. All right. Now I got it. I got it.
Starting point is 00:01:55 Here we go. Favorite Thanksgiving side. Mashed potatoes. Favorite Halloween candy. That's a tough one. Reese's peanut butter cups. Favorite Halloween costume that your child, henceforth referred to as, quote, the kid, has worn. Mario.
Starting point is 00:02:15 Super Mario. What's your favorite video game? Oh, that is a tough one. My guilty pleasure that I go back to and play whenever I just want to turn my brain off is Diablo 3. My latest game that I've been playing with a kid a ton is Mario Kart 8 on the Switch. Do you know what XYZZY comes from? Oh, yes. Which of the, is it Colossal Cave?
Starting point is 00:02:42 I think it's Colossal Cave. It's one of the old, one of the first adventure games Colossal Cave? I think it's Colossal Cave. It's one of the old, one of the first adventure games, text adventure games, and I think that brought you back to the start or something, right? It did indeed. I encountered this last night in a brand new video game, which I found
Starting point is 00:02:57 amusing and irritating. What is your least favorite? Oh, sorry. No, your turn. Your turn. What was the last nonfiction book you read and how was it? Oh, last nonfiction book I read. I'm reading one right now, which is, I'm looking up the title here. Um, it's called the way we never were. And it is about basically we have all this nostalgia for, you know, the golden age, the 1940s or 1950s or 1960s or whatever. And the book is a look at how most of the things we believed were better back then in the golden days were just completely not true.
Starting point is 00:03:33 And in fact, things were objectively worse on many axes. So I'm just starting that book, and it's pretty good so far. But the 80s, though, those were better. The 80s were solid. I'm going to say the 90 and it's pretty good so far. But the 80s, though, those were better. The 80s were solid. I'm going to say the 90s were pretty solid, too. Round wound, ground wound, or flat wound? Ooh, flat wound if it's a fretless, otherwise round wound. Do you have a tip everyone should know?
Starting point is 00:04:02 No. You asked this of a lot of your guests. of your tips do you think this guy has he's probably been here four or five times and he's given all the tips yeah i don't have any good tips anyway what is your least favorite uh nope that's a terrible question to ask somebody who's declared their liability uh what's your least favorite lightning round question yeah um it's probably the tip everyone should know because i feel like I don't have any. Many of your guests have great ones. I do not.
Starting point is 00:04:29 What is your favorite lightning round question? And have we asked it yet? I always like when you have the lightning round questions for guests where it's clear it's just for them. And especially when Alicia has like the murder bot, Martha Wells. I didn't even know what she was talking about. Yeah. I mean, you definitely had a bunch of questions in there where like, okay, you've clearly read her books and you know, you, you kind of, you kind of go geek in there to, to a
Starting point is 00:04:55 similar thing, like Chris's question about flat wound, round round or ground wound. You know, these are, these are the way different types of bass guitar strings. And so I, I appreciate that geeky insight into your guest. Okay, so let's talk about your kid. We're not going to say his name, and if we do, we're going to bleep it. Even though we offered to call him Mario, and he said no, which I thought would have been hilarious. That's right.
Starting point is 00:05:22 But the kid is how old? The kid is nine. And when did he start wanting to program computers? So the kid, like many kids, started playing video games. You know, we have a Switch, and so we played a number of Switch games. He particularly was drawn to Mario and to the different various Mario games and he played them for a while. Um, and at some point he, he started to ask me, how, how did they, how did they do this? Like,
Starting point is 00:05:55 is this, you know, he knows that I've, I've done, I'm, you know, I'm a software engineer and I've done a lot of software and, you know, he knows that there's code in the robots. We've done various different um online and in real life coding um coding simulators and simulators is maybe a bad uh bad word for but uh different types of programming exercises you know dealing with logic telling the turtle bot to move you three squares, that kind of stuff. And he seemed to think that was interesting.
Starting point is 00:06:31 But when he got into games enough and he realized, wait a second, people make these games and somehow they must program them. That's what you do, right, Daddy? And he said, well, yeah, kind of. So we ran it around and I knew Scratch was a thing. I knew that the, um, the MIT has this, uh, graphical block language, block programming environment, actually, it's more than just a language. And so we, um, we went over to Scratch's site and they had some, some decent little like intros and tutorials. And, uh, that's, that's kind of how we, how we started initially.
Starting point is 00:07:03 I do want to say that, like, I did not push my kid into programming, and everyone, I shouldn't say everyone, I hear many people say things like, oh man, every kid should learn how to code. And I don't know how much I agree with that. I feel like software, coding, programming, whatever you want to call it, can be mind-numbingly boring for people
Starting point is 00:07:23 who don't find it sort of intrinsically interesting. So I have a lot to say. Well, hang on. It can be mind-numbingly boring for people who do find it intrinsically interesting. That's true. That's true. You heard it here, folks. Programming is mind-numbingly boring. Mind-numbingly boring. No, I think it's fascinating. But as I describe what I do to normal humans, I'm like, yeah, this sounds insane. It sounds like I have a real problem that I sit here and type at this infernal machine.
Starting point is 00:07:51 And try to convince it to do what you want, even though it truly does not want to do what you'd want. That's right. That's right. It just wants to do what you tell it to do. It's kind of a jerk in that way. It doesn't want to do what I want it to do. Exactly. Okay, so he found games and decided he wanted to make his own games. Yep. Yep. And at first it was, it was just a little
Starting point is 00:08:12 bit, you know, he's kind of interested in it and I didn't want to push it, right. I didn't want to be like the overbearing father. And so, you know, he played with scratch a little bit here and there, but nothing, nothing, uh nothing too too big um and then at some point he maybe maybe we got super mario maker i think we got one of the super mario maker games which are these games it's basically a level designer for the the switch and so you the player can actually create levels using all the different blocks and superpowers and all this stuff and you can make your own little mario game And it's a sandbox, but it's pretty fun. And so at some point, he wanted to kind of say,
Starting point is 00:08:48 hey, how could I make my own next step? How could I actually make my own game? And so the internet is a wonderful thing, and we found a couple of videos done by DigiPen Academy, which is a, I think it's like a game, computer science game development focused school in college in, I think it's in the Seattle area. And so DigiPen, they also offer K through 12 classes. I think they have onsite stuff. They have some homeschool classes, whatever. They have this two different YouTube video series that were just like basically made just for my kid. One of them's
Starting point is 00:09:26 I'm sure we'll end up having links in the show notes here, but one of them is called introduction to game design lessons, which is five videos that teach you just enough scratch to kind of get into and figure out what, what is fun in a game? What, what, how does a game get fun? How does the game not get fun and then it lets you play with a little sandbox game they've created to make things faster slower you know better worse whatever and then you get to experience what actually makes a game what you know how do what does the sound do what does the animation do what does the actual like change the game mechanics do and so that was again i feel like it was made, made for my kid. And the second one they had is kind of the next level. And that's the basic game development series. And that's, that
Starting point is 00:10:12 is a take you by the hand and walk you through creating a asteroids type, not asteroids, sorry, a kind of a space shooter kind of a game. And the guy who who the guy who teaches it um who does the uh the videos actually uh is is an employee of digipen and he does just a fantastic job his name is doug swick um and it is clear that they understand like the theory of game design they make games and they understand the educational aspects. And so those were just like, basically, once we hit those, there was no stopping. No stopping my kid. There are a whole lot of different areas to game design. There's the artwork and the interactions and the story arc.
Starting point is 00:11:01 The sound. Right. Which parts are interesting in the graphics? Yep, absolutely. There's, there's, yeah, basically, it's actually kind of similar to embedded. If someone says, oh, I want to learn embedded. It's like, well, what do you mean? There's 73 different, you know, different unique things that you could spend the next 20 years diving deep into. And what happened to resonate with my kid is kind of the coding and the game design part. Like how does the game work, game mechanics,
Starting point is 00:11:32 and those have been kind of the bigger interests for him. There is similar content on YouTube nowadays where if you want to get deep into, oh, you want to learn how to do 2D sprite animation kind of stuff, or you want to do sound design for games. And DigiPen has some content for that stuff. I'm not sure how much of it is online and free. I know they have classes and stuff because they teach it. But, yeah, I mean, it's all over the map.
Starting point is 00:12:00 My kid is kind of centered on the programming and game design piece of it. And these videos were just perfect for it. And DigiPen is a university. Right. So you're not randomly choosing YouTube videos. Right. I was actually pretty darn wary of, you know, sitting my kid down in front of any random YouTuber, right? So I'd never heard of DigiPen before.
Starting point is 00:12:23 I basically started Googling for, like, kids guide to game design or however I stumble on it. But they have proven to be trustworthy, at least in their videos. How long has he been interested in coding? In kind of getting into the game stuff is basically January ish this year. So roughly a year at this point. And he recently made a mental breakthrough. Yes. Can you tell us about that? Yes, this, this was a, I mean, I'm probably an annoying parent at this point, but, uh, you know, you asked me, so I have no choice but to answer. He realized that you can use a Boolean as a zero or one. So a Boolean in a mathematical expression evaluates to a zero or one,
Starting point is 00:13:15 and you can use that to multiply by another number. And then your result will basically be either, you know, zero, if the Boolean evaluates to false, one if it evaluates to true times whatever number. And he ended up using that in this idea. And I thought that was great. Of course, knowing that lots of bugs come about because we forget that Booleans are ints too or ints are Booleans too. But to see his mental model of the world kind of open up was pretty cool to get to hear him talk about that. See, I got the extended version of that story that involved toothpaste. There was toothpaste. There was toothpaste. And dribbling during discussions of binary,
Starting point is 00:13:58 which I thought was awesome. It's true. It's true great thinking happens happens in you know in the bathroom brushing your teeth in the shower whatever so so he's using scratch what i have never used scratch or if i have i've forgotten it um maybe it came with some sort of robot toy at some point but anyway what can you can you describe what scratch is and how it works and like what i'm curious about its limitations and yeah that kind of thing yeah i was surprised so i i knew very little about scratch but scratch is a it is a or perhaps the block-based language if you hear people talking about block-based programming environments for kids then it's it's probably something like scratch you can go it's free it's open source
Starting point is 00:14:41 um mit is the one that invented it, and they maintain it, and they actively develop it. And it is a web-based programming environment and language that is geared towards kids. And so you have... I'm bringing up a project in front of me so I can describe it. The user interface is basically on the left. You have a bunch of blocks
Starting point is 00:15:11 and the blocks let you code using blocks and limited text. And the things that you manipulate in this programming environment are sprites, which are just pictures basically. And so it starts off, you start a new project and there's a cat and that cat is the scratch cat. And you can make him move 10 steps or turn 15 degrees or turn, you know, any arbitrary number of degrees. You can make him move to different X, Y positions on the screen. So it's got basic movement kind of commands. And then it's
Starting point is 00:15:41 got different ways to change the way the characters look, the sprites look. It's got events where I can do, okay, when I click the screen or when I press the space bar, do something. Or when something else happens and then triggers some other event. It has basic control blocks. You've got your repeats, your forevers, if, all that kind of stuff, as well as basic mathematical operations. And yeah, it's probably Turing complete, and it has user interaction stuff. So I can tell where people are clicking, or what keys they're hitting, or if a sprite is hitting another sprite. So if you go to Scratch, they have a bunch of tutorials that will show you all kinds of different things you can do with it.
Starting point is 00:16:25 You can create a story with characters. You can create kind of a simple game. You can record a sound. You can make unicorns appear on the screen. Stars come out of their head, that kind of a thing. And it's got a bunch of basic stuff in there to get you started. Okay, so I have played with Scratch a few times, mostly teaching middle schoolers programming. And it's really good because it's easy to get to something you can show somebody else and be pleased with.
Starting point is 00:16:57 It's a very story-based language. And in fact, one of the tutorials they have on their front page right now is how to build a story. The idea with some of the middle schoolers I worked with, they had their characters do things, walked around and do things. And they figured out that if they, I think it was hugged and danced at the same time, it looked like they were kissing. And then they got to have a kissing function like i mean middle school girls it it was pretty hilarious but they were excited to be able to tell a story with programming because it wasn't for them about the challenges of logic it was about making something they could share. And Scratch is great for making something you can share. And it is really quite, I mean, you said Turing complete, but it's easy and very expansive.
Starting point is 00:17:57 You can make a piano keyboard or you can make just about any 80s game you can think of. And it's not super hard. And it's a huge community in that there are lots of them out there and you can see their code and everybody's kind of sharing. It's pretty cool. So if you haven't tried Scratch and you've got a kid in the 6 to 12 range or even 6 to 15 range who's never seen coding, it's a good way to just get the idea that it's not about typey typey at your computer all day. Yeah. So I totally,
Starting point is 00:18:37 I think Scratch is great, except that it is a block-based, and that's not how my brain works. Yes, yes. Well, if you, so first of all, you absolutely nailed it. It is super easy and supposed to be super easy to get from basically knowing nothing to put something interesting on the screen that you can share with a friend. Like, I don't know that that's their mission statement or that's their vision, but you are absolutely right. That is what it makes it very, very simple to do and fast to do. The, it, when, when my son started using it, you know, he kind of, I felt like he was bumping up into the edges of what he could do with it after we did those couple of YouTube videos from the DigiPen folks. And so he, you know, he kind of, kind of practiced, He kind of made little games here and there. And then we stumbled upon a couple more books that he found to give him different techniques for doing things in Scratch.
Starting point is 00:19:33 And one is called The Everything Kids Scratch Coding Book by Jason Ruckman, R-U-K-M-A-N. And the other one is called Scratch Programming Playground, Learn to Program by Making Cool Games. And there's a newer edition, a third edition of that, and it's by Al Schweigert, I think. And I'll give you links for this. Yeah, but so those books had even more sort of, okay, here's different ways to do collision detection. Here's different ways to do sort of, you know, 2D game platformer kind of stuff. And at this point I thought, well, surely he's reached the end of what Scratch can do. Because, okay, yes, I can believe it's Turing complete, but, you know, you probably have to be
Starting point is 00:20:14 an expert, you know, I'll say adult professional programmer to kind of push it more. But I was wrong yet again. My son really wanted to make a 2D platformer. And I'm thinking, oh my gosh, I'm scared to go on YouTube and search for, you know, how to make a 2D platformer in Scratch. But it turns out there is just a vast amount of really good content out there where people have done just ridiculous things and remaking every Super Marioio every every nes and probably super nes game that uh that you may have grown up with or still be playing now people have remade on scratch and a number of people have tutorials that show you in pretty kid-friendly language and and kid-friendly kind of format hey here's how to make basically a mario clone or an rpg tile based scrolling game that kind of
Starting point is 00:21:07 a thing and then this one guy his son is youtube and uh and scratch handler griff patch g-r-i-f-f-p-a-t-c-h so griff patch his stuff was just amazing and is amazing and he puts out a video every week or two and he goes through again showing how you can make basically like very good mario or you know zelda or whatever types of games using scratch and shows how kind of computer science topics can be used in order to uh in order to to make these games i feel like it's kind of a tricky computer science education that kids don't realize they're getting. So when are you studying him on C? Well, he is quite comfortable with Scratch and still learning stuff in Scratch. And so he knows that he can do more with, with other languages, but there's, there's
Starting point is 00:22:09 definitely like a comfort level with, he knows that he can be successful at what he wants to do right now. And the adult learner in me and the, whatever, whatever I am makes me think, okay, what's next kid, you know, like, let's, let's, let's move on maybe some JavaScript so you can learn how to kind of put this stuff on the web or let's get some Python or something, something, something. I need to stop myself there because he's spending good quality time making different games and inventing stuff and coming up with stuff. And so I've told him that, hey, there's other stuff you can do, see your JavaScript or whatever, but he's comfortable where he's at and he's enjoying it so we're uh we're sitting pat on that right now well it goes back to
Starting point is 00:22:50 there are many different types of things you can learn from game design and learning cs concepts that wasn't even in our list but it should been. And platformers and how to make things fun and music and all of these things, none of those are limited in Scratch. Yep. And actually, Scratch has a really good, simple sound editor. It has a really good, simple graphics editor. It has a really simple sort of costume animation sort of technique. So you can make your cat figure move by changing what they call a costume is kind of what it looks like. And you can make the legs move and the arms move. And if you do that in rapid succession, then it looks like he's running or walking or whatever.
Starting point is 00:23:36 And Scratch makes all of that easy enough and quick enough so people can be successful with relatively little effort. This goes back to something I think I talked about many years ago on the show, but I don't remember what the context was, but I think I was talking about how I learned to use computers and program and stuff and how in the 80s computers were far simpler than the things we have now. You could do less with them. They could connect to fewer things. And the way you programmed them was very constrained. You typed in things from
Starting point is 00:24:12 magazines. You could type in things from magazines. The computers generally, Commodore 64, Apple IIs, whatever, TI-99s, they all came with some form of BASIC. When you turn them on, most of them dumped into a prompt that was kind of the BASIC shell, for lack of BASIC. And when you turn them on, most of them dumped into a prompt that was kind of the BASIC shell,
Starting point is 00:24:28 for lack of a better word. But you could just type commands there and it would execute BASIC. And if you type line numbers, then it would start to construct your program. So BASIC was the operating system of these computers. And that's what you got. And that's how you learned.
Starting point is 00:24:40 And I think in the middle somewhere, we got to this point where computers are these extraordinarily powerful things and if you want to program them well you get an integrated development environment and you know you have to learn all these things which are far too advanced for kids um in the most cases to kind of start from um so i feel like this is kind of back to finding a place to make that experience happen again where here is where you are and you can just make stuff happen and see it immediately and you can learn these things
Starting point is 00:25:15 in a constrained little environment that doesn't require you to use professional tools. Yeah, let's leave debuggers and compiler optimizations to, you know, when he's 10. All those things existed in the 80s, but I think
Starting point is 00:25:33 at some point computers became so general purpose and for so many other things that they were no longer for programming. But like the early Apple II, like I said, they booted into apple soft this is a computer that's for programming yep yep i mean my first computer was a commodore 64 and absolutely yeah you you get in there and you do 10 you know space print you know your sibling
Starting point is 00:25:57 is a butthead yep you know 20 go to 10 and like there you go you're're, you're, you're a programmer, right? And, uh, yeah, if my brother's listening, you know, I stand by that statement, but, um, I actually, so Chris, that's interesting. Cause I didn't actually, I hadn't thought of scratch that way, but scratch, you know, if you go to the website, it absolutely is the Commodore 64 startup screen. Cause there it is. It's a constrained environment and you can do stuff with it in pretty simple fashion but you can do stuff sort of right away so i hadn't thought of of the scratch ui and the scratch interface as that great of an enabler like from you know this is the basics but maybe this is the new boot screen or reset screen so i like that i like that comparison because yeah
Starting point is 00:26:42 something i mean basic went away, right? I mean, BASIC came with DOS, too, and you could slightly less easily, but easily write stuff in DOS. And Windows had QuickBasic, which a lot of people learned to program in. But eventually that stuff kind of fell by the wayside. And now I think, yeah, you see people suggesting JavaScript and Python, but I don't feel like those are easy to get going. No, because you need a compiler, and you need to understand what a compiler is.
Starting point is 00:27:10 Not for JavaScript or Python. JavaScript you can just run in a browser. True. But it's weird. With Python you need an interpreter, and then if you want to write a file, then it gets complicated pretty quickly. Yeah, with Scratch, you don't have to know that there's a file backing all this stuff.
Starting point is 00:27:30 You don't have to know, you just click save and it saves in the little folder on your desktop instead of, you know, Python, you have to know that there's a.py file and you have to run it by typing some weird Python word and then space and then you get this. Yeah, so there's definitely a lot more hoops to jump through. You said on the embedded patron slack about reading JavaScript for kids? Yeah, yeah. My son had expressed some interest in like, hey, what is beyond Scratch or what are different types of languages? And so I don't know JavaScript at all, but I kind of poked around at, okay, what does Python have? Does Python have kind of a batteries included sort of game development sort of thing?
Starting point is 00:28:16 Because that's the thing he's going to want to do. Does Python have it or does JavaScript have it? So I looked around a bit and I came across that particular book, JavaScript for Kids, and it used Chrome's just built-in debugger to kind of start right away. And so like you were saying, Chris, it doesn't have basic prompt, but it's got this, you open the debugger up,
Starting point is 00:28:39 and you can start typing in JavaScript right away. And then it builds on some of the basic Canvas libraries to start building silly games. And it has like an insult generator in there, which of course every kid and probably male human on the planet thinks is a funny thing. And so there's, yeah, so it kind of seems to hit the right audience. And it's, look, you can pick it up. You can use Chrome.
Starting point is 00:29:02 You don't have to install anything and off you go. What are you going to get your son? What are you going to get the kid for Christmas? I don't want to say that because he might listen to this. Do you think it will be programming related? I don't think so, actually. You're getting MIR, aren't you? An IAR. You go, son, you've disappointed me.
Starting point is 00:29:30 Here's IAR. If you don't do the dishes, kid, you're going to get Kyle. I got you a development seat, son. I can't afford a development seat, Chris. See, but when I was not too much, or I guess three or four years older than him, I did get a compiler for Christmas. And I was very excited,
Starting point is 00:29:51 which should probably disqualify. Well, I was for the Apple II GS at that time. So it was a C compiler. Oh, a C compiler. That's C or C++? But it wasn't like Borland or anything you remember. No, they didn't have Borland for Apple II. Apple II, the Apple world was separated from all of those people.
Starting point is 00:30:09 Still is. No, it isn't. They're all gone. No, I... Somebody buy Borland now? I just mean, I, never mind. Is Turbo Python available? I don't know.
Starting point is 00:30:23 I'm kidding. Look, as long as he doesn't ask for Rust, everything's okay. No, we did not say that. It's free. Not under my roof. You can't even get stuff in it. When I bought a compiler, it came in a box. It had the box and a big, thick manual and disks and stuff.
Starting point is 00:30:43 And you had to put the compile disk in to compile, but then you had to eject that and put in the linker disk to link. I still have my Commodore 64 spiral-bound programmer's manual. I think it's great. I mean, it's nostalgia at this point, but it's pretty great.
Starting point is 00:31:03 So do you think, how do you think the transition will be when when it happens from scratch to something else do you think he will be surprised annoyed perplexed i i think i think about this um i think it's a pretty general statement because whenever i have to learn a new skill or something, if I'm fluent in something and if I suddenly have to go do something a harder way or transition to a task I'm not as familiar with, it's frustrating. And so I'm imagining he's going to be kind of frustrated because right now, you know, with Scratch and with relatively little effort, especially since he's been practicing it for a year, he's able to create roughly what he has in his head
Starting point is 00:31:46 because he knows what's possible. And hopefully with a thing like a JavaScript or Python or wherever he ends up, there is more that is possible once you get over the learning curve. But I'm guessing it's going to be like a, you know, two steps forward, 10 steps back for a while kind of a thing.
Starting point is 00:32:04 And that, my my guess will be frustrating the great thing about scratch is that you can see examples of what other people have done and you know that you can get there the other great thing about scratch is that it is not too complex so that unless someone's gone really overboard you can you can look at what people have done look at their projects look at at their code, their blocks, and with some effort, sort of figure out what they've done. I think typed, you know, written programming languages, things tend to get a little more opaque, depending how they're written and designed, obviously.
Starting point is 00:32:38 But, yeah. You're going to have to give him something he can't get from scratch, like robots or physical objects, CircuitPython controlling LEDs with an IMU. So actually, Scratch has plugins. You can use it with, I think, the Makey Makey, and you can use it with, I think, the Microbit. So it actually has interfaces to that stuff, so you can make a game controller or do those kinds of things.
Starting point is 00:33:03 Do they have transitional education materials like okay i think microbit does yeah you've you know scratch now here's how to learn i haven't seen that from the scratch project or really anywhere anywhere around that people tend to say oh you know my kid picked up python next or my pick to kid picked up javascript um those those tend to be two areas. Or people jump into things like Unity or the actual professional game engines or game design studios
Starting point is 00:33:35 where you're not so much programming the underlying game anymore like you have to do in Scratch, but you're doing the artwork or doing the game design or doing the scripting or the in-game mechanics, but you're doing the artwork or doing the game design or doing the scripting or the in-game mechanics, but you're not doing the game engine itself anymore. And so some people gravitate to different places.
Starting point is 00:33:55 What is the... I had a joke about going from Scratch to that graphical language that I want to say is national instruments. Oh, LabVIEW. LabVIEW. It seems like LabVIEW is the obvious successor to Scratch. I mean, like, honestly, so, you know, let's back up. So the very first thing that my kid did ever, actually, no, I forgot about this.
Starting point is 00:34:22 Thank you. So the very first thing I think my kid might have done with programming is i have an old lego mindstorms kit um it's probably like 10 years old or 12 years old at this point and lego mindstorms that interface is actually done by national instruments or was done by national instruments yeah yeah ni national instruments they partnered with lego and so the original mindstorms um ui which is a graphical base what was done by by ni and so it i mean your lab view thing is a joke but it's not a joke because it's the same the same company at the very least and we started we did that and my son you know we played with that and we made some made some sets and you know was able to control it um so that's actually where where he got to start i
Starting point is 00:35:05 guess even before this um i will say that you know as a as a professional programmer who's used to text-based programming languages it is very very inefficient or it seems very inefficient to have to like drag these blocks around you know if then else and you can't copy paste in the same way you can with other things and there's no version control there is no version control how old do you think he'll be when you introduce him to version control he already knows enough to uh to save projects as he's working sometimes if he's going to go and like try the next tutorial he'll save off uh save off like version one version two sometimes so at the very least, there's that. You're teaching him to be an electrical engineer?
Starting point is 00:35:48 That's true. No, he's teaching him to be any sort of creative worker. Yeah. Put the Photoshop, final, final, final. Final, final, four, final, really final. Yeah. One of the other cool things about Scratch, though, is that Scratch is a platform. They have made it... If you want to share your Scratch project on the Scratch website with anybody,
Starting point is 00:36:10 then it is, open source is the wrong word, but you share it and people can see the running program and interact with it. And then they can click see inside and then they can remix it, meaning make their own copy of it. And then they have their own copy of what you did. And they can go in and see it and poke at it and see how it's done. And it reminds me very much of the web and HTML, circa 97, 98, where you could do view source. And there wasn't much magic beyond that. So you could go and learn whatever you wanted if you were patient enough to go see how someone else, by seeing how someone else did it. So Scratch has very intentionally made that their default.
Starting point is 00:36:50 Like that is if you share stuff, other people can see it. And that's by design. And that's just wonderful for remixing and sharing and just passing along creativity. That's cool. Well, do you have anything else on this topic you would like to share? I think that's probably it it's i see people you know a hacker news scratch will come up or grab you know programming languages will come up it's specifically block based typically for kids and very i'm assuming well-meaning people but geeks will say oh it's it's bad to to you know teach kids these bad
Starting point is 00:37:24 habits that they'll learn to block based languages because then they don't have XYZ features or then they learn sloppy habits or it warps them somehow. These are people who have an idea of what being a professional programmer means and what skills they're needed. And they think that doing something with scratch with this you know not quote-unquote professional programming environment will will damage or will hinder the later learning of people and i you know maybe there's data on that maybe that's objectively true but i find that extremely hard to believe
Starting point is 00:38:01 just seeing the amazing creativity that comes out of kids. My son is part of a scratch club with a bunch of other kids from all over the place, and they meet on the weekends. And it is amazing to see what, you know, six to 12-year-olds do or five to 13-year-olds do. And they are expressing themselves. They're getting this, you know, little dopamine hit as they're making stuff and showing other people stuff. And some kids go deep into the art and some people make stories and some people make games. And I see nothing but upside there. And there's nothing in it that I think prevents future learning. I think it inspires kids to be like, hey, I can do cool stuff with a computer. And, you know, I'll learn a little bit. I'll get tricked
Starting point is 00:38:42 into learning a little bit of Boolean logic on the side. But, yeah, I see it as just a positive. There's no way to do that. There's no way to do education without making things simple and building on it, which necessitates learning sometimes what people consider some bad habits. Like, oh, yeah, you did it that way, but that was the simple way, and here's a little more complex way. I mean, we all have to do that.
Starting point is 00:39:09 I know that quantum mechanics is true, but I'd never use it in my daily life. I'm just saying the simplifications are important. You're typing on a quantum mechanics machine right now. It's physical. But do you... Sorry. Do you have one of those new quantum computers at home there? No, it's how semiconductors work.
Starting point is 00:39:33 I know. Doesn't matter. I understand. But you don't start kindergarten with wave theory. For good reason. Do you want first graders making nuclear weapons i'm not going to answer that it's all for our own good yeah i mean it's some element of gatekeeping i'm sure it's some element of you know back in my day we had to learn with the commodore 64 manual
Starting point is 00:39:59 and that was good enough for me i'm sure there's plenty of motivations for it but yeah i i'm pretty sure it's, it's just all upside. If people can learn whatever, whatever they want. The other nice thing about scratch too, I think is that, Hey, I'm sure some kids are going to come at scratch and things like it and bounce right off. Cause it just has no appeal for them. And that's, that's fine. Like that's great. There's no harm in having tried it and being like, this is not for me. Right. There's there's plenty of there's plenty of parent. Yeah. Parenting books and most parenting literature and other things basically make it sound like there is only one way to sleep. Train your child. There is only one way to potty train your child.
Starting point is 00:40:36 There is only one. There is normal development and then there is abnormal development and it acts as if it acts as if you know we have we have far more control and agency than we actually do and so i think this spills over into a lot of non-parenting stuff too but look some kids are going to like it some kids are going to hate it and if they can try soccer and scratch and flying kites and running and cooking then they'll get to figure out what they like or what they don't like hopefully at an an earlier age, then you or I was exposed to programming or pretty pictures on the screen. You mentioned that he's part of a club that's five to 13. That's an age range that I don't think of kids mixing in. Yeah. Yeah. This, this is a group that we found, we found kind of like-minded uh folks on facebook actually and
Starting point is 00:41:25 so these people are all over the country um and it was just kind of an open invite like hey show up if you want to do this and so the kids do that every you know every once a week on zoom and uh yeah it's a pretty good age range it's it's all random a couple. A couple of parents in the group organize it and run it. And they are doing amazing work to corral five to 13-year-olds and get everyone playing nice together to help kids' problems and let kids share what they want to do or share what they want to share and keep everyone from talking over each other. Yeah. All right. Well, that's about all the time we have. I have this other topic here
Starting point is 00:42:10 about the Joel test. Let's see if we can do the 12 steps to better code in less than six minutes. Go. All right. The Joel test was written by Joel Spolsky, who was a pretty influential, you know, early internet geek company founder. And he made Fog Creek software. And he also was the founder of one of the founders of Stack Overflow, should you work at a company?
Starting point is 00:42:45 And it's 12 questions that you can ask a company when you're interviewing to say, should I bother working here? And if you just Google the Joel test, you'll come up with it. But it's, do you use source control? Can you make a build in one step? I'm sorry, I shouldn't make you go this fast.
Starting point is 00:42:59 We should actually talk about this. Oh, I was going to go. No, I know. And I totally set you up for that. But now I'm saying slow down. Oh, I was going to go. No, I know. And I totally set you up for that. But now I'm saying slow down. Oh, okay. Unless you really do have to leave in like five minutes. No, no, I've got time.
Starting point is 00:43:12 It's the internet. Time is a construct. Okay, so Joel, good introduction. And then these are the questions you ask before going to a company. Because if the answer to these are no, you need to wonder if this company is, I don't want to say on the level, is a if a company is not a software company, then you want to make sure, you want to make doubly sure that these questions are answered in a way that you're happy with, as opposed to a software company. You want to see, do they value what I do? Am I going to be set up for success at this company? Or is this a hack and slash type of a programming shop and they're just going to burn through me as I burn out?
Starting point is 00:44:04 Okay, so the first one is, do you use source control? That's right. That is the first one. Which, I mean, can you imagine? Follow-up, is it RCS? He actually mentions CVS, because this is from 2000. And believe it or not, there was a time before Git, and believe it or not, other previous version control systems actually worked. I know that people hate them, and they will no doubt have valid concerns about them.
Starting point is 00:44:31 But yes. SVN forever. SVN is great. Look, I still manage all of my.csh,.hrc,.bash,.rc files in a RCS directory that I leave in my Dropbox, all right? RCS directory that I leave in my Dropbox. All right? RCS. For those who don't know, RCS was the... OG. It was predated CVS.
Starting point is 00:44:53 OG. And it was very simple. But yeah, that was the first source control I used to. Have you ever gone to a company that didn't use source control? I have not. I have. I know of many companies that didn't use source control? I have not. I have. I know of many companies that didn't. You have.
Starting point is 00:45:08 What happened? Are they still in business? Day one, install source control. Does it count if you were there before the company had software and you were the person who set up the source control? So technically, no, they didn't have source control. Mine had software, but not source control. And they had many directories.
Starting point is 00:45:28 Many, many directories. I don't think I've done that either. Okay, so the second one is, can you make a build in a single step? Push-button builds. Push-button builds. And this is basically, how easy is it to do that? Because if it's not easy, it will break every single time. And if it's a series of 37 different steps
Starting point is 00:45:54 that you have written down on a couple of sticky notes in your desk, you're gonna screw it up. And then if you're out sick, well, then ain't no one can do it right. So basically it's a forcing function to say, look, you've got to have a single thing you push, and then the build must get out the door. And it means that all, you know, I'm reading through his stuff now, like all the if-devs get compiled the right way.
Starting point is 00:46:15 All the things that need to happen, happen. So that you can hand it to any old intern, and it works. I definitely have some where you can't do the final manufacturing build without some special hand waving but that's because there's security involved and not everybody has access to the keys um and i guess i have been places where you had to at least do two or three steps yep yep i mean with the manufacturing build stuff then i i you know ideally you would have two different builds that you can make in one step where one step is the well i should say one build is the dev build which you can actually build everything because
Starting point is 00:46:55 maybe you don't need you know don't need the secret keys for that one or maybe you just have a developer you know a single developer key that all your developer stuff works on. And then you have everything that all the artifacts are created via another build step that are then, you know, whether packaged or signed or whatever it is you need to do that requires the security hoops to jump through. Hopefully that security hoop is one more step and not seven steps. And it's in a script that's checked into revision control and not written on a wiki page or written on a sticky note i will admit to the wiki page having happened as recently as 2003 as recently as 2003 oh wait a minute i'm sorry 2013 okay i was gonna say 20
Starting point is 00:47:42 years ago it's past the statute of limitations. You're fine. Time travel. 2013 is coming up on. Yeah. It was coming up on. This should be done with the script, but I hate writing scripts, and I'm sure if I do this, somebody else will come and fix it. Yeah.
Starting point is 00:47:58 Which is rude. Any documentation is better than none. Any documentation that's computerized is better than the sticky note in your desk. As long as it's revision controlled. Okay. Number three, do you make daily builds? See, two and three, this can you make a build in one step and do you make daily builds. Continuous integration servers with build on commit, they solve this problem yep absolutely absolutely this is again
Starting point is 00:48:27 this is 2000 so this is 20 almost 23 years old at this point so they're definitely there's a little bit of aging here however the the whatever time period you're in 50 years from now you still you still want to make sure the company actually and the software gets built on a regular basis gets tested on a regular basis and gets tested on a regular basis, and gets as close as you can. Like I realized in the web world, you can actually just click deploy. In the physical hardware world, it's harder to just click deploy. But if you can get it to just actually deploy to your, you know, your dev robots or your dev boards around the building, then go as far as you can go to make it really CICD.
Starting point is 00:49:05 Okay, number four. Number four. Do you have a bug database? I don't know. Is this common? Do people not have bug databases? Do people just use Excel spreadsheets? Do people just use stuff in their heads?
Starting point is 00:49:18 The company that didn't have version control didn't have it. This is more common than not having version control, yeah. But I think I've only been to really small companies that don't have it. It's more common than not having version control, yeah. But I think I've, I don't, I've only been to really small companies that don't have bug databases. Yeah. Yeah. And it's because it's only one or two engineers and they're at the beginning of the project
Starting point is 00:49:34 and. And everybody knows what's wrong. And, I mean, don't we have to write some code before we have bugs? No, it turns out you have a giant bug. Right. Your code doesn't do anything. Jira ticket number one. Exactly.
Starting point is 00:49:49 Make product. Make product. Done when product ships. All right. So far, these are all applicable still. Yeah. Yeah. I mean, they look a little bit different, right?
Starting point is 00:50:00 They have a little bit of a patina, an aged patina on them, but I think they still conceptually hold together. And, I mean, this whole bug database, if you're using GitHub, the answer is yes, you have a bug database. Or Bitbucket, or many of these have bug databases that are just part of version control. Bugzilla's still around? I used to use that. Yeah. Is Bug's still around? I used to use that. Yeah. Is Bugzilla still around?
Starting point is 00:50:27 I don't know. I used it as recently as 2013, actually. In 2013? Was this some sort of cutoff point? Maybe we were at the same company, Alicia. No, 2013, 2014, I think we had Bugzilla. Yeah, I think 2013 is when Git finally took over the world completely, and then all the ecosystem around Git, the Jira and GitHub and GitLab and all that stuff sort of, I mean, because yes, these are still applicable things,
Starting point is 00:50:53 but it's gotten a lot easier to kind of just, okay, I'm going to be in the Git universe and therefore I get continuous integration maybe. And source control tracking and bug issue tracking and all that stuff for free. Not for free necessarily, but all together. Yeah. Six.
Starting point is 00:51:12 Well, actually, we're still on four. Four? What? In the quiz, the 12 steps. 12 steps? Sorry, the 12 steps. 12 steps. Sorry, the test.
Starting point is 00:51:35 It does specify that a bug database has to have steps to reproduce the bug, the expected behavior, the observed buggy behavior, who it's assigned to and whether or not it's been fixed. That's not the bug database. That's the bug reporter. But for every... The following data for every bug needs to have... Every bug needs to have
Starting point is 00:51:51 these pieces of information. And that... That's never happened in the history of computing. I mean, I try to write bugs that have the repro method and the expected behavior and the observed
Starting point is 00:52:07 behavior, and I am shocked at the number of developers who don't put in that information. Yep. I feel like you should get points just for including the word repro in any bug report. That's like half of it right there.
Starting point is 00:52:23 Repro can't. Can't. Repro. Occasionally. in any bug report like that's that's like half of it right there repro can't can't repro occasionally i have a bug right now i have a bug right now that i believe i have fixed at great toil to myself but i have not seen it happen all i have is a screenshot from somebody else from two months ago where they said this doesn't look right so you get to imagine what could have caused the screen to look like that and then so now i have other people at the company saying hey i've been asked to qualify this how do you reproduce it and say i don't know go talk to this person who set the screenshot yeah and then yeah yeah reproro instructions are gold. It's like feedback.
Starting point is 00:53:06 It's gold. Sometimes if you can get them, they're great. If you can't, eh, yeah. This is not one I would eject a company over. Besides, you're not going to be able to see this. Well, you can ask. You can ask, you know, tell me about the last 10 bugs you have and sometimes sometimes sometimes companies like i know i've been a company where there is a constant pressure to listen people we waste everyone's time if we don't have repro instructions and it's one thing if you can't repro it because it's a weird heisen bug it's another thing if yeah but it's annoying to write
Starting point is 00:53:39 down the seven steps well guess what like we're all adults here please write this down so we can have hope of fixing it you know what else is annoying the bug yeah okay so numbers five is what you ask during your interview when they say do you have any questions for me and you say so do you fix bugs before writing new code yeah this this one this one is is the toughest one to talk about i think because i don't i've never worked somewhere that fixes all bugs before writing new code not realistic oh it's totally i don't think this one belongs or i don't think this one is a good test of anything i mean if if the company never fixes bugs then then yes, that's a problem. But there's something called, you know, priorities. Yeah. Yeah.
Starting point is 00:54:28 Now, so one of the things that I absolutely loved about Joel and his writing is his writing was, I'm pretty sure, intentionally provocative. Right. And so he has written 12 questions, which are, I'm going to say a little tongue in cheek. I don't think, I think he means each one, but I, you know, he's not, I don't think he would actually say a company will burn to the ground if they don't fix all bugs before writing new code. And he he's, his prose is excellent. Like the books, Joel and software and more Joel on software, collect a bunch of his blog posts from probably the early two thousands. And they're, they're both well worth, well worth reading. They're actually a great book the early 2000s and they're they're both well worth well
Starting point is 00:55:05 worth reading they're actually a great book club book for work because they're not super technical but they they they have great statements in them that are provocative and that you can have great discussions around i think like should we fix bugs before writing new code well his point is the earlier you fix a bug the faster and less expensive it'll be to fix that bug. So if you write a bug and you fix it two seconds later, okay, your head still has all the context necessary to fix the bug because you just created the bug. You just noticed the bug. You just fix the bug. Bing, bang, boom, you're done. I mean, for some bugs, you know, you wait a week and your memory is a bit fuzzier. You wait, you know, a month and you shipped the code, then suddenly you have to
Starting point is 00:55:46 somehow page swap in, you know, a month old version of your memory, or maybe you're not at the company anymore. And now other people have to figure out what you were thinking a month ago or six months ago. And so basically, you know, earlier is cheaper in terms of bug fixing. So I think there's a good discussion around this. That doesn't have to be like, literally, you don't write any code until you fix a bug. But what is, what's the intent? What's the intent with how we prioritize bugs versus new development? I think is a great conversation to come out of this question. I think sometimes it's hard to figure out what's a bug and what's a feature.
Starting point is 00:56:20 Some of the bugs I get are basically features I'm not done with yet. And so those don't really count. I can't write those before I have to implement the feature. The reason this thing doesn't show on the screen is because we haven't written the driver to talk to the device that gets that data. That's not a bug. Yeah, that's like a development stage expectation problem. So, yeah, that one.
Starting point is 00:56:51 Although, I mean, for these, there are 12 questions, and nobody expects 12 yeses. Lower than 10, and it's a little worrisome. And lower than 5, you should be questioning what you're doing. Yes. Okay, so number six is another one a lot of people are going to laugh at. So seven, wow, we're getting into this section of nobody. Okay, number six is do you have an up-to-date schedule?
Starting point is 00:57:19 Yep, and do you have a spec is the next one. I think maybe we can do two for one here. Both of them I feel like most programmers will laugh at. And in the days of Agile, I mean, these are both definite no's on purpose. That is true. That is true. Although I'm sure Agile people are probably screaming at us right now because that means we're not doing Agile right. Which I feel like is what most agile practitioners love doing
Starting point is 00:57:46 most is telling you you're doing it wrong um not that i'm not that i'm biased or anything um yeah so do you have an up-to-date schedule the the thing that i like about this is that he you know what is his quote his quote his program is notoriously crappy about making schedules it'll be done when it's done. They scream at the business people. Now this schedule is a engineering driven schedule. This schedule is engineers are saying, okay, here's the work that you want me to do. I will have it done in six weeks. That, that is what, that's what I think. I think that's where he's coming from on this one. And I think his stance was basically it's irresponsible as a, as a professional software engineer to not have a schedule because the business needs to know when the code will be done.
Starting point is 00:58:31 Now, does this mesh with agile? Probably not. But I've always worked on projects that have schedules that need to hit deadlines because you run inside a business. Not I've just never worked in the web world. So maybe agile is easier. I don't know. But I think that's where he's coming from with the schedule and with a spec you know a spec is a nebulous term but like do you do you know what you're building or will you just know it when you see it and does this i haven't read this in a long time and i don't have it in front of me is spec the description of the software you're building, or is it the requirements, or is it both? Because there's different things.
Starting point is 00:59:12 It's the design stage document of what you intend to be building. Because I think it's a bigger red flag when there aren't some requirements. Yes, yes. Spec indicates I know how you're going to solve, how I plan to solve this. Requirements are... What am I solving? Are the business input of what am I trying to solve?
Starting point is 00:59:35 Yeah, I think this one is more the sort of, I think he calls it, what's he, I think he calls it functional specifications. He has a whole series on this. And it's what should should be doing like how how will it work it's the code in prose yeah i don't think it's even that that level i think it's more like all right how how is it how what is it supposed to do you know how is it supposed to be backwards compatible and i'm looking at the article now um what are the file formats
Starting point is 01:00:04 it's supposed to support it's basically what it's supposed, what are the file formats it's supposed to support? It's basically what it's supposed to do. I don't think it's supposed to be, you know, here's the code in prose. I think it's a level above that. But there's two different things in it. There's what's called a PRD or an MRD, product requirements document. Is that a spec? I don't know.
Starting point is 01:00:27 We can get a little fuzzy there. I mean, usually places, there have been places that have been pretty loose on this, but usually there's some stuff. Yeah. I don't know, wiki or Confluence. But sometimes it's just one person. And it's hard to keep up to date because things change. Yeah. So it depends on what kind of company you are.
Starting point is 01:00:44 If you're a medical device company, you better have a spec because the government would very much like to see it. No, no, it's all just a prototype until we're done. And then we'll write spec post facto. Anywho. Number eight, do programmers have quiet working conditions? This has always been my favorite. This, yes, yes. This is basically realizing that noise and interruptions
Starting point is 01:01:13 causes people to get out of the zone. And you are literally paying people hundreds of thousands of dollars a year, in some cases like Silicon Valley salaries, to produce, hopefully, code for you. And by interrupting them every 15 minutes with sounds around the office, you're literally just costing yourself money. Yeah, well, I mean, this has been discussed at Infinitum,
Starting point is 01:01:37 but I think Dennis brought this list up at one company we were both at together and tried to show management. And I think it got us an office for three of us that we could close the door for. Yeah, it did share. Because earlier the company had decided, you know what would be cool? Is if we, for camaraderie, we intermixed departments a little bit more. So let's put some of the engineers interleaved with the sales and marketing people. The people who were on the phone all day?
Starting point is 01:02:03 The people who were on the phone all day with their conference phones turned up to a thousand and shouting in their phones so so yeah it was uh it was not great but yeah it's it's i yeah people need to be able to think that the ship the ship has sailed definitely with you know the open office plans of of i was gonna say now but really it's more like yesteryear. I'm not sure. With remote work, being working at home, being more work-having, then, you know, some of us can hope to have this happen some. Okay, number nine. Do you use the best tools money can buy? This one kind of shows its age.
Starting point is 01:02:40 I mean, if you're talking about hardware, then that's applicable. There's a lot of good tools that are free now. The point here is if your company is providing you with old computers and slow compilers, you're going to go surf the web. And every time you do that, you're going to lose focus. And so you should have the debugger. You should have all of the tools you need and they should work. If you're using OCD with an off-the-shelf, random,
Starting point is 01:03:18 slightly buggy JTAG module on top of... Old Smokey. On top of Old Smokey and a GCC version that's five years out of date because that's the only one you know how to use. Everyone uses GCC that's five years out of date. That's true. You can't get away from that one. But yeah, I mean, the thing, it's the old penny wise, pound foolish, right?
Starting point is 01:03:42 Because we're going to save a bunch of money on these computers. So we'll get the thousand dollar laptops that are really slow. And then amortize that over, you know, 10 engineers wasting a month, a year of their time or more. And you lose that, you lose that savings pretty fast. Yep. Yeah. Whenever I read lists like this, or, you know, any of these kind of pseudo authoritative
Starting point is 01:04:01 posts by internet gurus, I always ask myself, why did they write this? And one of the reasons I think Joel wrote this and he would probably agree was to, is it's kind of an advertising tool. What he's also saying is, Hey, I run the, he ran this company called fog Creek and their whole thing, or one of their things was everyone gets a private office with a door that shuts. And he actually went to great lengths to show how in Manhattan, in Manhattan, real estate, skyscraper, real estate, they could make this, um, financially a good idea and financially viable. And they actually got some architects to design some kind of cool like spaces. So everyone got windows and a private office and it wasn't, it didn't break the bank. So, you know, by saying, do programmers have working, quiet working, just do you use the
Starting point is 01:04:44 best tools? That's sort of advertising to prospective software engineers. Hey, this is a place that values you, that realizes that you are the way that this company makes revenue. And we are paying you to that end. And we are going to spend other money to make sure that you get the most value out of your time or we get the most value out of your time and attention so i think there's there's the advertising aspect here too but he does have a highlighted uh sentence here about top-notch development teams don't torture their programmers and i've definitely been in some development teams that seem to think that torturing their programmers is part of the fun of running a business.
Starting point is 01:05:27 Yeah, yeah. Not places you should stay if you can help them, right? My profile place is doing that right now. Next one. Number 10, do you have testers? This one is interesting. I'm not sure if this one's aged well or not. I mean, you have software test organizations
Starting point is 01:05:48 or software quality organizations, or maybe you call them DevOps or whatever. One tester for every two to three programmers. Right, that's his ratio. Wow. I've been in that situation, and it is wonderful. That's true. I mean, LeapFrog had the best testers.
Starting point is 01:06:04 But I haven't had a tester in a long time. Do we have... I'm not going to say because I can't remember well, but I'm trying to think. The last time I interacted with a test organization was one of those small companies where we had, you know, we had
Starting point is 01:06:19 at a couple places, we had the tester sitting with us, same group of cubes at the same office, and we talked back and forth during the day. It was great to have that kind of function integrated into the team rather than be something across the building. It's like, okay, I finished my weeks of stuff,
Starting point is 01:06:40 and here, go test it. Yeah, you throw it over the wall kind of thing. Having the people who are going to test your code like sitting with you as you design the code um you know i mean frankly if you can ask okay here's a new feature i need to design or here's a new you know thing i need to add how will i know it's working how will we test it you add that up front and it's going to make it it'll make it easier to test for one thing and you'll probably uncover a bunch of requirements or assumptions that you had that maybe aren't valid or you know gaping holes in your understanding because until you can define until you can tell someone okay how will you know if this thing works or not you probably don't understand it well and having a
Starting point is 01:07:19 tester there helps to force it's kind of a forcing function to help you ask that question up front and by the way actually to do the testing and tell you when you're wrong and let's face it engineers are very bad at testing their own work yes oh and he's also saying that testers cost one-third the price of engineers that's and i have to wonder about that i don't think that's depends on the test what i would pay them yeah i yeah that that that when i saw think that's... Depends on the tester. It's not what I would pay them. Yeah, when I saw that, that's the part I'm thinking, was that true in 2000?
Starting point is 01:07:50 I mean, that's a relatively unskilled tester. Yeah, that sounds pretty manual. That's not somebody who's going to review your code. Yeah, I don't know what he's talking about with that. That's very strange. But, I mean, the testers I had about with that. That's very strange. But, I mean, the testers I had at LeapFrog didn't review my code, but
Starting point is 01:08:10 they sure, I mean, I definitely, every time we finished a toy, I took them out to lunch because they did so much good stuff. A third is, yeah. That's, that's... Okay, number 11. Do new candidates write code during their interview
Starting point is 01:08:26 would you hire a magician without asking to show you some magic tricks of course not i love that example yeah but i'm not hiring a magician so that's why you want to ask new candidates to show you a magic trick during the interview exactly yeah i i have extremely mixed feelings about how to interview people. Now that more people have GitHub portfolios, this is a little harder. And I guess the whole, it takes 20 minutes to do basic coding just to make sure you can is
Starting point is 01:09:03 important. But the take-home tests that last four to eight hours, those are just wrong in my book. Yeah, I'm not a fan of that. I will say that I am still surprised how many people can't do FizzBuzz when given an hour and fizzbuzz similar questions that's where i sit with the thing it's like ask something simple and if they get it then great and then maybe you can ask something more intermediate but i've just sat through so many interviews where it's like okay here's this thing with complicated you know it's got dependencies like at fitbit when i was interviewing ios developers and i kind of was a fly on the wall interviewing iOS developers. I had a co-pilot who
Starting point is 01:09:49 actually knew what they were doing, and I was still learning. But I mean, the kinds of questions they were asking were like, okay, I've got to understand huge things about maybe frameworks that I haven't encountered yet, because they just happen to use them here. I don't know. I just think it's so lost in can you do what we're doing right now, this instant, on our code base. But that's not what you're looking for. No. Because you weed out a whole bunch of people who could pick it up in three weeks.
Starting point is 01:10:21 Yeah. Interviewing is hard. There no like magic formula to it but you you want to you want to have some basic level of you know software engineering competence um but yeah they're not going to be they might be productive day one but you're going to have a bunch of assumptions and your code base is probably five years old or 10 years old and it's not fair to expect someone to come in off the street and understand the random framework you have. And if they do understand it, then that's telling you that they happen to use that framework.
Starting point is 01:10:53 That doesn't tell you they're a better software engineer than someone who hasn't used that framework. There's that, and then there's also coding is not something you do in front of a whiteboard with somebody tapping their pen impatiently waiting for you to come up with the answer in 10 minutes. Yeah. It's a completely different milieu. It's not how you do things. But this test, this test is asking not, the test is not saying any, these are the questions you're asking a company that you might want to work for.
Starting point is 01:11:28 Yeah. The only company that I went to work for that did not ask me a coding question was the worst company. I lasted six weeks. I've been asked coding questions at probably 50% of the companies I've worked for full-time. And so, I mean, not since I've been a consultant. That doesn't count. No, I know. So you've worked at companies where...
Starting point is 01:11:56 But I knew people. See, I was brought in. You were brought in because people had already seen your code. Yeah, yeah. I mean, it gets harder the more senior you get, too, because there's been a lot of times I've interviewed people who have resumes longer than a football field, who've obviously done many things, and they get miffed.
Starting point is 01:12:14 Yeah, I don't get that. I've seen people get miffed, and I have a nice little speech about how this is just what we do, and I'm sorry if you can't answer it, that's fine. What about the questions that Shototspotter asked me? I got miffed at those. Because they were stupid questions. Okay, all right, just checking. I don't care how many pluses you put after the I.
Starting point is 01:12:34 After you've put two and you haven't stopped, the answer is this code sucks. I don't care what it does. Did they ask you a post-increment with 18 pluses? Yeah. Is it legal? What would it do? Yeah, and I said I'd fire you.
Starting point is 01:12:48 That was my answer. I actually said that in an interview, and I think that was when I lost the position. Yeah. Which is fine. It's for the best. Okay, the last one is, do you do hallway usability testing?
Starting point is 01:13:04 Yeah, so he's coming from the web world here, so I'm assuming. Yeah. I hope it's not a firearms company. I mean, some of this is the dogfooding. Yeah. Do you ever actually try your product? And do you ask other people if it makes sense? Yeah.
Starting point is 01:13:25 I'm trying to think. Yeah, let's see. I know, I think it's good. I mean, if it's feasible, it's good. So, like, consumer products, that's certainly something you want to do. Because, yeah, I mean, A, it's fun to use your own product. And B, it's a great way to find problems. Medical devices gets a little tricky.
Starting point is 01:13:47 But I did work at one medical device company that had an in-house clinic where you could go have the device used on you if you wanted. I never did. And then there was the networking companies and we did those, I mean, dogfooding. I always thought dogfooding was invented by those companies because they were always like, okay, we've got a router that's
Starting point is 01:14:07 basically working, put it in the, put it in the corporate network. See what happens. Yeah. But I think it's important. It's just hard to, it's hard to adapt sometimes depending on the product. Usability, I think is the big one. Like, I don't think some of the companies I've worked with lately have done good usability. Sometimes it's just a matter of taking a couple of screenshot printouts and saying, which button would you press here? What do you think, if you pressed this, what do you think would happen? And I remember, again, at LeapFrogrog they would have the looks like version of the toy
Starting point is 01:14:49 and a voice artist in there and the human would push a button and the voice artist would do whatever that was supposed to happen and those were the best that's funny that just sounds fun yes i did go to microsoft once and uh and they paid me to do some usability testing. I think it was for a phone. Maybe it was like the sequel to the Sidekick or something. I don't remember what it was. It was some consumer device like that. And they just had this pamphlet with like a three-ring binder.
Starting point is 01:15:19 And so I'd be pressing this piece of paper. And they'd go, okay, Okay, flip, flip, flip. Okay, now you're here. Choose your own adventure usability guide. Now, of course, you could mock something up a lot easier, I think. Not nearly as much fun, though. I want to test stuff with a voice artist in the room and then just tell them to improv it.
Starting point is 01:15:42 That would be fun. Did they dress up as the frog? No, they did not dress up. And yes, there was some improv because people always do things you don't expect. They don't dress up as the frog. I'm not interested. You must test your product
Starting point is 01:16:01 with house cats riding around on top of it, like regardless, like everyone knows that. That's just a tenet of the industry. All right, those are the 12. I think it has held up mostly, and you have to decide which of these things are important for you. I think there's some missing ones these days. What do you have that's missing?
Starting point is 01:16:20 I'd have to think about it, but I'm just thinking of recent events and companies and things and other stuff you probably want to watch out for. Things like how long do you spend with your butt in the chair each week? Yeah. I think, is the CEO a lunatic? It just may be a lunatic you're looking for. Nice.
Starting point is 01:16:48 I love that phrase whenever that word comes up. I'm all about random. Well, actually not random. I'm all about stupid associations. I think the Joel test, and honestly, again, like his couple of books and his writing is fantastic office place fodder to kind of talk about and get people's opinions and discuss, discuss hey do you have a spec do and then everyone will complain for a little bit but then it's okay why do we want a spec what's the important part of a spec and you have conversations like that and no we're not going to have a full you know completely nicely you know typewritten spec that fully defines each everything we're going to do but maybe we can surface our frustration enough to
Starting point is 01:17:24 say you know what if we just had this one thing, then that would make our lives 20% better. And so maybe out of that conversation, you come up with some new subspec or some part of a spec that, you know, we should start doing that. You know what, we should start triaging bugs differently. Because we know that if we put off bugs like this, it bites us every time. So you know what, let's take a week and let's go after those. Whatever. I'm making this stuff up, obviously. But I think there's value in answering these questions and talking about them with your colleagues. Even if some of these questions aren't 100% relevant as written, I think the thought exercise is good. I agree. I think the thought exercise is good and worthwhile.
Starting point is 01:18:10 Some of these things may be more important to other people. I do know people who don't care if it's noisy when they program. I don't know how they work, but if that's fine with them, that's fine with me, that it's fine with them, just as long as I don't... I love that for you. Modems. And...
Starting point is 01:18:32 I was hoping we might hear some of that acoustic modem on this interview, but I guess not. No. And for things like specs, you can write your own. When somebody gives you a feature or a bug, you can write your own little mini spec and see if anybody likes what you're planning. Specs don't have to come from other people. Yep, you absolutely can do it. And if you write it and if you put it on a wiki, and then if you have someone who's in software quality or test, you say, hey, I wrote this thing that describes what my feature is supposed to do.
Starting point is 01:19:09 Is that helpful? And they may take you out to lunch. Thank you for that. Right? All right. Well, it's been really good to talk to you. I hope the kid enjoys learning how to identify which companies he's going to work for. Yes, of course, of course.
Starting point is 01:19:28 It's Nintendo, by the way. He's going to work for Nintendo. That is the goal. And do you have any thoughts you'd like to leave us with? I have this quote that I have been, I learned this quote earlier this year, and I've been using it basically every week. And the quote is,
Starting point is 01:19:43 the biggest problem in communication is the illusion that it has taken place. And I'm going to say it one more time slowly because it took me a while to parse it. The biggest problem in communication is the illusion that it has taken place. So it's wrongly attributed to George Bernard Shaw, according to quote investigator, but whatever. Basically, when you talk or think you have communicated, frequently you haven't. And the message that you intended the person to receive was not actually received at all. And so it's a good idea to circle back and make sure that people heard what you wanted them to hear and that they can relay it back to you in a way that, you know, lets you know you're on the same page. Good advice. Our guest has been Christopher Svek,
Starting point is 01:20:30 director of software at some unnamed company. Thank you, Christopher Svek. Thanks for having me. It was fun to talk to you both. Thank you for listening and thank Christopher for co-hosting and producing. Christopher White. Yes, and thank Christopher Speck for filling in at the last minute when I had a scheduling mishap.
Starting point is 01:20:56 And thank the Patreon supporters for their support. And I guess that's it. I don't have a quote, so I'm just going to go with Speck's. Yeah, I think that's it. I don't have a quote, so I'm just going to go. You had a quote. Yeah, I think that's fine. Have a good week. Goodbye.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.