Relicans host, Aaron Bassett interviews Dave Bock about being a developer who made the jump into engineering management fairly quickly, running a non-profit for K-12 computer science education students, and his belief that as you rise in your career, it's often not about having deeper and deeper skills. At some point, it's about having wider skills, even if they're not as deep.
Should you find a burning need to share your thoughts or rants about the show, please spray them at firstname.lastname@example.org. While you're going to all the trouble of shipping us some bytes, please consider taking a moment to let us know what you'd like to hear on the show in the future. Despite the all-caps flaming you will receive in response, please know that we are sincerely interested in your feedback; we aim to appease. Follow us on the Twitters: @PolyglotShow.
Jonan Scheffler: Hello and welcome to Polyglot, proudly brought to you by New Relic's developer relations team, The Relicans. Polyglot is about software design. It's about looking beyond languages to the patterns and methods that we as developers use to do our best work. You can join us every week to hear from developers who have stories to share about what has worked for them and may have some opinions about how best to write quality software. We may not always agree, but we are certainly going to have fun, and we will always do our best to level up together. You can find the show notes for this episode and all of The Relicans podcasts on developer.newrelic.com/podcasts. Thank you so much for joining us. Enjoy the show.
Aaron Bassett: Hello, everyone, and welcome to another episode of the Polyglot Podcast. I'm your host, Aaron Bassett. And I'm joined today by David Bock. David is the Vice President of Strategic Development at Core4ce, the Founder and Executive Director of the Loudoun Computer Science Initiative, as well as an open-source maintainer, coach, mentor, conference organizer, and Java champion. Hi, David, and welcome to the podcast.
Dave Bock: Hi, thanks for having me.
Aaron: No, thank you so much for joining us here. I should explain to anybody listening at home my hesitation around your business name. [laughs] It's like, Core 4-C-E. So I'm taking it's like Corefours. Is that right?
Dave: It's Corefours. That's correct. The story there is that the company has four core areas around their business. So they thought Core4ce was kind of clever. When a friend of mine came up with that, I kind of teased him about it. It reminded me of in the movie That Thing You Do!, the band was called The Wonders, but they spelled it with O-N-E-D-E-R-S like Oneders. And everybody called them the O-neders.
Dave: When you see that, people are like core…they stumble over it. It's like, "Core 4 CE, Corefours. Oh, I get it."
Aaron: Yeah. My first time reading it, I was like, okay, so it's Core4c? Core…I went down the whole Coreace route for a second as well. And then I was like, no, Core4ce, okay. I think at my first ever development job; the company had the number two at the start of its name. And the reasoning behind that was anytime you went to any of these web agency listings, they were always done kind of alphanumerically, so they would always be at the top of the list. [laughs]
Dave: Be at the top. It's kind of like the old Acme in the Road Runner cartoon.
Aaron: Exactly. Well, with my name being Aaron with a double A, unless somebody is called Armadillo, I'm always going to be at the top of any list alphabetically as well. [laughter] So while we're on the company name, why don't you tell us a little bit…you are VP of strategic development there. And you've just recently started as well.
Dave: Yeah, I've been here about four months. In some ways, it's like coming home again because the two managing partners and most of the senior leadership are from a company that I worked for in the mid-'90s through the late 2000s. So it's kind of like coming home again.
Aaron: Oh wow. It's like a little reunion. [laughs]
Aaron: It's incredible how that happens so often. Our industry is so small, so, so small. I'm currently working with two people from previous companies that I worked at. [laughs] It just seems to rotate through different teams all the time.
Dave: Right. In fact, I'm building a small team here. And my first hire was somebody I've worked with on and off for 20 years.
Aaron: Those networks that you build over time is why it's so important for those kinds of reasons. You never know when you'll be working with somebody again or building a team. And having that pool of people that you know and that you trust, and they're in your network or can recommend people outside of the network is obviously really beneficial as well.
Dave: Yeah. Well, I don't think I've interviewed cold for a job since probably the early '90s. Every job since that has been some kind of a referral or connection. And that's all from all the user group and the continuing education stuff I do.
Aaron: Yeah, that's a big part of it as well. Obviously, me being in developer relations, that's literally part of our job is to be attending these things and building those kinds of networks. But yeah, it's been, I would say, probably vital for my own career, too. Speaking of careers then, so you've been a developer for, fair to say, a considerable number of years.
Dave: I consider the start of my career-long before I was in college. Because when I was in high school, I was paid pretty handsomely to maintain a bunch of spreadsheets for an investor on an Apple II Plus when I was in high school. But yeah, I graduated college in '92. And I've been formally a software engineer since.
Aaron: Do you have a traditional kind of path into tech then? Did you go like the…computer science or some kind of computing degree?
Dave: It might be kind of traditional now. But I was a little odd in that when I was young, like six, seven years old, I had an older brother. And I was always taking apart his electronic stuff. Like any guitar pedal he had, I would take apart. I played around with the little RadioShack build your own little electronic kits and all that kind of stuff.
And when I was nine, RadioShack came out with the TRS-80 Model I computer. And I saw it displayed at the store, and I wanted it. And my dad was like, "What is a kid going to do with a computer?" This was 1979. And he was like, "What's a kid going to do with a computer? These are business machines."
So he bought me the book that would come with a computer and said, "Prove to me you can do something with a computer, and I'll buy it for you." Well, I still have that book. I use it as a prop in some of my classroom activities. I taught myself BASIC and not modern but old BASIC with the line numbers.
And on my 10th birthday, I walked into RadioShack with him. And I typed a little program out that just asked, "What is your name?" and then said, "Hello, Dave," or "Hello," whatever name you typed. And he sighed and said, "Well, I guess I'm buying you a computer."
Dave: So I was ten years old in the middle of 1979. Nobody had home computers. And I was learning BASIC as a little kid. And I actually went to college for a few years as a music major, expecting I would graduate with that as a bachelor's and get a master's in computer science. But that was kind of a misspent few years. My heart really wasn't really in it after a while, and I switched to computer science. And so I guess that was from there on a pretty traditional career path. But it's just that it started so early. It was not common at all for kids to have computers back then.
Aaron: So one question I do have to ask, you talked about taking your brother's guitar pedals and things apart. You never actually mentioned putting them back together.
Dave: [laughs] I would try. And sometimes they did cool things, but they weren't at all what they were supposed to do.
Aaron: [laughs] There's always extra parts leftover anytime you take apart something like that.
Aaron: I always have this little collection left. And I'm like, okay, these are either breeding, or I've missed somewhere to put these screws. [laughs]
Dave: I remember when I was a little kid, I did take two phones, the old-style plug into the wall phones that you didn't own. They were rented from Ma Bell. I took two of those and a 12-volt battery and hooked them up to be an intercom system. So that worked pretty well.
Aaron: [laughs] You mentioned your first language was BASIC. My first was on the Commodore 64, the C64 BASIC. But there used to be computer magazines that you would get each month.
Dave: Oh yeah. And you'd type in the code.
Aaron: Yeah. The little pull-out booklet with all of the code printed in it. And you'd have to sit and type into the machine. And unfortunately, when my parents bought the computer, they never thought to buy any storage for it. So I didn't have the cassette drive for the first little while. So I had no way of saving the code after I typed it in. [laugh] So you would spend an hour typing a full computer game to play it for maybe five minutes. [laughs]
Dave: So that's kind of how I learned to program because my brother, seven years older than me, was always able to beat me at any game we played on the computer. And I would sit there for an hour typing them in just to have him beat me. And the computer specs then, 4K of RAM, you did not have the memory to have descriptive variable names. So the code was kind of obscure as to what it even did.
But I'm sitting there going, well, if x=3 and I have three lives, what happens if I set x=9? I'd have nine lives. And I'd be able to get a score that was higher than his. So that was my foray into programming, not understanding what I was typing but typing it in anyway and slowly starting to hack it apart.
Aaron: Isn't that how many of us started programming? Get something you don't quite understand, you make some changes, and you see what happens.
Dave: Yeah. And back then, computers were so much more approachable in that way. Because when you turned them on, you basically had a blinking cursor and had to program them to do anything. A modern computer, it takes a while before you can even get to a development environment.
Aaron: Yeah, I see that often people complaining these days. I'm primarily a web developer, and that's what most of my career was based upon. And I still remember a lot of what I learned was view-source. You went to a website, and they were doing something cool. You wanted to figure out how they did it. You viewed source, and you looked at the HTML, you looked at the CSS. And these days, it's just not really possible to do that in a lot of sites.
Dave: Right. Especially where the CSS is just generated away, and the HTML it's so obscure. You can't just look at the code and make sense of it anymore.
Aaron: Yeah. And everybody is so preoccupied with optimization that everything's compressed, not technically obfuscated, but it is through the process.
Dave: That might as well be, yeah.
Aaron: Yeah, exactly. We're kind of losing that ability to look at whatever people have done and learn from it there. And also, there are so many things to learn these days just to get started. It's no longer oh, so I write some code into this file, give it a .php extension, FTP it up onto my server, and it runs. [laughs]
Dave: I just got done teaching sixth middle school students how to program Arduinos, little embedded computer robot brain kind of things. And on one hand, they're refreshingly limited, and you can program it at a really low-level C. It's not hard to get started. But by their very nature, they have no input and output of their own. So you have to start with okay, let's make a light blink. Okay, let's make it button press. So you really kind of bootstrap everything up from there.
Aaron: So you obviously started in development. You started off with BASIC, got your first programming job in '92. Looking at your history, you were a developer for a while. And then you seemed to make the jump into engineering management fairly quickly.
Dave: Yeah, that started, I guess, late '90s, early 2000s. I was afoot in each world and kept it that way for a long time, bouncing back and forth, not trying to do both jobs at once. I'm a firm believer that you have to pick a swim lane. But I was working with another engineer who was pretty good at…he would do the tech stuff while I would go into management, and then we traded roles more than once. When I branched off with my own company and had a few partners, we had to play every role a little bit. This is development, developer, accountant at times.
Aaron: I think that's often the story in startups or in your own businesses is you have to wear a lot of different hats. What attracted you to even trying engineering management?
Dave: Well, I kept getting pulled into it because I was that extrovert engineer. I had always been involved in user group activity, public speaking. I think that's from my music performance background. I was never afraid of a stage. I was always a bit of an extrovert.
And I was always that engineer that other managers would come to say, "What's the ground truth? Can you explain this to me in terms I understand?" And gradually, that just led me into management roles. There was no real secret to it. It's just the direction my career took.
Aaron: And it often is the way as well. We know an industry we want to be in, and as opportunities arise, you take them. And it can go in different directions.
Dave: I have to say my first few times there was some spectacular failure to manage.
Dave: So you have to learn from that move forward.
Aaron: Yeah. Something I often find a little bit puzzling is that development and management are two very different skill sets. But in a lot of companies, it seems that their career progression for developers is eventually to move into management. And I'm a lifelong IC. Sorry, for anybody listening who's not heard the term IC before, that is individual contributor. I am not a people manager at all. I have no responsibilities for anybody else, just myself.
And I've tried the management path before. I've gone down that road. I've been an engineering manager as well. And not only did I not like it, but I found out very quickly I am awful at it. [laughter] I think I'm an okay developer. I think I'm pretty good at that part of the job. But I'm an awful manager.
And it just always puzzles me why some companies will take often some of their best developers and most senior developers and turn them into bad managers. Even if they're not always bad managers, they're going to be new managers, and it is a different skill set you need to learn. Do you have any insight as to why you think that is such a common path that companies take?
Dave: Well, I can speak from my experience. I mentioned a second ago that I had some spectacular failure. Let me tell you the first one of those. I had been on a project for several years. And the previous manager…there had been a string of managers on this project. But the manager for the year before used information to pigeonhole people and used it to keep his little throne of authority.
And when he suddenly was like, "Okay, I'm leaving," I told the manager above all this that "You know how they teach school children to walk out of a burning building calmly? That's what he's doing." Because he was saying, "Yeah, they just need to carry it over the finish line. It's almost done." But all of us were so pigeonholed.
Aaron: It's always a really good sign when a project has a…I think you called it a string of managers. [laughs]
Dave: Right. So as he was leaving, he was saying, "You know, they just need to carry it over the finish line." And my boss was nervous about it, or the boss above us was nervous about it. And he came to me, and I was like, "Everybody says their individual part might get done. But there's this big integration that we're all worried about. And we don't even know if we have all the parts covered." So as I was saying, I was always the extrovert that told the ground truth. And he said, "Well, now is your chance. I need you to pull it together."
So I started pulling it together. And we actually made that deliverable by the skin of our teeth. And it put me in a position where when I say by the skin of our teeth, this is the one I actually consider kind of a failure in that as we were building this thing, I still had my engineering legs on. So I was still seeing every little thing we found that needed to get done was something that I felt like I'm on the hook now for this. I need to do this.
So that other engineer that I mentioned that we traded rolls back and forth, he and I were burning the midnight oil. There were 2:00 a.m. sessions where we would just punch strong trying to get stuff done. Meanwhile, other people on the team were like, "Okay, if we can help out, let us know." And we were just crunching and crunching.
And one day, I was angry. Like, why are we the ones carrying all this burden? Where's the rest of the team? And he looks at me and said, "Well, Dave, it's your job now to delegate to them." And I was like, "You're right." And he coined a great term that it inadvertently created a culture of ignorance in that by taking all these things myself and not saying, "I can't do that right now, you need to do that," and trusting somebody to do their job, I had created the situation where it had to fall on my shoulders.
And that was kind of the moment of realization that I needed to be able to let go of that kind of responsibility of being the one that does it and being the one that builds the team that does it. So, I don't know; I guess I'm like a latecomer to this. But the rest of the world lately has been a big fan of the show Ted Lasso.
Aaron: Fantastic show.
Dave: Right. I know. But there's a moment in one of the first episodes where he's being grilled by this sports reporter. The coach says, "I don't care if the team wins or loses the match." And the reporter looks at him like that was some incredulous statement. And he is like, "You don't care if they win or lose?" And he's like, "No, it's not my job to win or lose the game. It's their job. They're the ones out in the field. It's my job to make them the best people that they can be." And that was a powerful phrase.
I realized that that's kind of what my job has been for years in building teams. I love to build teams. There are times where I need to let go and make sure that they have the resources they need, but it's up to them to win or lose that game. I just need to make sure that the field is groomed for them.
Aaron: And I think that that kind of comes back to what you were saying earlier as well about if you're going to be in that IC role, you need to be in that development role. If you're going to be in a management role, you need to be in the management role.
For a lot of people, if you try to blur the lines between it where you're doing some development and some management, then you do end up in a situation where you're not managing enough. Instead, you're trying to make up for the lack of delegation by taking on more development work yourself. You get to that point where really, you end up being the blocker for everything.
Dave: Right. In fact, the project that I'm taking on right now there is an existing project with tons of Python code, and I'm not a Python guy. Like, I could read it. But my career has been spent in Java and Ruby. Before that, it was spent even back in Pascal, but I know enough Python to be dangerous.
Dave: And that's actually assisting me with this project right now. Because I've told the team that I'm not going to be the one that takes a ticket and ends up blocking you from getting something done. I'm not going to be the one that you're waiting for a code review to happen, and I'm the one that's stalling you.
I will stay involved as I can in the text, so I know what's going on and can make appropriate business decisions to guide the product. But I'm not hands-on with the tech on the project I'm managing right now, which I think is a good place to be. I wouldn't have been comfortable doing this ten years ago.
Aaron: That's why I don't think I'll ever move into management. I enjoy code too much. And I am always going to be the person going, "Oh, I can pick up that ticket." [laughs]
Dave: Oh, believe me, I get that outlet in other ways. It's just not in the managerial part of my current job.
Aaron: [laughs] So with all these different roles you've taken on obviously moving between development, and management, and things, has there been a favorite role in your career, a favorite job you've had, or a favorite type of role shall we say? Let's not put you on the spot and make you call out your particular employer.
Dave: Sure. And this is why management suits me a little bit. I've always liked continuing education, career development, adult education stuff. It's how I got into running the Java User Group in the late '90s. I started the Northern Virginia Ruby User Group. I've been one of the people who ran the RubyNation Conference. I've been on a public speaking tour. And it gets to the non-profit that I run now for K through 12 computer science education.
I just love…in fact; I think I missed my calling. I love teaching so much in that age group, especially. I've always loved to be that person that is the person that grooms and creates a team of continual learners, a growth mindset.
Aaron: Maybe you should think about developer relations. My wife is actually an ex-teacher. She was an English teacher for a very long time and is now a second career dev. She made a transition into tech. And whenever she was just an engineer, she missed the education part of things and then discovered developer relations. And it is the perfect blend for her. She gets to use her history in education and her love for education and for teaching and blends it with her love for tech.
Dave: Oh, that sounds great. I think if I career switch, I'm going to become a high school computer science teacher.
Aaron: [laughs] Okay.
Dave: I've been to the Computer Science Teachers Association Conference for the last several years. High school computer science teachers we're not yet at the point where we have people that go to college to learn to be computer science teachers at the high school level. Right now, they are typically math teachers that fall into computer science or late-career switchers, people that have come from the industry to teach computer science to high school age.
Aaron: Yeah, it's such a trope that the students know more than the teachers when it comes to programming in schools.
Dave: Yeah, I've seen that happen but not the teacher I currently work with. I work with a fantastic teacher at a local high school through my non-profit. He's a good developer in his own right. He has been doing it a long time. He could sit here and hang with us about typing code from magazines.
Aaron: [laughs] I was a member of the…STEM ambassador for a while whenever I lived in Scotland. And it's a group where teachers can put in requests. It might be they're having a job fair, and they want somebody to come in and talk about a career in science. All the different requests we would have for any kind of people who are in STEM careers to come in and talk to kids. And it ranges in ages from 5 through to 15. And one of the most common requests we get through is, "I have 50 Raspberry Pis. I have no idea what these are. Could somebody come show me how to work them?" [laughs]
Dave: I've certainly had my share of "We have a bunch of Chromebooks and don't know how to manage them, can you help?"
Aaron: So before we move off to…I want us to get into your Loudoun Computer Science Initiative. It's a great initiative. I'm looking forward to talking about that in a moment. But before we move off the career questions, as it were, I actually got a really interesting question posed to me during a stream a few weeks ago. And I was wondering if you would have any insight to share on it as well.
And I was asked how to overcome what the person referred to as a senior developer plateau. They've been a senior developer for a while, and they just don't know how to make that push into staff or even principal kind of level. Do you have any advice there for them?
Dave: Wow, that's a great question. My first thought is as you rise in your career, it's often not about having deeper and deeper skills. At some point, it's about having wider skills, even if they're not as deep. So edge out. If you don't know anything about a functional programming language like Clojure or Elixir, dive into it.
Look around. Try to get that breadth of experience that you're missing when you spend your time as a senior engineer going deep on a particular skill set. Take that same attitude about domains as well. You might be in some business problem where you know everything there is to know about the company that you work for. Learn something about something else.
Edge out and teach. Because one of the things the higher you get up in your career is about communicating that knowledge to others. So look for ways to express that teaching, speaking at conferences, volunteering in schools. Joining a Toastmasters group was an accelerator for my career. And it took what I thought I was good at in public speaking and gave me a framework to really judge myself and strive to improve the way I could communicate. So all those are things I'd recommend.
And then I'm going to steal a page out of a friend of mine's book, a guy named Neal Ford. He and Mark Richards have a couple of books by O'Reilly on Software Architecture. The Fundamentals of Software Architecture and Software Architecture: The Hard Parts. And they make a point that software architecture is this critical thing that we all expect to know. But how often do we actually get to practice it?
Most of the times, we join a project that already has an architecture, and we need to just edge it out a bit. Rarely, I mean, we're lucky if it's three or four times in our career we sit down and greenfield a new piece of software architecture. So they have this whole approach to developing your skills as a software architect that's outlined in those two books. And O'Reilly even runs a series of contests around it where they'll throw out a problem of software architecture nature, and teams will get together out of the audience and compete to solve it.
Aaron: That's an interesting one. How do you grade a competition like that?
Dave: I'm in the middle of being a judge on one of those right now. And it's quite a challenge. As the judges, we come together and have to define a rubric based around, is there a narrative structure that holds it all together? Does it solve the business requirements? Do they do a good ilities analysis? Which is one of the things out of the book, looking at the capabilities, the architecture you build. What constraints do they find in the architecture? Did they make their point with good diagrams? So there's a rubric for all that. But then there's this kind of ineffable quality of do we like that solution?
Aaron: And I think that that's part of where being a judge comes into this as well. For any of these kinds of competitions or hackathons or anything else, there's that gut feeling from experience going yes, this is a good solution, or this is workable, or this is not. And I can't put my finger on why it's not. I just know that it's not. But yeah, that's kind of where the experience comes in when you're picking your judges, I guess. So you're talking about breadth of experience versus depth of experience. Have you heard of the T-shaped developer?
Dave: Yes. That's exactly the concept.
Aaron: I think that's a great tip. Also, you mentioned the Toastmasters.
Dave: Yeah. My approach to that…as I mentioned, I was a musician. I spent a lot of time on stage. I was a percussionist and classically trained. So it takes a certain amount of guts to be the timpanist that breaks into that violin solo when you're supposed to be the thunder on the ocean in Scheherazade or something like that. I'd be the guy you could hand a microphone at an event and just tell to me get on stage and tap dance, and I'd do something. I'm not afraid of being on stage at all.
And so, I was always one to public speak. And I was on a conference tour, and I thought it was making good points. I was a decent speaker. Then I started doing Toastmasters. And the idea of Toastmasters is to get what they call the competent Toastmaster award. There are ten talks that you have to give to an audience. And each talk has a particular point; one might be vocal variety, where you have to have a lot of variation in your voice. One might be using props; one might be using slides; one might be to use humor. Another would be to tell a story from your personal experience.
So they're ten talks, each with a theme. They have to be 5 to 8 minutes long. You also have to judge other people's talks. And then, every meeting, there's this concept of a table topic. Somebody will present a table topic that they will ask you a question, and you have the 12 seconds it takes you to walk up on stage and think of what your answer will be. And you have to talk for two to three minutes. And it's kind of what you're doing with me right now. You ask me a question, and I…it hones these skills in a way that's very targeted practice in these points.
And when I first started doing this, my reviews at that software engineering conference fell, and I didn't understand why. I'm like, I'm practicing. I should be getting better. And I got a piece of feedback that the talk was fine. It just seemed like a bunch of five to six minutes ideas that were all strung together disconnected.
Dave: And I realized I was building my talks like they were Toastmasters speeches and then gluing them together. So once I got that feedback, I was able to incorporate it back with my own presentation style. And this was at a software conference that had 90-minute sessions. So it was a long, almost like a mini-training session. And that brought me back around. And after that, it really increased my level of confidence on stage. I think I rose to the expertise I felt I had beforehand. So I think that having that kind of practice and that structured practice really improved me as a public speaker.
Aaron: This is the second time I've heard somebody recommend Toastmasters in this month alone.
Dave: I didn't mention the organization. It is an international organization, by the way. And if you just Google around, you will find local chapters. You will find local chapters where the point is. It might be comedians practicing. It might be public speakers that do it professionally. You can find a group that is tailored for you. And, of course, a lot of that moved virtually during the pandemic.
Aaron: That's fantastic. As somebody who obviously speaks for a living as well, that definitely sounds like something I should be involved with. I do have to say, however, as we return to in-person conferences and away from pre-recorded conference talks, the thing I'm going to miss the most is my teleprompter. [laughs] That has made such a difference to my speaking.
Dave: There are definitely some crutches we can rely on in recorded sessions that we can't when we're on stage.
Aaron: There are indeed. But I think it makes up the fact I personally…I don't know if you found it the same that recorded sessions are so much more difficult than live.
Dave: I miss the audience interaction. It was like that as well last school year because I volunteered in a classroom two mornings a week. And students, most of the time, had their cameras off. And it was really disappointing not having that kind of connection with students and see their faces light up as they learned something new.
Aaron: So on the topic of students, I think it's a good time then for us to talk a little bit about your Loudoun Computer Science Initiative, which you are, I believe, founder and executive director.
Aaron: So let's start off with just what is the Loudoun Computer Science Initiative?
Dave: Okay, so Loudoun Computer Science Initiative is me and several parents who volunteer in classrooms throughout Loudoun County. We've developed a bunch of supplemental and extracurricular stuff. We encourage students not just in the classroom but extracurricularly to participate in some coding competitions that take place at colleges nearby. We do extracurricular events at the library. Basically, just hold space with some students who want more than what's available in the curriculum.
I have students who are learning cybersecurity, students who double down on learning very complex algorithms. I have students who have built computers and not like modern computers with parts off of Amazon.
Dave: I have a student who just this year is designing the circuit boards around a retro computer based around a Z80 microprocessor. He has this little thing on a board, lights blinking away. It's got like 4K of RAM, 4K of ROM, and it does stuff. It's pretty cool to see it in motion. And really, I just give them the space to make that kind of stuff happen.
Aaron: That's amazing. And what made you decide to found the initiative?
Dave: So I have triplet boys. They're now 14 years old. Yeah, triplets.
Aaron: I couldn't even imagine that. Going from…at the moment where I have zero to three immediately just -- [laughs]
Dave: We were outnumbered on day one. And when they started kindergarten, there was an organization called WatchDOG Dads that had dads volunteering in the school system. The idea was you sign up for a day. You come into the school system. And sometimes you're in the classroom with your own kid. Other times, you're with a fifth-grader who needs to make up a spelling test, or you're helping a third grader with some math. Or you're in the gym helping the teacher split the class into two, keep score on a soccer game or something like that.
Aaron: Just kind of helping out where you can kind of thing.
Dave: Yeah, clean lunch tables, everything. And I was really excited when I started doing that. I was volunteering. I had my own company, so I could make my own schedule. I was volunteering once a month. Because with triplets, I had this feeling like if I missed something, I had missed it forever. There was never going to be another kid that I could see it next time.
And I was really excited because they had a computer lab. But everything they did with it was like 20th-century office worker skills. The kids would type papers. They would take tests on the computers. They would make birthday cards for parents. And there was nothing that they were doing that had software programming curriculum.
So the first year, I talked to what they call the technology resource teacher. And she was like, well, we don't have any curriculum. We can't really install anything on the machine. So there's nothing really we can do. The next year was the first year that they had the Hour of Code, which is this global effort to give every student an hour of computer programming experience. It's all browser-based, so there's nothing to install. It's all geared towards really young kids. Like kindergarteners can do some of this stuff now.
So we ran it with all the third, fourth, and fifth-grade students that year. And it was a success. The kids loved it. I live in a small town, and I was so excited when you'd see little kids in the grocery store. And they'd be like, "Mom, mom, it's the computer guy. It's the computer guy."
Dave: The principal got a little bit of local press out of that. And then, she hooked me up with an organization that was pairing software engineering professionals with math teachers at the high school level. And so I started volunteering at the high school level, pairing with a math teacher in the classroom a couple of days a week, helping to teach intro to computer science, and then computer science AP to high school students. I loved it.
It quickly grew into a passion of mine. I wanted to be able to do more. I started doing library events. I started organizing other parents. I started reaching out to the teachers at the middle school that were teaching this class called CAMS, Coding At Middle School. Then the teacher I worked with started to organize our high school students to go back to the elementary schools for the Hour of Code.
So we have this coming up. December 6th is Computer Science Education Week nationwide. They're running the Hour of Code across schools everywhere. And in my county, we have high school students go back to their elementary schools and volunteer with teachers to help the elementary school students learn the Hour of Code curriculum.
I'd encourage your audience to check it out. Go to code.org. Check out some of the lessons there. And if you can take some time off work, go find a local school to volunteer at. I'm sure they would like some assistance. Because I can tell you it's almost a stereotype that the middle school or the elementary school teachers come into the classroom, throw their hands up, and like, "I don't know any of this stuff." We need to model better behavior for the elementary school students.
Aaron: I can second that as being a STEM advisor. It's so out of their depths, and it's not the teachers' fault. In a lot of cases, it's just --
Dave: No, no, no. We expect a lot of teachers today. Believe me. That is a profession I worship. They work far too hard. I don't think most people realize. And I think that's probably the goal of the organization I originally volunteered with was to give parents a view of what really goes on in the school system.
Aaron: And so we should mention as well for people interested, you said the URL was code.org. Is that correct?
Dave: There are several you can check out. At this time of year, they all converge on this activity. But there's code.org; there’s csedweek.org. And there's hourofcode.org. And all those all converge on this week.
Aaron: So, unfortunately, we normally record these episodes a couple of weeks in advance. They keep our publishing cadence. So I'm not sure if it's going to go out ahead of December 6th.
Dave: Oh, that's fine. I encourage people to go figure out what happened and then volunteer for next year. You now have a year to get up to speed on it.
Aaron: Is it an annual thing? Is it a bi-annual thing?
Dave: It's an annual thing.
Aaron: It's an annual thing.
Dave: Yes, it's an annual thing.
Aaron: So if you are listening to this after December 6th, you hopefully will have plenty of time to go check out the URLs and get yourself prepared. Find a local school that you can help out with and get ready for next year's Hour of Code.
Dave: And it's actually typically the spring season that colleges nearby have what they call the HSPC, High School Programming Competitions. This is a loosely organized nationwide thing. So it goes all over the place where teams of high school students compete on rather difficult questions for these high school programming competitions. So they are ranked and scored and all that stuff. They're always looking for coaches.
And let me tell you, some of those problems are challenging. And it has made me brush up on programming skills that I have long since forgotten. Spending my years in web development, it's not very often that I had to remember how Dijkstra's shortest path works or law of cosines. But that kind of stuff comes up in these competitions. And that's my reason to be up to date on all that stuff.
Aaron: Once again, the students would know way more than I would. [laughs]
Dave: The best way to learn is to teach.
Aaron: Yes, very much so. They say you truly can't understand something until you can teach it to somebody else. So with all this time you've spent in the initiative and running these projects in schools and interacting with the students, you've already shared that really touching moment with the kids recognizing you in time. Has there been a favorite interaction or moment that has come from your work with the Loudoun Computer Science Initiative?
Dave: Yeah. God, there are so many. One of my favorite the first year we did this, the students were writing little programs on the computer to solve a maze. The idea the first year was there was this maze they had to solve. And they had Plants vs. Zombies and Angry Birds graphics. And they had to write a program to get the zombie to the plant. So the first problem started out like move forward, move forward, and then move forward, turn right, move forward, turn left, move forward. And then it gets into some conditional logic, if the path ahead of me is clear, move forward, else turn right.
And they end up towards writing an algorithm. It takes an hour to get there. But they end up figuring out on their own an algorithm that can walk a zombie through any maze to get to the flower. And you tell them that at the end that that just doesn't solve that maze; that solves any maze. And it kind of blows their mind.
And after we're done with that, they've seen the program they've written. It's a drag and drop like Scratch, Blockly, they call it. You can't make a syntax error. Well, I showed them a Connect Four program I wrote. We played Connect Four, and it handily beat a whole fifth-grade class. And I'm projecting the code up on the screen and talking them through it. And I'm saying, "Well, look, there's a lot more of it. But it's exactly what you were just doing. There are if statements. There are loops. It's everything you just did."
And then, I explained how the Connect Four game worked. That in Connect Four, there are only seven possible moves. So the computer says, "Well, what if we put one here? What if we put one there? What if we put one there?" And then it says, "Well, what would the next move be?" And there are only seven after that. So what's the next move there? And it just thinks that down like five or six levels, figures out what the best move is, and then does that move. And it can think of 1000s of games, 1000s of boards in just a second. And this one fifth-grade girl said, "Oh, so computers aren't smart. They're just dumb really, really fast."
Dave: And that is a quote I've used a dozen times in classes. I will have high school students that are frustrated. They can't get the syntax right. They don't understand this problem. They're struggling with it. And I'll tell them that "Remember, computers aren't smart. They're just dumb really, really fast."
Aaron: That's a great quote.
Dave: You're the smart one in this relationship. In this programming relationship, you're the smart one. You need to be smart for both of you. And the computer is not judging you. It just doesn't understand. You just need to explain it slower and dumber for it. And that encouraged them to get past that hurdle of the frustration that comes with programming.
God, there are so many. I was helping a student who won first place in the Virginia Science Fair several years ago, by the way, with an app for the phone that would, as you're reading a passage, it would count the number of times you blinked.
Dave: And it would keep track of tremor in your hand as you read it. And it was an idea he got from his mom, who is a diagnostic nurse working with Parkinson's patients. And I'm sitting in a Starbucks working with him. And we're trying to figure out how to compile OpenCV and download it to an Android phone and get it to Android to count blink detection. And his phone goes off, and he's like, "Oh, I got to go. My mom's here to pick me up." And I was like, "Your mom? Oh, right. You're a kid."
Dave: It's just like working with a young adult who could just as easily been somebody I work with professionally. The conversations at that level, you can forget you're working with kids.
Aaron: That's fantastic. I have to admit that I will probably use that line myself as well, that computers are just dumb very quickly. That really sums it up. It really, really does. [laughs]
Dave: I have to say that the high school students I work with I don't know if this is true of all high school students because the computer science course is an elective, then the AP computer science course is an elective on top of that. If they're coming to the library and doing after-school computer science competitions and the CyberPatriot competitions that we do, then they're opting in a third time to learn as much as they can. It's not like it's a typical student. I'm working with people who have the time and the energy, and the interest.
Aaron: Kind of a self-selecting group, really.
Aaron: Well, with that, unfortunately, we're coming up on time for this episode. I want to give you just a little bit of time as well to shout out any projects or things you're working on that you want people to check out. Obviously, we've talked about one of them already, the Hour of Code, and the different summer schemes that will be coming up at local colleges for people to volunteer at, whatever things you would like to shout out at the moment.
Dave: If you're interested in reaching out and talking about what a program like this would look like for you, I'd love to talk to you about it. When I started Loudoun Codes, it was specifically for Loudoun County because I wanted it to be someplace where I could personally make an impact. Any idea I've ever had, I've always tried to do something bigger and grander than I could actually pull off myself. But I wanted to keep this focused on classes that I could get into.
So there are other places that need this kind of activity and need local experts who can help. If I can help you pull that off, if I can lend you the curriculum or tell you a little bit more about my path, how I find teachers to work with, the modes of interaction that you can have with them, reach out. Find my website at loudouncodes.org. And I'd be willing to chat with people on how something like this could work for you in your county.
Aaron: That's great. Just to repeat for people, that is loudouncodes.org which is --
Dave: The spelling of Loudoun is a little strange. It's L-O-U-D-O-U-N.
Aaron: Honestly, researching this episode before, I was like, am I going to pronounce this correctly? [laughs] It's kind of like that Core4ce all over again.
Dave: Right, right.
Aaron: But yeah, we'll try to include these links as well in the show notes for those people who are interested. If folks want to reach out to you, your contact details are on that website; I take it.
Aaron: What about socials? Can people reach you on your Twitter as well?
Dave: Yep. So I'm pretty much Bokmann, B-O-K-M-A-N-N on any social media service you can find. So that's on Twitter, that's on GitHub. I think I have that one on TikTok as well, so anyplace, because it's a mung of my name, but it's always available. Any place I go, B-O-K-M-A-N-N is always still available for me to grab. So I never have to be like, David Boch 42
Aaron: I'm the most unimaginative person when it comes to usernames, so I am pretty much Aaron Bassett everywhere. And I've been very fortunate I keep managing to get them as being in tech, I'm normally a pretty early adopter.
Dave: You're an early adopter.
Aaron: I have discovered there are a couple of Aaron Bassetts who are also developers, and I feel so bad for them. [laughs] Every time they go anywhere to sign up, they must be like, "That guy's got it again." But yeah, I'm glad that you found a slightly more imaginative username for yourself that people could find you everywhere on. And just to repeat it, it is Bokmann as B-O-K-M-A-N-N.
Well, this has been an absolute delight. I appreciate so much your insights into your career path. And I've loved the passion you've displayed for education as well. That's been really fun to talk about. And it's very obvious to me how passionate you are about education and about the work you're doing with the kids at all levels. So I just want to express my thanks for that.
Dave: Well, thank you. And I appreciate the opportunity to talk about it.
Aaron: It's been wonderful. So for anybody else listening, this has been another episode of the Polyglot Podcast. Please also do check out our other podcasts, Launchies and Observy McObservface. [chuckles] Another example of why you never let the internet name anything. But yeah, do check out the other podcasts from New Relic and The Relicans. And I will see you all next time. Thanks again and goodbye.
Jonan: Thank you so much for joining us. We really appreciate it. You can find the show notes for this episode along with all of the rest of The Relicans podcasts on therelicans.com. In fact, most anything The Relicans get up to online will be on that site. We'll see you next week. Take care.