265: Computer Science Education – Forge Your Own Path with Emily Haggard - podcast episode cover

265: Computer Science Education – Forge Your Own Path with Emily Haggard

Jan 05, 202253 min
--:--
--:--
Listen in podcast apps:

Episode description

00:54 - Emily’s Superpower: Being a Good Teacher * Greater Than Code Episode 261: Celebrating Computer Science Education with Dave Bock (https://www.greaterthancode.com/celebrating-computer-science-education) * CyberPatriot (https://www.uscyberpatriot.org/) 06:24 - Online College Courses vs In-Person Learning / Emily’s Community College Path * Network Engineering (https://www.fieldengineer.com/blogs/what-is-network-engineer-definition) * Virginia Tech (https://vt.edu/) * Guaranteed Transfer Programs (https://blog.collegevine.com/an-introduction-to-guaranteed-transfer-programs/) * Loudoun Codes (http://loudouncodes.org/) * Emily Haggard: My Path to Virginia Tech (http://loudouncodes.org/2020/09/23/path_to_va_tech.html) 11:58 - Computer Science Curriculums * Technical Depth * The Missing Semester of Your CS Education (https://missing.csail.mit.edu/) 19:28 - Being A Good Mentor / Mentor, Student Relationships * Using Intuition * Putting Yourself in Others’ Mindsets * Diversity and Focusing On Commonalities * Addressing Gatekeeping in Tech * Celebrating Accomplishments * Bragging Loudly * Grace Hopper Conference (https://ghc.anitab.org/) * Cultural Dynamics Spread 38:24 - Dungeons & Dragons (https://dnd.wizards.com/) * Characters as an Extensions of Players Reflections: Dave: College is what you make of it, not where you went. Arty: Teaching people better who don’t have a lot of experience yet. Mandy: “Empowered women, empower women.” Empowered men also empower women. Emily: Your mentor should have different skills from you and you should seek them out for that reason. This episode was brought to you by @therubyrep (https://twitter.com/therubyrep) of DevReps, LLC (http://www.devreps.com/). To pledge your support and to join our awesome Slack community, visit patreon.com/greaterthancode (https://www.patreon.com/greaterthancode) To make a one-time donation so that we can continue to bring you more content and transcripts like this, please do so at paypal.me/devreps (https://www.paypal.me/devreps). You will also get an invitation to our Slack community this way as well. Transcript: MANDY: Hey, everybody! Welcome to Episode 265 of Greater Than Code. My name is Mandy Moore and I'm here with our guest panelist, Dave Bock. DAVE: Hi, I'm David Bock and I am here with our usual co-host, Arty Starr. ARTY: Thank you, Dave. And I'm here today with our guest, Emily Haggard. Emily is graduating from Virginia Tech with a Bachelor’s in Computer Science this past December so, congratulations. She has a wide variety of experience in technology from web development to kernel programming, and even network engineering and cybersecurity. She is an active member of her community, having founded a cybersecurity club for middle schoolers. In her free time, she enjoys playing Dungeons and Dragons and writing novels. Welcome to the show, Emily. EMILY: Thank you. ARTY: So our first question we always ask is what is your superpower and how did you acquire it? EMILY: So I spent some time thinking about this and I would say that my superpower is that I'm a good teacher and what that means is that the people who come to me with questions wanting to learn something number one, my goal is to help them understand and number two, I think it's very important to make sure that whatever gap we have in our experience doesn't matter and that they don't feel that. So that they could be my 6-year-old brother and I'm trying to teach him algebra, or something and he doesn't feel like he is the 6-year-old trying to learn algebra. DAVE: I'll echo that sentiment about being a good teacher actually on two fronts, Emily. First of all, I am teaching your brother now in high school and just the other day, he credited you towards giving him a lot of background knowledge about the course and the curriculum before we ever started the class. So he seconds that you're a good teacher. And then listeners might remember, I was on a few weeks ago talking about my nonprofit and Emily was there at the beginning of me starting to volunteer in high schools. In fact, the way I met Emily, it was the fall of 2014. The first time I was volunteering at Loudoun Valley High School and one morning prior to class, there was going to be a meeting of a cybersecurity club. There were a bunch to the students milling about and there was this sophomore girl sitting in front of a computer, looking at a PowerPoint presentation of networking IP addresses, how the /24 of an IP address resolves and just all that kind of detail. Like very low-level detail about networking stuff and I was like, “Oh, that's interesting.” I wouldn't have expected a sophomore girl to be so interested in the low-level type of details of IP. And then the club started and she got up and started giving that presentation. That was not a slide deck she was reading; it was a slide deck she was creating. EMILY: Thank you. I actually remember that. [laughs] ARTY: So how did you acquire that superpower? EMILY: I think it was out of necessity. So going back to the story that David mentioned in high school, there was a cybersecurity competition called CyberPatriot that I competed in with friends and one year, all of a sudden, they just introduced network engineering to the competition. We had to configure and troubleshoot a simulated network and no one knew how to do that. So I took it upon myself to just figure it out so that my team could be competitive and win, but then part of the way that I learn actually is being able to teach something like that's how I grasp. I know that I've understood something and I'm ready to move on to the next topic is like, if I could teach this thing. So actually, I started out building all of that as a way to kind of condense my notes and condense my knowledge so that it’d stick in my head for the competition and I just realized it's already here, I should share this. So that's how I started there. Teaching network engineering to high schoolers that don't have any background knowledge is really hard. It forced me to put it in terms that would make sense and take away the really technical aspects of it and I think that built the teaching skill. DAVE: That relates to the club you started at the middle school for a CyberPatriot. How did that start? EMILY: That was initially a desire to have a capstone project and get out of high school a few weeks early. But I was sitting there with my friend and thinking about, “Okay, well, we need to do something that actually helps people. What should we do?” Like some people are going out and they're painting murals in schools, or gardening. It was like, well, we don't really like being outside and we're not really artistic. [chuckles] But what we do have is a lot of technical knowledge from all this work with CyberPatriot and we know that CyberPatriot has a middle school competition. So we actually approached the middle school. We had a sit down with, I think the dean at our local middle school. We talked about what CyberPatriot was and what we wanted to do with the students, which was have them bust over to the high school so we could teach them as an afterschool program. I guess we convinced him and so, a couple months later they're busing students over for us to teach. DAVE: Wow. And did they ever participate in competitions as middle schoolers? EMILY: Yes, they did. DAVE: Very cool. EMILY: Yeah. DAVE: Can you go into what those competitions are like? I don't think most of the audience even knows that exists. EMILY: Yeah, sure. So CyberPatriot, it's a cybersecurity competition for predominantly high schoolers that's run by the Air Force and you have a couple rounds throughout the year, I think it’s like five, or so, and at each round you have 6 hours and you're given some virtual machines, which you have to secure and remove viruses from and things, and you get points for doing all of that. They added on network simulation, which was with some Cisco proprietary software, which would simulate your routers, your firewalls, and everything. So you'd have to configure and troubleshoot that as well and you would get points for the same thing. It builds a lot of comradery with all of us having to sit there for 6 hours after school and like, we're getting tired. It's a Friday night, everyone's a little bit loopy and all we've eaten is pizza for 6 hours. [laughs] DAVE: Well, that's a good jumpstart to your career, I think. [laughs] EMILY: Yes, for sure. MANDY: So while in college, I'm guessing that – well, I'm assuming that you've been pretty impacted by COVID and doing in-person learning versus online learning. How's that been for you? EMILY: I've actually found it pushes me to challenge the status quo. Online college classes, for the most part, the lectures aren't that helpful. They're not that great. So I had to pick up a lot of skills, like learning to teach myself, reading books, and figuring out ways to discern if I needed to research something further, if I really understood it yet, or not. That's a really hard question to ask actually is if you don't have the knowledge, how do you know that you don't have that knowledge? That's something I kind of had – it's a skill that you have to work on. So that is something I developed over the time when we were online and I've actually also done – I worked time for a year after high school and I took mostly online classes at the community college. Those skills started there, too and then I just built on them when I came to Virginia Tech and we had COVID happen. DAVE: Actually, I'd like to ask about that community college time. I know you had an interesting path into Virginia Tech, one that I'm really interested in for my own kids as well. Can you talk about that? EMILY: Yeah. So I, out of high school, always thought I'm going to – I'm a first-generation student. My parents did not go to college. They went to the military and grandparents before them. So I had always had it in my head that I am going to go and get that 4-year degree. That's what I want for myself. At the end of high school, I applied to Virginia Tech. I had a dream school. I wanted to go to Georgia Tech. They rejected me. Oh, well, that dream shot. I need to find something new. So I applied to Virginia Tech thinking it was going to be a safe bet. It's an in-state school, I was a very good student; they would never reject me and so, I applied for the engineering program and I was rejected. They did admit me for the neuroscience program, but it wasn't going to be what I wanted and I was realizing that I did not like either chemistry, or biology, so that would never work. And then at the same time, because of my work with CyberPatriot, I was able to get an internship in network engineering at a college not too far from where I lived. After I graduated high school, they offered me a job as a network engineer, which I took because my team was fantastic, I really liked my manager, and I was comfortable there. I took this job and I said, “Okay, I'm going to keep working on the college thing because it's what I always wanted for myself.” So I just signed up for community college and that was pretty tough working a full-time and doing community college until 11 o'clock at night and getting up the next day and doing it all over again. And from there, I decided that Virginia Tech was going to be the best option for me, just from a very logical perspective. I kind of thought Virginia Tech was a bit cult-y. I was never really gung-ho about going, but it made the most sense being an in-state school that's very well-known. I worked through community college and I applied to Virginia Tech again after 1 year at community college and they rejected me again. so I was like, “Oh no, now what do I do I?” And I realized I needed to make use of the guaranteed transfer program. One of the really cool things in Virginia at least is that a lot of the state schools have agreements with the community college, where if you get an associates with a specific GPA, you can transfer into that program and the university and your transfer's guaranteed, they can't reject you. So I was like, “Aha, they can't get rid of me this time.” Yeah, I did it and it's kind of a messy process. I actually went into that in a blog post on David has a nonprofit called Loudoun Codes. I wrote a blog post for his website and detailed that entire – being a transfer student is hard because there's a lot of credits that may not get transferred over because Virginia Tech is a little bit – all 4-year colleges are a little bit elitist in their attitude towards community college and they didn't take some of the credits that I had, which put me behind quite far, even though I had that knowledge, they said I didn't. So that added on some extra time and some extra summer semesters while I was at Tech. ARTY: Yeah. I did something similar with doing community college and then what you're talking about with the whole elitist attitude with the transfer and having a whole bunch of your credits not transferring and I'm definitely familiar with that whole experience. DAVE: Yeah. EMILY: And even now that I think about it, I remember community college, too. It's built for one specific type of student, which is great. I think they're really good at helping people who just weren't present, or weren't able to do the work and make the progress in high school. They're really good at helping those types of students. But as someone who did a whole bunch of AP classes, had a crazy GPA, they just didn't really know how to handle me. They said, “Okay, you've tested out of pretty much all of our math classes, but you are still lacking some credits.” So I had to take multi-variable calculus in community college in order to get credit to replace the fact that I tested out of pre-cal and which was kind of silly, but in the long run, it was great because I hear multi-variable calculus at Tech is pretty hard. But definitely, there's a lot of bureaucratic nonsense about college. Education is important. It's great. I've learned a lot of things, but there's still all these old ways of thinking and people are just not ready for change in college a lot of the time. The people who make decisions that is. DAVE: Well, I'd like to ask a little bit about the computer science curriculum that you've had and the angle I'm asking from when I worked at LivingSocial, I worked with one of the first group of people that had graduated from our bootcamp program and had transferred from other careers, spent 12 weeks learning software engineering skills, and then were integrated with a group of software engineers at LivingSocial. We would occasionally get into conversations about, well, if I learned to be a software engineer in 12 weeks, what do you learn in 4 years of college? So we started to do these internal brown bags that were kind of the Discovery Channel version of computer science. A lot of that material I've since recycled into the presentations I do at high school. But for your typical person who might have sidelined into this career from a different perspective, what's been your curriculum like? EMILY: I really like the parts of the curriculum that had technical depth because coming into it at my level, that's what I was lacking in certain areas. I had built the foundation really strong, but the details of it, I didn't have. The classes that Virginia Tech, like the notorious systems class and a cybersecurity class I have taken this semester, that have gone in detail with technology and pushed what I understood, those were my most valuable classes. There was a lot of it that I would've been happy without [laughs] because I'm not sure it will apply so much to my life going forward. I'm a very practical person. Engineer mindset; I don't want to worry about things that can actually be applied to the real world so much. So for me this semester, actually, it's been really challenging because I've taken a data structures and algorithms class where we're talking about NP complete versus NP hard, and what it would mean if we could solve an NP complete problem in polynomial time. It's really hard to care. It's really hard to see how that [laughs] helps. It's interesting from a pure math perspective, but coming into it as someone who was already in the adult world and very grounded, it feels like bloat. DAVE: Yeah. That stuff is interesting if you're are designing databases, but most of us are just using databases and that – [overtalk] EMILY: Right. DAVE: Stuff is all kind of baked in. EMILY: Yeah. DAVE: For the average person on a technical career path, we're far more interested in the business problems than the math problems. ARTY: I'm curious, too. There's also lots of stuff that seems like it's missing in college curriculum from just really fundamental things that you need to know as a software engineer. So did you have things like source control and continuous integration? I think back to my own college experience and I didn't learn about source control until I got out of college. [laughs] And why is that? Why is that? It seems so backwards because there's these fundamental things that we need to learn and within 4 years, can we not somehow get that in the curriculum? I'm wondering what your experience has been like. EMILY: So Virginia Tech, I think the CS department head is actually really good at being reflective because he requires every senior to take a seminar class as they exit. It's a one credit class; it's mostly just feedback for the school and I think it's really cool because he asks all of us to make a presentation, just record ourselves talking over some slides about our experience and the things we would change. That really impressed me that this guy who gets to make so many decisions is listening to the people who are just kind of peons of the system and what I said was that there are certain classes that they give background knowledge. Like there's one in particular where it's essentially the closest crossover we have with the electrical engineering department and it's really painful, as someone who works with software, to try and put myself in a hardware mindset working with AND gates, OR gates, and all that, and trying to deal with these simulated chips. It's awful and then it never comes back. We never talk about again in the curriculum and it's a prerequisite for the systems class, which has nothing at all to do with that, really. This segues into another thing. I've had an internship while I've been at Virginia Tech that's a web consultant role, or a development consultant role with a company called Acceleration. They run just a small office in Blacksburg and they have a really cool business model. They take students at Virginia Tech and at Radford, a neighboring school, and they have us work with clients on real software development projects. They pair us with mentors who have 5, 10 years of experiences, software consultants, and we get to learn all those things that school doesn't teach us. So that's actually how I learned Git, Scrum, and all that stuff that isn't taught in college even now and I went back to the CS department head and I said, “Replace that class with the class that teaches us Git, Scrum, Kanban, and even just a brief overview of Docker, AWS, and the concepts so that people have a foundation when they try to go to work and they're trying to read all this documentation, or they're asked to build a container image and they have no idea what it's talking about, or what it's for.” Yeah, going back to the original question, no, I didn't learn version control in college, but the weird thing is that I was expected to know it in my classes without ever being taught it because, especially in the upper level like 3,004 level, or 1,000 level classes, they have you work on group projects where Git is essential and some of them, especially the capstone project, are long-term projects and you really need to use Scrum, or use some sort of methodology rather than just the how you would treat a two-week project. Actually, it's interesting because David was my sponsor on my capstone project in college and he really helped my team with the whole project planning, sprint planning, and just understanding how Scrum and all that works and what it's for. DAVE: Yeah. I just shared a link that is a series of videos from MIT called The Missing Semester of Your Computer Science Education that talks about Git, version control and command line, using the back shell, stuff about using a database, how to use a debugger; just all that kind of stuff is stuff that you're expected to know, but never formally taught. ARTY: What about unit testing? EMILY: Okay. So that's an interesting exception to the rule, but I don't think they really carried it through, through my entire experience at Tech. So in the earlier classes, we were actually forced to write unit tests that was part of our assignments and they would look to see that we had – I think we had to have a 100% testing coverage, or very close to it. So that was good, but then it kind of dropped away as we went to the upper-level classes and you just had to be a good programmer and you had to know to test small chunks of your code because we'd have these massive projects and there would be a testing framework to see if the entire thing worked, but there was no unit testing, really. Whereas, at work in my internship, unit tests are paramount, like [laughs], we put a huge emphasis on that. ARTY: So earlier Emily, you had had mentioned teaching people that had no experience at all and the challenge of trying to be able to help and support people and learning to understand regardless of what their gap was in existing experience. So what are some of the ideas, principles, things that you've learned on how to do that effectively? EMILY: That's a really tough question because I've worked on building intuition rather than a set of rules. But I think a few of the major things probably are thinking about it long enough beforehand, because there's always a lot of background context that they need. Usually, you don't present a solution before you’ve presented the problem and so, it's important to spend time thinking about that and especially how you're going to order concepts. I've noticed, too with some of the best teachers I've had in college is they were very careful with the order in which they introduced topics to build the necessary context and that's something that's really important with complete beginners. The thing is sometimes you have to build that context very quickly, which the best trick I have for that is just to create an analogy that has nothing to do with technology at all, create it out of a shared experience that you have, or something that they've probably experienced. Like a lot of times analogies for IP addressing use the mailing service, houses on a street and things like that, things that are common to our experience. I guess, maybe that's the foundation of it is you're trying to figure out what you have in common with this person that can take them from where they are to where you are currently and that requires a lot of social skills, intuition, and practice, so. DAVE: That’s a really good observation because one of the things I find teaching high school, and this has been a skill I've had to learn, is being able to put my mindset in the point of view of the student that I need to go to where they are and use a good metaphor analogy to bring them up a step. That's a real challenge to be able to strip away all the knowledge I have and be like, “Oh, this must be the understanding of the problem they have” and try to figure out how to walk them forward. EMILY: Yeah. DAVE: That's a valuable skill. EMILY: I think that's really rewarding, though because when I see in their eyes that they've understood it, or I watch them solve the problem, then I know that I did it well and that's really rewarding. It's like, okay, cool. I got them to where I wanted them to be. ARTY: Reminds me. I was helping out mentoring college students for a while and I hadn’t really been involved with college for a really long time. I was working with folks that knew very, very little and it was just astounding to me one, just realizing how much I actually knew. That's easy to take for granted. But also, just that if you can dial back and be patient, it's really rewarding I found to just be able to help people, to see that little light go on where they start connecting the dots and they're able to make something appear on the screen for the first time. That experience of “I made that! I made that happen.” I feel like that's one of the most exciting things about software and in programming is that experience of being able to create and make something come to life in that way. Just mentoring as an experience is something, I think is valuable in a lot of ways beyond just the immediate being able to help someone things, like it's a cool experience being a mentor as well. EMILY: And I think it's really important, too as a mentor to have good mentors yourself. I was really lucky to have David just show up in my high school one day [laughs] and I've been really lucky consistently with the mentors in my life. In my internship that I mentioned, I worked with fantastic engineers who are really good teachers. It's difficult to figure out how to good teacher without having first had good teachers yourself and regardless of the level of experience I have, I think I will always want to have that mentor relationship so that I can keep learning. One of the things, too is a lot of my mentors are quite different from mine. Like I am a very quiet introvert person. I would not say I'm very charismatic. I would say David is the opposite of all those things. So wanting to build those skills myself, it's good to have a role model who has them. DAVE: Well, thank you for that compliment. EMILY: Yeah. MANDY: That's really interesting that you said to find mentor that's the opposite of yourself. I literally just heard the same thing said by a different person last week that was like, “Yeah, you should totally find someone who you want to be, or emulate,” and I thought that was really good advice. EMILY: I agree with that completely. There's a lot of conversation around diversity in computer science and that's definitely a problem. Women do not have the representation they should, like I've always gone through classes and been 1 of 3 women in the class. [chuckles] But I think one of the ways in which we can approach this, besides just increasing the enrollment number, is focusing on commonalities—kind of what I mentioned before— from the perspective of mentors who are different than their students. Maybe a male mentor trying to mentor a female student. Focusing on your commonalities rather than naturally gravitating towards people who are like you; trying to find commonalities with people who are different from you. I think that's important. From the student perspective, it's less about finding commonalities more about, like you said, finding the things you want to emulate. Looking at other groups of people and figuring out what they're good at and what things you would like to take from them. [laughs] So. DAVE: Yeah, that's been an interesting challenge I've noticed in the school system is that in the elementary school years, boys and girls are equally competent and interested in this material. By the time they get to high school, we have that 70/30 split of males versus females. In the middle school, the numbers are all over place, but in the formal classes, it seems to be at 70/30 split by 7th grade and I can't really find any single root cause that causes that. Unfortunately, I think I saw some stuff this week with Computer Science Education Week where students as young as first grade are working with small robots in small groups and there always seems to be the extrovert boy that is like, “It's a robot. I'm going to be the one that plays with it,” and he gatekeeps access to girls who are like, “It's my turn.” It's really discouraging to see that behavior ingrained at such a young age. Any attempt I try to address it at the high school level – well, not any attempt, but I feel like a lot of times I can come off as the creepy old guy trying to encourage high school age girls to be more interested in computer science. It's a hard place for me to be. EMILY: Yeah. I don't think you're the creepy old guy. [laughter] I think this is a larger topic in society right now is it's ingrained in women to be meek and to not be as confident, and that's really hard to overcome. That sounds terrible. I don't think people consciously do that all the time. I don't think men are consciously trying to speak over women all the time, but it it's definitely happened to me all over the place—it's happened at work, it's happened in interviews. I think getting over that is definitely really tough, but some of the things that have helped me are to see and celebrate women's accomplishments. Like every time I hear about Grace Hopper, it makes me so happy. I know one time in high school, David took a few other female students and I to a celebration of women's accomplishments and the whole thing, there were male allies there, but the topic of the night was women bragging loudly about the things that they've accomplished. Because that's not something that's encouraged for us to do, but it's something that it builds our confidence and also changes how other people see us. Because the thing is, it's easy to brag and it's saddening that people will just implicitly believe that the more you say you did. So the more frequently you brag about how smart you are, the more inclined people are to believe it because we're pretty suggestible as humans. When women don't do that, that subtly over time changes the perspective of us. We have to, very intently – I can't think of a word I'm trying to say, but be very intentional about bragging about ourselves regardless of how uncomfortable it is, regardless of whether we think we deserve it, or not. MANDY: I also think it's really important for women to also amplify other women, like empowered women empower women. So when we step up and say, “Look at this thing Emily did, isn't that cool?” EMILY: Yeah. MANDY: That's something that we should be doing to highlight and amplify others' accomplishments. EMILY: For sure. I've been to the Grace Hopper conference virtually because it was during COVID times, but that was a huge component of it was there would be these networking circles where women just talk about the amazing things that they've done and you just meet all these strangers who have done really cool things. It goes in both directions, like you said, you get to raise them up and also be encouraged yourself and have something to look forward to. ARTY: It sounds like just being exposed to that culture was a powerful experience for you. EMILY: For sure. ARTY: I was thinking about our conversation earlier about role models and finding someone to look up to that you're like, “You're a really cool person. I admire you.” Having strong women as role models makes it much easier for us to operate a certain way when we interact with other people, and stay solid within ourself and confident within ourself and not cave in. When all the examples around us of women are backing off, caving in, and just being submissive in the way that they interact with the world, those are the sort of patterns we pick up and learn. Likewise, the mixed gender conversations and things that happen. We pick up on those play of dynamics, the things that we see, and if we have strong role models, then it helps us shift those other conversations. So if we have exp more experience with these things, like the Grace Hopper conference and being able to go into these other that have a culture built around strong women and supporting being a strong woman, then you can take some of those things back with you in these other environments and then also be a role model for others. Because people see you being strong and standing up for yourself, being confident and they might have the same reaction to you of like, “Wow, I really admire her. She's really cool.” And then they start to emulate those things too. So these cultural dynamics, they spread and it's this subconscious spreading thing that happens. But maybe if we can get more experiences in these positive environments, we can iteratively take some of those things back with us and influence our other environments that, that maybe aren't so healthy. EMILY: Yeah. I agree. And I think also, it's important to be honest and open about where you started because it's easy, if you're a really confident woman walking into the room, for people to think you've always been that way. I think it's important to tell the stories about when you weren't, because that's how other people are going to connect with you and see a path forward for themselves. Definitely. I'll start by telling a story. I think it's just a million small experiences. I was a strong student in high school. I was very good at math. We had study halls where we'd sit in the auditorium and we'd all be doing homework, and students would often go to the guy in my math class who knew less than I did and ask for help. I would just sit there and listen to him poorly help the other students and mostly just brag about himself, and just be quiet and think about how angry it made me, but not really be able to speak up, or say anything. I'm very different now. Because of the exposure that I've had, I am much more quick to shut that down and to give a different perspective when someone's acting that way. MANDY: But how cool would it have been if that guy would've been like, “Don't ask me, ask Emily”? DAVE: That's a really important point because I hear women talk about this problem all the time and I don't think the solution is a 100% in the women's hands. I think that it's men in the room. My own personal experience, most of my career has been spent in government contracting space and, in that space, the percentage of women to men is much higher. It's still not great, but I think there's a better attempt at inclusion during recruiting. I think that there's a lot of just forces in that environment that are more amenable to that as a career path for women. And then when I started consultancy with my two business partners, Kim and Karen, that was an unheard-of thing that I had two women business partners and at the time we started it, I didn't think it was that big of a deal at all. But then we were suddenly in the commercial space and people thought it was some scam I was running to be a minority owned company and my partner was my wife, or I'd go into a meeting and somebody thought I brought a secretary and I was like, “No, she's an engineer and she's good, if not better than me.” It opened my eyes to the assumptions that people make about what the consulting rates even should be for men versus women and it's in that environment I learned that I had to speak up. I had to represent to be a solution to that problem. I think you can get in an argument with other guys where they aren't even convinced there's a problem to solve. They'll start talking about, “Oh, well, women just aren't as interested in this career path.” It's like, I've known plenty that are and end up leaving. EMILY: I think definitely having support from both sides has been really important because it is typically men in places of authority and to have them be encouraging and not necessarily forcing you into the spotlight, but definitely trying to raise you up and encourage you to speak out means a lot. ARTY: Yeah. I found most of the teams I've been on, I was the only woman on the team, or one of two maybe and early on, when nobody knows you, people make a lot of assumptions about things. The typical thing I've seen happen is when you've got a woman programmer is often, the bit is flipped pretty early on of that oh, she doesn't know what she's doing and stuff, we don't need to listen to what she says kind of thing and then it becomes those initial conversations and how things are framed, tend to affect a lot of how the relationships on the team are moving forward. One of the things that I learn as just an adaptive thing is I was really smart. So what I do, the first thing on the team I'd find out what the hardest problem was, that none of the guys could solve and figure it out, and then I would go after that one. My first thing on the team, I would go and tackle the hardest thing. I found that once you kick the ass of the biggest baddy on the yard, respect. [laughter] So I ended up not having problems moving forward and that the guys would be more submissive toward me, even as opposed to the other way around. But it's like you come into a culture that is dominated by certain ways of thinking in this masculine hierarchy, alpha male thing going on and if that's the dominant culture, you have to learn to play that game and stake yourself in that game. Generally speaking, in this engineering world, intelligence is fairly respected. So I've at least found that that's been a way for me to operate and be able to reset that playing field anyway. MID-ROLL: This episode is supported by Compiler, an original podcast from Red Hat discussing tech topics big, small, and strange. Compiler unravels industry topics, trends, and the things you’ve always wanted to know about tech, through interviews with the people who know it best. On their show, you will hear a chorus of perspectives from the diverse communities behind the code. Compiler brings together a curious team of Red Hatters to tackle big questions in tech like, what is technical debt? What are tech hiring managers actually looking for? And do you have to know how to code to get started in open source? I checked out the “Should Managers Code?” episode of Compiler, and I thought it was interesting how the hosts spoke with Red Hatters who are vocal about what role, if any, that managers should have in code bases—and why they often fight to keep their hands on keys for as long as they can. Listen to Compiler on Apple Podcasts, or anywhere you listen to podcasts. We’ll also include a link in the show notes. Our thanks to Compiler for their support. ARTY: Well, speaking of games, Arty, one of the things that Emily mentions in her bio is playing Dungeons and Dragons and this is an area where as well as I know Emily from her high school years, this is not something I know much about Emily at all. So I'd like to talk about that. Play, or DM, Emily? EMILY: Both. But I really enjoy DMing because it's all about creating problems to solve, in my opinion, like you throw out a bunch of story threads. The way I approach things is I try actually, unlike a lot of DMs, I do not do a lot of world building for places my players haven't been. I pretty much, there are bright light at the center of the world and anything the light doesn't touch doesn't exist. I haven't written it and I don't really look at it that often. So I'm constantly throwing out story threads to try and see what they latch onto and I'll dive into their character backstory to see what they are more predisposed to be interested in. It's like writing a weekly web comic. You don't have necessarily a set beginning and end and you don't really know where you're going to end up in between, but you end up with all these cool threads and you can tie them together in new and interesting ways. Just seeing the connections between those and being able to change what you want something to be on the fly is really cool and just very stimulating mentally for me. So it's like a puzzle exercise the whole time and it is also an interesting social exercise because you're trying to balance the needs of each person. I feel like D&D allows you to know people on a really deep level, because a lot of times, our characters are just – that we’re playing. I guess, I didn't really explain what D&D is; I just made an assumption that people would know. It's a tabletop role playing game where you make a character. You're usually heroic and you're going about on this adventure trying to help people solve problems and these characters tend to be just naturally an extension of ourselves. So you get to see all the things that subconsciously the person doesn't real about themselves, but that show up in their character. I think that's really cool. DAVE: So do you have a weekly game, or how often do you play? EMILY: I try to run a weekly game. College often gets in the way. [laughs] DAVE: How many players? EMILY: It ranges from 3 to 4, sometimes 5. It's really cool because it's also, most of them are people that I met during the pandemic. So we've played predominantly online and this is the way we've gotten to know each other. We've become really close in the year, or so since we started playing together through the game that I DM and through the game that one other person in the group DMs and it's cool. It's definitely a way to kind of transcend the boundaries of Zoom and of video calls in general. DAVE: Hmm. ARTY: How did you end up getting into that? EMILY: It was just a friend group in high school. Someone said, “Hey, I would like to run a Dungeon and Dragons game. Do you want to play?” And I said, “Oh, what's that?” I've always loved books and reading so it was kind of a natural progression to go from reading a story to making a story collaboratively with other people. So that just immediately, I had a connection with it and I loved the game and that's been a huge part of my hobbies and my outside of tech life ever since. DAVE: Yeah. I played D&D as a kid in the late 70s, early 80s, but my mom took all my stuff away from me when that Tom Hanks movie came out that started the whole Satan panic thing. So I didn't play for a long time until my own kids were interested after getting hooked on Magic. Seeing my own kids interested in D&D, the story building, the writing, the math that they had to do, like I don't know why any parent wouldn't encourage their kids to play this game. It's just phenomenal. The collaborative, creative, sharing, math; it's got everything. EMILY: Yeah. I'm an introverted person so it takes a lot to make me feel motivated to be in a group with other people consistently, but D&D does that and it does it in a way that's not, I guess, prohibitive to people who are naturally shy. Because you're pretending to be someone else and you're not necessarily having to totally be yourself and you're able to explore the world through a lens that you find comfortable. DAVE: That’s really cool. EMILY: I guess, also, it kind of goes back to our conversation about teaching. Being a DM, a lot of my players are people who have not played before, or very, very new. Like, maybe they've read a lot about it, maybe they've watched them [43:18] shows, but they maybe haven't necessarily played. D&D does require a lot of math and there's a lot of optimization, like you can get very into the weeds with your character sheet trying to make the most efficient battle machine, whatever and that's not really always approachable. Especially when I started introducing my younger siblings to D&D, I used versions, D&D like games that were similar, but not quite D&D. Like less math, a very similar amplified character sheets so you're looking at fewer numbers, or fewer calculations involved just to kind of get the essence, because there's a few core concepts in D&D. You have six statistics about your character that they change a little bit between different types of role-playing games, but they're pretty universal, I think for the most part. It's constitution, strength, dexterity, wisdom, intelligence, and charisma. Once you kind of nail those concepts down and once a person understands what those skills are supposed to mean, that really opens the gates to understanding a lot more about the core mechanics of D&D outside of the spell casting stuff and all the other math that's involved. I think just simplifying the game down to that makes them fall in love with the narrative and collaborative aspect of the game, and then be more motivated to figure out the math, if they weren't already predisposed to that. DAVE: So if somebody were interested in picking up a game trying to figure it out, where would they start? EMILY: It really to depends on the age group. If you're going to play with high school students, I would definitely say if none of you have played before, then pick up a player's handbook, maybe a dungeon master's guide if you're going to DM, you've never DM before because it gives a lot of tips for just dealing with the problems that arise in a collaborative storytelling game. And then probably just a prewritten module so you don't have to worry about building your own story, because these modules are stories that are written by professional game developers and you can take pieces of them and iterate it on yourself so you don't have to start with nothing. But if you are going for a much younger audience, I can't remember off the top of my head what it was, but it's essentially an animal adventure game. It's very much D&D without using the word D&D because I think it's a different company, it's copyrighted, and whatnot. But you have these little cute dog characters and they're trying to defeat an evil animal overlord who wants to ruin the town festival. It's very family friendly, like there's no death like there is in regular D&D and it's just a chance to engage with the character creation aspect of it. MANDY: That's really cool. So we're about heading towards our time, but I really appreciate you coming on the show, Emily and I wanted to just ask you, if you could give any advice to young girls looking to get into tech, or software engineering, what advice would you give them? EMILY: I think don't be afraid to walk off the path. A lot of my life has been kind of bucking the prewritten path that a lot of people are told is the best one because it didn't work for me, or whatever reason, and I think it's important just to not be afraid of that and to be courageous in making your own path. MANDY: That's great advice. So should we head into reflections, everyone? Who wants to start us off? DAVE: I'll start with one. I mentioned that when asked Emily about her path into college, that I was interested in a similar path for my own kids. I had a really strange college path that I started out a music major, ended up a computer science major, and had a non-traditional path. I've always believed that college is what you make of it, not where you went. Where you went might help you get your first job, but from then on, it's networking, it's personality, it's how well you did the job. Talking to Emily about her path, just reinforces that to me and helps me plot a path for what I might have my own children do. I have triplet boys that are in 9th grade. So we're starting to think about that path and not only would a path through Virginia Community College save us a fortune, [laughs] it would also be a guaranteed admission into Virginia Tech, or one of the Virginia schools so it's definitely something worth to consider. So I appreciate that knowledge, Emily. ARTY: I've been thinking a lot about how we can better teach people that don't have a lot of experience yet. We've got so much stuff going on in this field of software engineering and it's really easy to not realize how far that this plateau of knowledge that we live in and work with every day to do our jobs, and how important it is to bring up new folks that are trying to learn. One of the things you said, Emily was about teaching is being able to find those shared things where we've got a common understanding about something—you used metaphor of male delivery to talk about IP addresses, for example. But to be thinking in those ways of how do we find something shared and be able to get more involved with mentoring, reaching back, and helping support people to learn because software is super cool. It really is! We can build amazing, amazing things. It'd be awesome if more of us were able to get involved and have that experience and having good mentors, having good role models, all of those things make a big difference. MANDY: I just love the conversation that we had about men and women in technology and for me, I love to reiterate the fact that empowered women empower women and I even want to take that a step further by saying especially right now in our field, empowered men also empower women. So I think that that's something that really needs to be said and heard and not perceived as like Dave said oh, he felt like the creepy guy encouraging girls, or women to get involved in tech. I think it's cool. Dave has personally, he's mentored me. He's gotten me more interested. I used to do assistant work and now I'm learning programming and it's because I've been encouraged to do so by a lot of different men in the industry that I've been lucky to know. DAVE: Well, thank you, Mandy. You certainly have a who's who of mentors. MANDY: I am very, very lucky to know the people I know. DAVE: I’m quite honored to even be named on that list of people you know. [laughter] EMILY: I think the thought I keep coming back to is one that I've mentioned, but didn't really crystallize in my head until this morning when I was preparing for this recording is, I listened to David's interview and I thought about like, “Oh wow, he did really well on the podcast, all these things that I wish I did.” It really crystallized the idea that your mentor should be different from you and should have skills you don't, and you should seek them out for that reason. Mentors tend to be the people that I run into and I haven't really thought about it that way before, but that gives me a different perspective to go out and intentionally seek out those people. That definitely gives some food for thought for me. [laughs] MANDY: I love intentionally seeking out people who are different from myself in general, just to learn and get perspectives that I might have never even thought of before. But with that, I guess we will wrap up. Emily, it's been so nice having you on the show. Congratulations and best of luck on your exams. I know being – [overtalk] DAVE: I can’t believe you took the time to do this with your exams coming up. MANDY: I know! EMILY: I'm procrastinating as hard as I can. [laughter] MANDY: But it's been so nice to have you on the show. Dave, thank you for coming and being a guest panelist and Arty, it's always wonderful to host with you. So I just wish everybody a happy new year and we'll see you next week! Special Guests: Dave Bock and Emily Haggard.

Transcript

CHAD: This is the Giant Robots Smashing Into Other Giant Robots Podcast where we explore the design, development, and business of great products. I'm your host, Chad Pytel. And with me today is Rob Hirschfeld, Founder, and CEO of RackN, which develops software to help automate data centers, which they call Digital Rebar. Rob, welcome to the show ROB: Chad, it is a pleasure to be here. Looking forward to the conversation. CHAD: Why don't we start with a little bit more information about what RackN and the Digital Rebar platform actually is. ROB: I would be happy to. RackN is focused on helping customers automate infrastructure. And for us, it's really important that the customers are doing the automation. We're very focused on customer autonomy and self-management. It's why we're a software company, not a services or as a service platform company. But fundamentally, what Digital Rebar does is it is the platform that helps connect all of the different pieces and tools that people use to manage infrastructure into infrastructure pipelines through the seamless multi-component automation across all of the different pieces and parts that have to be run to bring up infrastructure. And we were talking data centers do a lot of on-premises all the way from the bare metal up. But multi-cloud, you name it, we're doing infrastructure at that level. CHAD: So, how agnostic to the actual bare metal are you? ROB: We're very agnostic to the bare metal. The way we look at it is data centers are heterogeneous, diverse places. And that the thing that sometimes blocks companies from being innovative is when they decide, oh, we're going to use this one vendor for this one platform. And that keeps them actually from moving forward. So when we look at data centers, the heterogeneity and sometimes the complexity of that environment is a feature. It's not a bug from that perspective. And so it's always been important to us to be multi-vendor, to do things in a vendor-neutral way to accommodate the quirks and the differences between...and it's not just vendors; it's actually user choice. A lot of companies have a multi-vendor problem (I'm air quoting) that is actually a multi-team problem where teams have chosen to make different choices. TerraForm has no conformance standard built into it. [laughs] And so you might have everybody in your company using TerraForm and Ansible happily but all differently. And that's the problem that we walk into when we walk into a data center challenge. And you can't sweep that under the rug. So we embraced it. CHAD: What kind of companies are your primary customers? ROB: We're very wide-ranging, from the top banks use us and deploy us, telcos, service providers, very large scale service providers use us under the covers, media companies. It really runs the gamut because it's fundamentally for us just about infrastructure. And our largest customers are racing to be the first to deploy. And it's multi-site, but 20,000 machines that they're managing under our Digital Rebar management system. CHAD: It's easy, I think, depending on where you sit and your experiences. The cloud providers today can overshadow the idea that there are even people who still have their own data centers or rent a portion of a data center. In today's ecosystem, what are some of the factors that cause someone to do that who isn't an infrastructure provider themselves? ROB: You know the funny thing about these cloud stories (And we're talking just the day after Amazon had a day-long outage.) is that even the cloud providers don't have you give up operation. You're still responsible for the ops. And for our customers, it's not like they can all just use Lambdas and API gateways. At the end of the day, they're actually doing multi-site distributed operations. And they have these estates that are actually it's more about how do I control distributed infrastructure as much as it is about repatriating. Now, we do a lot to help people repatriate. And they do that because they want more control. Cost savings is a significant component with this. You get into the 1000s of machines, and that's a big deal. Even at hundreds of machines, you can save a lot of money compared to what you get in cloud. And I think people get confused with it being an or choice. It really is an and choice. Our best customers are incredibly savvy cloud users. They want that dynamic, resilient very API-driven environment. And they're looking to bring that throughout the organization. And so those are the ones that get excited when they see what we've done because we spend a lot of time doing infrastructure as code and API-driven infrastructure. That's really what they want. CHAD: Cool. So, how long have you been working on RackN? When did you found it? ROB: [laughs] Oh my goodness. So RackN is seven years old. Digital Rebar, we consider it to be at its fourth generation, but those numbers actually count back before that. They go back to 2009. The founding team was actually at Dell together in the OpenStack heyday and even before the OpenStack heyday. And we were trying to ship clouds from the Dell Factory. And what we found was that every customer had this bespoke data center we've already talked about. And we couldn't write automation that would work customer to customer to customer. And it was driving us nuts. We're a software team, not a hardware team inside of Dell. And the idea that if I fixed something in the delivery or in their data center, and couldn't go back to their data center because it was different than what the next customer needed and the next customer needed, we knew that we would never have a community. It's very much about this community and reuse pattern. There's an interesting story that I picked up from SREcon actually where they were talking about the early days of boilers. This is going back a few centuries ago. But when they first started putting boilers into homes and buildings, there was no pattern, there was no standard. And everybody would basically hire a plumber or a heating architect. Heating architect was a thing. But you'd build a boiler and every one was custom, and every one was different. And no surprise, they blew up a lot, and they caused fires. And buildings were incredibly unsafe because they were working on high-pressure systems with no pattern. And it took regulation and laws and standards. And now nobody even thinks about it. You just take standard parts, and you connect them together in standard ways. And that creates actually a much more innovative system. You wouldn't want every house to be wired uniquely either. And so when we look at the state of automation today, we see it as this pre-industrial pre-standardization process and that companies are actually harmed and harming themselves because they don't have standards, and patterns, and practices that they can just roll and know they work. And so that philosophy started way back in 2009 with the first generation which was called Crowbar. Some of your audience might even remember this from the OpenStack days. It was the first OpenStack installer built around Chef. And it had all sorts of challenges in it, but it showed us the way. And then we iterated up to where Digital Rebar is today. Really fully infrastructure as code, building infrastructure pipelines, and a lot of philosophical pieces we've learned along the way. CHAD: So you were at Dell working on this thing. How did you decide to leave Dell and start something new? ROB: Dell helped me with that decision. [laughs] So the challenge of being a software person inside of Dell especially at the time, Crowbar was open-source which did make it easier for us to say, "Hey, we want to part ways but keep the IP." And the funny thing is there's not a scrap of Crowbar in Digital Rebar except one or two naming conventions that we pulled forward and the nod of the name, that Rebar is a nod to Crowbar. But what happened was Dell when it went private, really did actually double down on the hardware and the more enterprise packaged things. They didn't want to invest in DevOps and that conversation that you need to have with your customers on how they operate, the infrastructure you sold them. And that made Dell not a very good place for me and the team. And so we left Dell, looked at the opportunity to take what we'd been building with Crowbar and then make it into a product. That's been a long journey. CHAD: Now, did you bootstrap, or did you take investment? ROB: We took [laughs] a little bit of investment. We raised some seed funding. Certainly not what was in hindsight was going to be sufficient for us to do it. But we thought at the time that we had something that was much more product-ready for customers than it was. CHAD: And what was the challenge that you found? What was the surprise there that it wasn't as ready as you thought? ROB: So what we've learned in our space specifically...and there are some things that I think apply to everybody, and there are some things that you might be able to throw on the floor and ignore. I was a big fan of Minimum Viable Product. And it turned out that the MVP strategy was not at all workable with customers in data centers. Our product is for people running production data centers. And nobody's going to put in software to run a data center that is MVP. It has to be resilient. It has to be robust. It has to be simple enough that they can understand it and solve some core problems, which is still sort of an MVP idea. But it can't be oops. [laughs] You can't have a lot of oops moments when you're dealing with enterprise infrastructure automation software. It has to work. And importantly, and as a design note, this has been a lesson for us. If it does break, it has to break in very transparent, obvious ways. And I can't emphasize that enough. There's so much that when we build it, we come back and like, was it obvious that it broke? Is it obvious that it broke in a way that you can fix? CHAD: And it's part of the culture too to do detailed post mortems with explanations and be as transparent as possible or at least find the root cause so that you can address it. That's part of the culture of the space too, right? ROB: You'd like to hope so. [laughs] CHAD: Okay. [laughs] In my experience, that's the culture of the space. ROB: You're looking more at a developer experience. But even with a developer, you've got to be in a post mortem or something. And it's like everybody's pointing to the person to the left and the right sort of by human nature. You don't walk into that room assuming that it was your fault, and you should, but that's not how it usually is approached. And what we find in the ops space, and I would tell people to work around this pattern if they can, is that if you're the thing doing the automation, you're always the first cause of the problem. So we run into situations where we're doing a configuration, and we find a vendor bug or a glitch or there's something, and we found it. It's our problem whether we were the cause or not. And that's super hard. I think that people on every side of any type of issue need to look through and figure out what the...the blameless post mortem is a really important piece in all this. At the end of the day, it's always a human system that made a mistake or has something like that. But it's not as simple as the thing that told you the bad news that the messenger was at fault. And there's a system design element to that. That's what we're talking about here is that when you're exposing errors or when something's not behaving the way you expect, our philosophy is to stop. And we've had some very contentious arguments with customers who were like, "Just retry until it fixes itself," or vendors who were like, "Yeah, if you retry that thing three times, [laughs] then it'll magically go away." And we're like, that's not good behavior. Fix the problem. It actually took us years to put a retry element into the tasks so that you can say, yeah, this does need three retries. Just go do it. We've resisted for a long time for this reason. CHAD: So you head out into the market. And did you get initial customers, or was there so much resistance to the product that you had that you struggled to get even first customers? ROB: We had first customers. We had a nice body of code. The problem is actually pretty well understood even by our customers. And so it wasn't hard for them to get a trial going. So we actually had a very profitable customer doing...it was in object storage, public object storage space. And they were installing us. They wanted to move us into all their data centers. But for it to work, we ended up having an engineer who basically did consulting and worked with them for the better part of six months and built a whole bunch of stuff, got it working. They could plug in servers, and everything would set itself up. And they could hit a button and reset all the servers, and they would talk to the switches. It was an amazing amount of automation. But, and this happens a lot, the person we'd been working with was an SRE. And when they went to turn it over to the admins in the ops team, they said, [laughs] "We can't operate. There's too much going on, too complex." And we'd actually recognized...and this is a really serious challenge. It's a challenge now that we're almost five years into the generation that came after that experience. And we recognized there was a problem. And that this wasn't going to create that repeatable experience that we were looking for if it took that much. At the same time, we had been building what is now Digital Rebar in this generation that was a single Golang binary. All the services were bundled into the system. So it listened on different ports but provide all the services, very easy to install, really, really simple. We literally stripped everything back to the basics and restarted. And we had this experience where we sat down with a customer who had...I'm going to take a second and tell the story because this is such a compelling story from a product experience. So we took our first product. We were in a bake-off with another bare metal focus provisioning at the time. And they were in a lab, and they set our stuff up. And they turned it on, and they provisioned. And they set up the competitor, and they turned it on and provisioned. And both products worked. Our product took 20 minutes to go through the cycle and the competitor took 3. And the customer came back and said, "I can't use this. I like your product better. It has more controls with all this stuff." But it took 20 minutes instead of 3. We actually logged into the system, looked at it and we were like, "Well, that's because it recognized that your BIOS was out of date, patched your BIOS, updated the system, checked that it was right, and then rebooted the systems and then continued on its way because it recognized your systems were outdated automatically. And he said, "I didn't want it to do that. I needed it to boot as quickly as possible." And literally, [laughs] we were in the middle of a team retreat. So it's like, the CTO is literally excusing himself on the table to talk to the guy to make this stuff, try and make it right. And he's like, "Well, we've got this new thing. Why don't you install this, what's now Digital Rebar, on the system and repeat the experiment?" And he did and Digital Rebar was even faster than the competitor. And it did exactly just install, booted, and was done. And he came back to the table, and it took 15 minutes to have the whole conversation to make everything work. It was that much of a simpler design. And he sat down and told the story. And I was in the middle of it. I'm just like, "We're going to have to pivot and put everything into the new version," which is what we did. And we just ripped out the complexity. And then over the last couple of years now, we've built the complexity back into the system to do all those additional but much more customer-driven from that perspective. CHAD: How did you make sure that as you were changing your focus, putting all of your energy into the new version that you [laughs] didn't introduce too much risk in that process or didn't take too long? ROB: [laughs] We did take too long and introduced too much risk, and we did run out of money. [laughs] All those things happened. This was a very difficult decision. We thought we could get it done much faster. The challenge of the simpler product was that it was too simple to be enough in customers’ data centers. And so yeah, we almost went out of business in the middle of all this cycle. We had a time where RackN went back down to just the two founders. And at this point, we'd gotten far enough with the product that we knew it was the right thing. And we'd also embedded a degree...with the way we do the UX, we have this split. The UX runs on a hosted system. It doesn't have to but by default, it does. And then we have the back end. So we were very careful about how we collected metrics because you really need to know who's downloading and using your products. And we had enough data from that to realize that we had some very committed early users and early customers, just huge brand names that were playing around. So we knew that we'd gotten this mix right, that we were solving a problem in a unique way. But it was going to take time because big companies don't make decisions quickly. We have a joke. We call it the reorg half-life problem. So the half-life of a reorg in any of our customers is about nine months. And either you're successful inside of that reorg half-life, or you have to be resilient across this reorg half. And so initially, it was taking more than nine months. We had to be able to get the product in play. And once we did, we had some customers who came in with very big checks and let us come back and basically build back up. And we've been adding some really nice names into our customer roster. Unfortunately, it's all private. I can tell you their industries and their scale, but I can't name them. But that engagement helped drive us towards the feature set and the capabilities and building things up along that process. But it was frustrating. And some of them, especially at the time we were open-source, were very happy to say, "No, we are a super big brand name. We don't pay for software." I'm like, "Most profitable, highest valued companies in the world you don't want to pay for this operational software?" And they're like, "No, we don't have to." And that didn't sit very well with us. Very hard, as a starting startup, it was hard. CHAD: At the time, everything you were doing was open source. ROB: So in the Digital Rebar era, we were trying to do Open Core. Digital Rebar itself was open. And then we were trying to hold back the BIOS patches, integrate enterprise single sign-on. So there was a degree of integration pieces that we held back as RackN and then left the core open. So you could use Digital Rebar and run it, which we had actually had a lot of success with people downloading, installing, and running Digital Rebar, not as much success in getting them to pay us for that privilege. CHAD: So, how did you adjust to that reality? ROB: We inverted the license. After we landed a couple of big banks and we had several others and some hyperscalers too who were like, "This is really good software. We love it. We're embedding it in our service, but we're not going to pay you." And then they would show up with bugs and complaints and issues and all sorts of stuff still. And what happened is we started seeing them replicating the closed pieces. The APIs were open. We actually looked at it and listening to our communities, they wanted to see what was in the closed pieces. That was actually operationally important for them to understand how that stuff worked. They never contributed or asked to see anything in the core. And, there's an important and here, and they needed performance improvements in the core that were radically different. So the original open-source stuff went to maybe 500 machines, and then it started to cap out. And we were like, all right, we're going to have to really rewrite the data store mechanisms that go with this. And the team looked at each other and were like, "We're not going to open source that. That's really complex and challenging IP." And so we said the right model for us is going to be to make the core closed and then allow our community and users to see all the things that they are actually using to interact with their environment. And it ends up being a little bit of a filter. There are people who only use open-source software. But those companies also don't necessarily want to pay. When I was an open-source evangelist, this was always a problem. You're pounding on the table saying, "If you're using open-source software, you need to understand who to pay for that service, that software that you're getting. If you're not paying for it, that software is going to go away." In a lot of cases, we're a walking example of that. And it's funny, more of the codebase is open today than it was then. [chuckles] But the challenge is that it's really an open ecosystem now because none of that software is particularly useful without the core to run it and glue everything together. CHAD: Was that a difficult decision to make? Was it controversial? ROB: Incredibly difficult. It was something I spent a lot of time agonizing about. My CTO is much clear-eyed on this. From his perspective, he and the other engineers are blood, sweat, and tears putting this in. And it was very frustrating for them to see it running people's production data centers who told us, and this is I think the key, who just said to us, "You know, we're not going to pay money for that." And so for them, it was very clear-eyed it's their work, their sweat equity, very gut feeling for that. For me, I watched communities with open-source routes, you know, the Kubernetes community. I was in OpenStack. I was on the board for that. And there is definitely a lift that you get from having free software and not having the strings. And I also like the idea that from a support perspective, if you're using open-source software, you could conceivably not care for the vendor that went away. You could find another life for it. But years have gone by and that's not actually a truism that when you are using open-source software if you're getting it from a vendor, you're not necessarily protected from that vendor making decisions for you. CentOS is a great...the whole we're about to hit the CentOS deadlines, which is the Streams, and you can't get other versions. And we now have three versions of CentOS, at least three versions of CentOS with Rocky, and Alma, and CentOs Streams. Those are very challenging decisions for people running enterprise data centers, not that simple. And nobody in our communities is running charity data centers. There's no goodwill charity. I'm running a data center out of the goodness of my heart. [laughs] They are all production systems, enterprise. They're doing real production work. And that's a commercial engagement. It's not a feel-good thing. CHAD: So what did you do in your decision-making process? What pushed you, or what did you come to terms with in order to make that change? ROB: I had to admit I was wrong. [laughter] I had to think back on statements I'd made and the enthusiasm that I'd had and give up some really hard beliefs. Being a CEO or a founder is the same process. So I wish I could say this was the only time [laughs] I had to question, you know, hard-made assumptions, or some core beliefs in what I thought. I've had to get really good at questioning when am I projecting this is the way I want the world to be therefore it will be? That's a CEO skill set and a founder skill set...and when that projection is having you on thin ice. And so you constantly have to make that balance. And this was one of those ones where I'm like, all right, let's do it. And I still wake up some mornings and look at people who are open source only and see how much press they get or how easy it is for them to get mentions and things like that. And I'm like, ah, God, that'd be great. It feels like it's much harder for us because we're commercial to get the amplification. There are conferences that will amplify open-source TerraForm, great example. It gets tons of amplification for being a single vendor project that's really tightly controlled by HashiCorp. But nobody is afraid to go talk about TerraForm and mention TerraForm and do all this stuff, the amazing use of open source by that company. But they could turn it and twist it, and they could change it. It's not a guarantee by any stretch of the imagination. CHAD: Well, one of the things that I've come to terms with, and maybe this is a very positive way of looking at it, instead of that you were wrong, [laughter] is to realize that well, you weren't necessarily wrong. It got you to where you were at that point. But maybe in order to go to the next level, you need to do something different. And that's how I come to terms with some things where I need to change my thinking. ROB: [laughs] I like that. It's good. Sometimes you can look back and be like, yeah, that wasn't the right thing and just own it. But yeah, it does help you to know the path. Part of the reason why I love talking about it with you like this is it's not just Rob was wrong; we're actually walking the path through that decision. And it's easy to imagine us sitting in...we're in a tiny, little shared office listening to calls where...I'll tell you this as a story to make it incredibly concrete because it's exactly how this happened. We were on a call. Everybody was in the room. And we were talking to a major bank saying, "We love your software." We're like, "Great, we're looking forward to working with you," all this stuff. And they're like, "Yeah, we need you to show us how you built this plugin because we want to write our own version of it." CHAD: [chuckles] ROB: We're like, "If you did that, you wouldn't need to buy our software." And they're like, "That's right. We're not going to buy your software." CHAD: Exactly. [laughs] ROB: And we're like, "Well, we won't show you how to use it. Then we won't show you how to do that." And they're like, "Well, okay. We'll figure it out ourselves." And so I'm the cheerful, sunny, positive, sort of managing the call, and I'm not just yelling at them. My CTO is sitting next to me literally tearing his hair. This was literally a tearing his hair out moment. And we hung up the call, and we went on a walk around the neighborhood. And he was just like, "What more do you need to hear for you to understand?" And so it's moments like that. But instead of being like, no, you're wrong, we got to do it this way, I was ready to say, "Okay, what do you think we can do? How do we think we can do it?" And then he left me with a big pile of PR messaging to explain what we're doing, conversations like this. Two years ago when we made this change, almost three, I felt like I was being handed a really hard challenge. As it turns out, it hasn't been as big a deal. The market has changed about how they perceive open source. And for enterprise customers, they're like, "All right, how do we deal with the licensing for this stuff?" And we're like, "You just buy it from us." And they're like, "That's it?" And I'm like, "Yes." And you guarantee every..." "Yes." They're like, "Oh. Well, that's pretty straightforward. I don't have to worry about..." We could go way down an open-source rabbit hole and the consulting pieces and who owns the IP, and I used to deal with all that stuff. Now it's very straightforward. [laughs] Like, "You want to buy and use the software to run your data center?" "Yes, I do." "Great." CHAD: Well, I think this is generally applicable even beyond your specific product but to products in general. It's like, when you're not talking to people who are good customers or who are even going to be your customers who are going to pay for what you want, you can spend a lot of time and energy trying to please them. But you're not going to be successful because they're not going to be your customers no matter what you do. ROB: And that ends up being a bit of a filter with the open-source pieces is that there are customers who were dyed in the wool open source. And this used to be more true actually as the markets moved a lot. We ended up just not talking to many. But they do, they want a lot. They definitely would ask for features or things and additions and help, things like that. And it's hard to say no. Especially as a startup founder, you want to say yes a lot. We try to not say yes to things that we don't...and this puts us at a disadvantage I feel like from a marketing perspective. If we don't do something, we tend to say we don't do it, or we could do it, but it would take whatever. I wish more people in the tech space were as disciplined about this does work, this doesn't work, this is a feature. This is something we're working on. It's not how tech marketing typically works sadly. That's why we focus on self-trials so people can use the product. Mid-roll Ad I wanted to tell you all about something I've been working on quietly for the past year or so, and that's AgencyU. AgencyU is a membership-based program where I work one-on-one with a small group of agency founders and leaders toward their business goals. We do one-on-one coaching sessions and also monthly group meetings. We start with goal setting, advice, and problem-solving based on my experiences over the last 18 years of running thoughtbot. As we progress as a group, we all get to know each other more. And many of the AgencyU members are now working on client projects together and even referring work to each other. Whether you're struggling to grow an agency, taking it to the next level and having growing pains, or a solo founder who just needs someone to talk to, in my 18 years of leading and growing thoughtbot, I've seen and learned from a lot of different situations, and I'd be happy to work with you. Learn more and sign up today at thoughtbot.com/agencyu. That's A-G-E-N-C-Y, the letter U. CHAD: So you have the core and then you have the ecosystem. And you also mentioned earlier that it is an actual software package that people are buying and installing in their data center. But then you have the UI which is in the cloud and what's in the data center is reporting up to that. ROB: Well, this is where I'm going to get very technical [laughs] so hang on for a second. We actually use a cross-domain approach. So the way this works...and our UX is written in React. And everything's...boy, there's like three or four things I have to say all at once. So forgive me as I circle. Everything we do at Digital Rebar is API-first, really API only, so the Golang service with an API, which is amazing. It's the right way to do software. So for our UX, it is a React application that can talk to that what we call an endpoint, that Digital Rebar endpoint. And so the UX is designed to talk directly to the Digital Rebar endpoint, and all of the information that it gets comes from that Digital Rebar endpoint. We do not have to relay it. Like, you have to be inside that network to get access to that endpoint. And the UX just talks to it. CHAD: Okay. And so the UX is just being served from your centralized servers, but you're just delivering the React for the JavaScript app. And that is talking to the local APIs. ROB: Right. And so we do use that browser as a bridge. And so when you want to download new content packs...so Digital Rebar is a platform. So you have to download content and automation and pieces into it. The browser is actually your bridge to do that. So the browser can connect to our catalog, pull down our catalog, and then send things into that browser. So it's super handy for that. But yeah, it's fundamentally...it's all behind your firewall software except...and this is where people get confused because you're downloading it from rackn.io. That download or the URL on the browser looks like it's a RackN URL even though all the traffic is network local. CHAD: Do your customers tend to stay up to date? Are they updating to the latest version right away all the time? ROB: [laughs] No, of course not. CHAD: I figured that was the answer. ROB: And we maintain patches on old versions and things like that. I wish they were a little faster. I'm not always sad that they're...I'm actually very glad when we do a release like we did yesterday...And in that release, I don't expect any of our production customers to go patch everything. So in a SaaS, you might actually have to deal with the fact that you've got...and we're back to our heterogeneity story. And this is why it's important that we don't do this. If we were to push that, if we didn't handle every situation for every customer exactly right, there would be chaos. And it would all come back to our team. The way we do it means that we don't have to deal with that. Customers are in control of when they upgrade and when they migrate, except in the UX case. CHAD: So how do you manage that if someone goes to the UI and their local thing is an old version? Are you detecting that and doing things differently? ROB: Yes, one of the decisions we made that I'm really happy with is we embedded feature flags into the API. When you log in, it will pull back. We know what the versions are. But versions are really problematic as a way to determine what's in software, not what's not in software. So instead, we get an array back that has feature flags as we add features into the core. And we've been doing this for years. And it's an amazingly productive process. And so what the UX does is as we add new things into the UX, it will look for those feature flags. And if the feature flag isn't there, it will show you a message that says, "This feature is not available for your endpoint," or show you the thing appropriate without that. And so the UX has gone through years of this process. And so there are literally just places where the UX changes behavior based on what you've installed on your system. And remember, our customers it's multi-site. So our customers do have multiple versions of Digital Rebar installed across there. So this behavior is really important also for them to be able to do it. And it goes back to LaunchDarkly. I was talking to Edith back in the early days of LaunchDarkly and feature flags, and I got really excited about that. And that's why we embedded it into the product. Everybody should do it. It's amazing. CHAD: One of the previous episodes a few ago was with actually the thoughtbot CTO, Joe Ferris. And we're on a project together where it's a different way of working but especially when you need it... so much of what I had done previously was versioned APIs. Maybe that works at a certain scale. But you get to a certain scale of software and way of working and wanting to do continuous deployment and continually update features and all that stuff. And it's a really good way of working when instead you are communicating on the level of feature availability. ROB: And from an ops person's perspective, and this was true with OpenStack, they were adding feature flags down at the metadata for the...it was incredible. They went deep into the versioned API hellscape. It's the only way I can describe it [laughs] because we don't do that. But the thing that that does not help you with is a lot of times the changes that you're looking at from an API perspective are behavior changes, not API changes. Our API over years now has been additive. And as long as you're okay with new objects showing up, new fields showing up in an object, you could go back to four-year-old software, talk to our API, and it would still work just fine. So all your integrations are going to be good, but the behavior might change. And that's what people don't...they're like, oh, I can make my API version, and everything's good. But the behavior that you're putting behind the scenes might be different. You need a way to express that even more than the APIs in my opinion. CHAD: I do think you really see that when you...if you're just building a monolithic web app, it's harder to see. But once you separate your UI from your back end...and where I first hit this was with mobile applications. The problem becomes more obvious to you as a developer I think. ROB: Yes. CHAD: Because you have some people out there who are actually running different versions of your UI too. So your back end is the same for everybody but your UI is different. ROB: [laughs] CHAD: And so you need a back end that can respond to different clients. And a better way to do that rather than versioning your API is to have the clients tell you what they're capable of while they're making the requests and to respond differently. It's much more of a flexible way. ROB: We do track what UX. We have customers who don't want to use that. They don't even want us changing the UX...or actually normal enterprise. And so they will run...the nice thing about a React app is you can just run it. The Digital Rebar can host its UX, and that's perfectly reasonable. We have customers who do that. But every core adds more operational complexity. And then if they don't patch the UX, they can fall behind or not get features. So we see that it's...you're describing a real, you know, the more information you're exchanging between the clients and the servers, the better for you to track what's really going on. CHAD: And I think overall once you can get a little...in my experience, especially people who haven't worked that way, joining the team, it can take a little bit for them to get comfortable with that approach and the flexibility you need to be building into your system. But once people are comfortable with it and the team is comfortable, it really starts to hum. In my experience, a lot of what we've advocated for in terms of the way software should be built and deployed and that kind of thing is it actually makes it so that you can leave that even easier. And you can really be agile because you can roll things out in a very agile way. ROB: So are you thinking like an actual rolling deployment where the deployed software has multiple versions coming through? CHAD: Yep. And you can also have different users seeing different things at different times as well. You can say, "We're going to be doing continual deployment and have code continually deployed." But that doesn't mean that it's part of the release yet, that it's available to users to use. ROB: Yeah, that ability to split and feature flag is a huge deal. CHAD: Yeah. What I'm trying to figure out is does this apply to every project even the small like, this just changes the way you should build software? Or is there a time in a product to start introducing that thing? ROB: I am a big fan of doing it first and fast. There are decisions that we made early that have proven out really well. Feature flags is one of them. We started right away knowing that this would be an important thing for us to do. And same thing with tracking dependencies and being able to say, "I need..." actually, it's helpful because you can write automation that says, "I need this feature in the product." This flag and the product it's not just a version thing. That makes the automation a little bit more portable, easier to maintain. The other thing we did that I really like is all of our objects have documentation embedded in them. So as I write a parameter or an ask or really anything in the system, everything has a documentation field. And so I can write the documentation for that component right there. And then we modified our build scripts so that they will pull in all of that documentation and create an aggregated view. And so the ability to do just-in-time documentation is very, very high. And so I'm a huge fan of that. Because then you have the burden of like, oh, I need to go back and write up a whole bunch of documentation really lessened when you can be like, okay, for this parameter, I can explain its behavior, or I can tell you what it does and know that it's going to show up as part of a documentation set that explains it. That's been something I've been a big fan of in what we build. And not everybody [laughs] is as much a fan. And you can see people writing stuff without particularly crisp documentation behind it. But at least we can go back and add that documentation or lessons learned or things like that. And it's been hugely helpful to have a place to do that. From a design perspective, one other thing I would say that we did that...and you can imagine the conversation. I have a UX usability focus. I'm out selling the product. So for me, it's how does it demo? How does it show? What's that first experience like? And so for me having icons and colors in the UX, in the experience is really important. Because there's a lot of semantic meaning that people get just looking down a list of icons and seeing that they are different colors and different shapes. But from the CTO's perspective, that's window dressing. Who cares? It doesn't have functional purpose. And we're both right. There's a lot of times when to me, both people can be right. So we added that as a metafield into all of our objects. And so we have the functional part of the definition of the API. And then we have these metaobjects that you can add in or meta definitions that you can add in behind the scenes to drive icons and colors. But sometimes UX rendering hints and things like that that from an API perspective, you're like, I don't care, not really an API thing. But from a do I show...this is sensitive information. Do I turn it into a password field? Or should this have a clipboard so I can clipboard icon it, or should I render it in this type of viewer or a plain text viewer? And all that stuff we have a place for. CHAD: And so it's actually being delivered by the API that's saying that. ROB: Correct. CHAD: That's cool. ROB: It's been very helpful. You can imagine the type of stuff we have, and it's easy to influence UX behaviors without asking for UI change. CHAD: Now, are these GraphQL APIs? ROB: No. We looked at doing that. That's probably a whole nother...I might get our CTO on the line for that. CHAD: [laughs] It's a whole nother episode for that. ROB: But we could do that. But we made some decisions that it wasn't going to provide a lot of lift for us in navigation at the moment. It's funny, there's stuff that we think is a really cool idea, but we've learned not to jump on them without having really specific customer use cases or validations. CHAD: Well, like you said, you've got to say no. You've got to make decisions about what is important, and what isn't important now, and what you'll get to later, and that requires discipline. ROB: This may be a way to bring it full circle. If you go back to the stories of every customer having a unique data center, there’s this heterogeneity and multi-vendor pieces that are really important. The unicycle we have to ride for this is we want our customers to have standard operating processes, standard infrastructure pipelines for this and use those and follow that process. Because we know if they do, then they'll keep improving as we improve the pipelines. And they're all unique. So there has to be a way in those infrastructure pipelines to do extensions that allow somebody to say, "I need to make this call here in the middle of this pipeline." And we have ways to do that address those needs. The challenge becomes providing enough opinionated like, this is how you should do things. And it's okay if you have to extend it or change it a little bit or tweak it without it just becoming an open-ended tool where people show up and they're like, "Oh, yeah, I get how to build something." And we have people do this, but they run out of gas in the long journey. They end up writing bespoke workflows. They write their own pipelines; they do their own integrations. And for them, it's very hard to support them. It's very hard to upgrade them. It's very hard for them to survive the reorg, your nine-month reorg windows. And so yeah, there's a balance between go do whatever you want, which you have to enable and do it our way because these processes are going to let your teams collaborate, let you reuse software. And we've actually over time been erring more and more on the side of you really need to do it the way we want you to do; reinforce the infrastructure as code processes. And this is the key, right? I mean, you're coming from a development mindset. You want your tooling to reinforce good behavior, CICD, infrastructure as code, all these things. You need those to be easier to do [laughs] than writing it yourself. And over time, we've been progressing more and more towards the let's make it easier to do it within the opinionated way that we have and less easy to do it within the Wild West pattern. CHAD: Cool. Well, I think with that, we'll start to wrap up. So if people want to find out more, where are some places that they could do that or get in touch with you? ROB: The simplest thing is of course rackn.com is the website. We encourage people to just, if this is interesting, download and try the software. If they have a cloud account, it's super easy to play with it, all things RackN through that. I am very active on Twitter under the handle @zehicle Z-E-H-I-C-L-E. And I'm happy to have conversations around these topics and data center and operations and even the future of cloud and edge computing. So please look me up. I'm excited to have conversations like that. CHAD: Awesome. And you can subscribe to the show and find notes and transcripts for this episode at giantrobots.fm. If you have questions or comments, email us at hosts@giantrobots.fm. And you can find me on Twitter @cpytel. This podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. Thanks for listening and see you next time. Announcer: This podcast was brought to you by thoughtbot. thoughtbot is your expert design and development partner. Let's make your product and team a success.
Transcript source: Provided by creator in RSS feed: download file