Podcast appearances and mentions of Mandy Moore

American singer-songwriter and actress

  • 813PODCASTS
  • 1,368EPISODES
  • 50mAVG DURATION
  • 5WEEKLY NEW EPISODES
  • Nov 30, 2023LATEST
Mandy Moore

POPULARITY

20162017201820192020202120222023

Categories



Best podcasts about Mandy Moore

Show all podcasts related to mandy moore

Latest podcast episodes about Mandy Moore

Ranking The Beatles
#99 I Will with guest Mike Viola (singer, songwriter, producer)

Ranking The Beatles

Play Episode Listen Later Nov 30, 2023 74:13


We're into the top 100 songs in our rankings! We can't turn back now!! Paul McCartney seems to have a knack for making sure he finishes things. "Now and Then" is a good example; he saw something there worthwhile and though it took a couple of decades, he saw it through to completion. The same can be said for "I Will," a song for which he had a melody kicking around a long time before he was able to complete a lyric for. After tossing lyrics he worked on in India with Donovan, and after John declined to help, he came up with what on paper are incredibly simple lyrics, but say so much more. And that melody...what a winner. He looped in Ringo and John to add percussion, and a brilliant vocal bass, cramming the final song with hooks in a simple arrangement. It makes for one of the more beautiful and light-hearted moments on an album that can sometimes be viewed as really dark. To discuss this song, we're thrilled to welcome back this week's guest, Mike Viola! Mike (who joined us back in 2021 to discuss #165 "Your Mother Should Know") is a wonderful singer, songwriter, and producer, who's worked with acts like Panic! At the Disco, Fall Out Boy, Mandy Moore, Jenny Lewis and more, and has written songs for numerous films like Walk Hard: The Dewey Cox Story. He's also the voice you hear singing the brilliant "That Thing You Do!" from the film of same name. Since we last spoke, he's released the fantastic "Paul McCarthy" album, which we highly recommend you check out. And he's going to be on a solo acoustic tour in the early part of 2024, which we also highly suggest you get tickets for if he's in your area. We chat with Mike about manic creativity, songwriting responsibility, the best way to watch Get Back, and more! What do you think about "I Will at #99? Too high? Too low? Or just right? Let us know in the comments on ⁠⁠⁠⁠⁠⁠⁠⁠Facebook⁠⁠⁠⁠⁠⁠⁠⁠, ⁠⁠⁠⁠⁠⁠⁠⁠Instagram⁠⁠⁠⁠⁠⁠⁠⁠, or ⁠⁠⁠⁠⁠⁠⁠⁠Twitter⁠⁠⁠⁠⁠⁠⁠⁠! Be sure to check out ⁠⁠⁠⁠⁠⁠⁠⁠www.rankingthebeatles.com⁠⁠⁠⁠⁠⁠⁠⁠ and grab a Rank Your Own Beatles poster, a shirt, a jumper, whatever you like! And if you're digging what we do, don't forget to ⁠⁠⁠⁠⁠⁠⁠⁠Buy Us A Coffee⁠⁠⁠⁠⁠⁠⁠⁠! --- Send in a voice message: https://podcasters.spotify.com/pod/show/rankingthebeatles/message Support this podcast: https://podcasters.spotify.com/pod/show/rankingthebeatles/support

Giant Robots Smashing Into Other Giant Robots
502: OKRs and Business Coaching with Evan Hammer

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Nov 30, 2023 36:53


Today's conversation revolves around the importance and challenges of goal setting within organizations. It highlights how identifying and articulating real problems can be transformative, turning abstract desires for growth into concrete plans for improvement. Host Victoria Guido and special guest Evan Hammer discuss the nuances of leadership and organizational self-awareness, emphasizing the need for honesty and a growth mindset when addressing weaknesses. They touch on Evan's role as an OKR Coach in fostering alignment, focus, and excitement around goals, particularly in small to mid-sized companies. Evan shares his enthusiasm for goal setting and believes his passion can inspire others. He points out the positive outcomes when employees engage with goals that address problems they care about. Victoria and Evan agree that success is not solely measured by hitting OKRs but also by engagement and alignment within the team. They discuss the ideal organizations for Evan's work, which include small to medium-sized companies seeking to improve focus and alignment, as well as start-up teams needing more straightforward goal statements and go-to-market strategies. Evan also recounts his experience as a Techstars mentor, noting that a common issue across companies is the lack of clear goals, and he emphasizes the power of focus as a lever for growth. Follow Evan Hammer on LinkedIn (https://www.linkedin.com/in/evanhammer/) or X (https://twitter.com/evanhammer). Visit his website at evanhammer.com (https://evanhammer.com/). Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: 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, Victoria Guido. And with me today is Evan Hammer, OKR and personal goals coach. Evan, thank you for joining us. EVAN: Thank you for having me. I'm excited to be here. VICTORIA: Wonderful. Me too. And I wanted to ask you first, before we dive into business, tell me a personal goal that you've achieved recently that you're most proud of. EVAN: I guess a couple of months ago, I did a 100-mile loop of Mount Rainier. So, it was a 10-day backpacking trip. My younger brother, I went with him, and it's the kind of thing he does more regularly. Yeah, it was something I was kind of excited to do but really unsure of, and worked super hard between the gear and the training and just, like, the mindset. But it was also just awesome being out in the woods for ten days. VICTORIA: I also love being out in the woods for long periods of time. I guess, like, how long did your brother plan this trip for? And how long were you involved before you decided to go? EVAN: You know, it was something he was planning to do since the spring. He won a lottery to be able to do it. And I was going back and forth for a few months. And I think it was just maybe in the end of June where I was like, okay, I'm doing this. I need to put together a gear list, figure out a training plan. I live in Fort Greene in Brooklyn. And it was a lot of, like, waking up early and going up and down the steps in Fort Greene Park, which is, like, you know, 6, 10 flights of steps, something like that outdoors -- VICTORIA: [laughs] EVAN: With a heavy backpack on for two to three hours, like on weekends. VICTORIA: Oooh. Wow. EVAN: Yeah, it was one of those things I was like, you know, you don't know when you do something like this how it's going to go until you're there doing it or how your body is going to respond. So, it was a little bit of, like, trying to train as much as possible but also being aware that I just have to deal with whatever will happen on the trip. VICTORIA: I love that, at first, it sounds sort of, like, fun. Like, "Oh, do you want to go on this trip with me?" And you're like, "Yeah, okay." And then you look at the training plan, and it's like, "We'll wake up at 6:00 a.m. every day and walk up and down ten flights of stairs [laughs] with a heavy backpack on," you know, like, "Oh okay, [laughs] a lot of prep work to have this trip." [laughs] EVAN: It's fun in that you're doing something amazing, and it's beautiful. And it was just one of the more beautiful places I've ever been. It was really interesting and meaningful to me to kind of be detached from everything that I normally do and just focus on being in the woods and hiking these mountains. But yeah, you don't know how it's going to go. So, it's like you're putting yourself in an extreme physical situation. I think that's anxiety-inducing, and it feels good and is healthy and protective to train for it. VICTORIA: I agree. Yeah, I mean, I totally relate to that. I'm a rock climber and hiker myself. And sometimes I spend all this time, you know, on gym memberships, climbing in the gym, running up and down hills. And then, I get all the way out to rock, and I'm about to start my climb, and I'm like, why am I doing this? [laughs] This is a lot of work to get to this point. But then it is all fun, and it's super worth it. And I always feel restored whenever I come back from being a long time in nature. It's really great. I think maybe to get towards, like, a metrics conversation that we talk about a lot in climbing is the type of fun something is. So, there's three types of fun levels. Have you heard this framework before, Evan? EVAN: I have not. VICTORIA: Okay, so there's three levels of fun. Level one fun is, like, you're having fun while you're doing it. We're, like, laughing and enjoying recording a podcast together. Like, oh my God, it's so much fun, super easy, not stressful. Maybe it was a little stressful for you, I don't know. [chuckles] It's a little stressful for me. Level two fun is it's a little difficult while you're doing it, but you're still looking back on it and having fun, but you're never really in any kind of intense danger, right? Like, you're going on a backpacking trip. It's relatively within your health expectations, and the trail is walkable. You're not, like, going to fumble and fall down a cliff. It's level-two fun. So, you're mostly enjoying it. Like, it's kind of difficult, and there's some effort involved, but it's still fun. Level three fun is when it's very dangerous, and you're really scared the whole time [laughs], and, like, you maybe, like, could have died. But looking back on it, it's fun. So, how would you rate your Mount Rainier trip? EVAN: It's funny because we actually...we didn't come up with the levels, but we spoke about how when you're hiking, often, in your head, you're just trying to figure out how much longer you have to hike as if the whole point was not to be hiking. And then you finish hiking for the day, and you're like, "Oh, that was so great. I'm so looking forward to waking up tomorrow and hiking some more." VICTORIA: Yeah [chuckles], exactly. EVAN: That fits the level two fun pretty explicitly. VICTORIA: That's great. Yeah, it's a very, you know, I've found it to be pretty useful. And, you know, as I get older, I tend to try to avoid level three fun more often [laughs]. Like, I don't really need to be frightened [laughs]. I have enough stress in my life. I don't need to also endanger myself too aggressively. But, you know, everyone has their own risk level as well, right? Like, someone else might think the type of climbing and hiking that I'm doing is level three fun, but, for me, it's more...and, like, there's other things like skateboarding and riding a bike where, for me, is level three. I'm scared and [laughs] -- EVAN: Right. And I think you also frame level three as, like, sort of physical safety. But, you know, people have different risk tolerances and classifications across the board. So, like, for me, I try to stay away from things that I would consider physically dangerous. But I'm very comfortable, like, taking financial or social risk, where I know other people have an inverted kind of spectrum where, like, social risk is, like [laughs], you know, is a terror to them when physical risk doesn't seem that scary to them, you know, so... VICTORIA: That's so interesting. And especially for me, I do a lot of networking. And I'm, of course, been really active in San Diego Startup Week this week. We're recording this in October. So, for some people, going to an event where there's going to be hundreds of people, you maybe have met some of them before, but you really don't have a buddy that you are coming to this event with. You're on your own. You're going to have to walk up to people, start conversations, figure out who is who, and, like, find your people. That's terrifying for a lot of people. And they're like, "Absolutely not." [laughs] EVAN: Well, it's interesting how, like, level one and level three can be inverted. I went to a conference last fall by myself, and I actually had some voice issues. So, I couldn't talk for a little bit before this, so it was like...or even that well, during, you know, it was kind of an environment that I think a lot of people might be feeling like, oh, that's level three social experience. And I just remember how much fun I had there. Like, for me, it was totally a level one thing. But, you know, there's definitely moments on this hike where I was like, oh, this is level three. This feels physically scary, even though most of the time it wasn't. VICTORIA: Yeah, no, I think it's helpful. So, maybe that helps us segue a little bit into telling me more about what you do and how you came to do what you do. What's your background? EVAN: What do I do? I'll give you, like, a list of the things that I do. I will say I help people focus and maybe communicate better. You know, the list is, like, I am an OKR coach, right? That's objectives and key results, coaching business leaders on how to set goals and get everybody aligned towards the same goals. I do personal goals coaching, and that's, like, helping individual people set goals that are meaningful to them and live more intentionally. I'm a Techstars mentor, where I mentor companies. And I also do, like, a fractional head of product role. And it's a little all over the place. I mean, it's something that, obviously, a lot of that is, like, business coaching but really focused around focus and how you can use goal setting to accelerate growth for a business or an organization or for yourself personally. VICTORIA: How did it get started? What led you to be the coach that you are today? EVAN: Yeah, you know, I get asked this question. And I feel like there's a story about how I kind of tested goal setting. I was a founder. I went to Techstars in, like, 2013. And I was running the company. So, I had to, like, mess around with goal setting and then ended up being at Codecademy and Vimeo. They were doing OKRs. And there were certain things I liked and certain things I didn't. And there was, like, this progression. But I think the truth is that I just really like systems and organizing things, and I think I've always been like that. And OKRs are a way of taking something that's really messy, which is, like, a group of people running together in some direction and saying, "Oh, well, what if we come up with, like, some agreed plan here, and some rules, and some guidance? And we can split this out between what, like, the company and the organization is doing versus what individual people are doing or what the department's doing." I think I just find that process comforting. It's just, like, gleeful for me to be working with people on how they're going to focus and organize themselves, and then also how they're going to communicate that focus to each other, which I think is, like, a key part of people staying on the same page. VICTORIA: I love that. And I really want to dig into some examples of OKRs and maybe even get some free OKR coaching for myself on this episode. But, you know, but with your background, I wanted to start with looking at the founder experience versus being someone in a larger organization. How do you bring in that context of where you are in your journey into how you think about setting goals for an individual? EVAN: I think it's a hard question for me because my viewpoint on how goal setting and strategy and achievement in organizations has changed over this whole time, right? So, I was a founder, then at these larger organizations. I think I've tried to synthesize some, like, through line rather than difference between them. So, let me start there. I think when you look at a founder, or a founding team, or a larger organization, the key thing to figure out is where you're going and coming up with really clear goals. And then, depending on the size of the organization, there's different tactics you can use, right? So, if you're a founder, it might be just sitting down with your co-founders once a week, having a clear Northstar metric, and having a clear goal, and then everybody's running, and that works. Zoom to a 100-person company, which is, like, I probably focus on, like, 20 to 100-person companies. And now you have a lot of confusion between departments because you have people who are working on very different parts of the business. So, I think OKRs, at that point, are really great because it is this, like...and we will talk more about OKRs. But it's this cascading goal-setting technique where you have company goals that everybody understands and agrees to, and then each department is carving out how they're going to support that, which is, like, less necessary for a small company. But I still think the key thing is to know what you want, what your biggest problem is in getting there, and what your approach is going to be in overcoming that problem, which is, you know, is, like, I guess, strategy 101. VICTORIA: I like that. And it's funny; it makes me think of a tarot card layout. That's a situation I'll come and approach. Anyways, I wanted to get, like, down to the basics. I think we said OKRs earlier, but what is an OKR, if you can define that? EVAN: Yeah, so objectives and key results. An objective is any goal you have, so that can be launch a feature, revamp your sales process, or achieve some sort of milestone or some capability, right? So, often, that's, like, build a new department, or come up not just with a specific feature but a new offering, like launch a whole product line. Anything that's important to you can be a goal. It should be clear and inspiring. And that's the objective piece. Key results answer the question: how will you know if you're successful in reaching that goal? That might be if you're building a new department, a certain number of hires. If you're launching a feature or want to have a new offering, that might be some KPI for the product team, like, you know, onboarding rates or retention rates. VICTORIA: Yeah, and let's maybe even go into a real example: myself, I'm a managing director here at thoughtbot. People who aren't familiar with thoughtbot...I'm sure everyone listening has [laughs] familiarity with what we do as a product and business consultancy. And our team at Mission Control, the goal was to innovate on our approach to how we were deploying and managing software. So, over 20 years, the trends and modernization of infrastructure was something we wanted to be a part of, and we wanted to enable and accelerate not just our own development teams but our clients' teams in deploying software securely and efficiently and meeting everything that we need to do. Like, it's an incredibly complex environment. And there's lots of choices to make. So, that's, like, the big vision of what we're trying to do at thoughtbot. It's a new service. It's touching not only our internal processes but also, like, the growth of our business overall. So, what I've done as a managing director I talk with my team. I work with the CTO of thoughtbot, Joe Ferris. He's my acting director [chuckles] on identifying what is our overall approach? What's our strategy? So, one of the things we do at thoughtbot, one of our strategies, is to put content out there. So, we want to build stuff that works for us, and we want to share and talk about it. And we believe that by putting good stuff out there, good stuff will come back to us [laughs]. So, really just increasing the amount of blog posts, increasing the amount of open-source contributions and [inaudible 13:03] people we talk to and hear about what their problems are. We think that that will be an indicator for us of whether or not we're being successful in growing this business. So, that's just, like, one small strategy, but I've got five other ones if you want to talk about them. EVAN: Yeah, I mean, you highlighted a large goal that you have, and then some of the, like, sub-objectives in reaching that goal. And you could imagine key results being metrics along number of blog posts, audience size, number of readers, engagement. I mean, all those have different values, depending on what your goals are. VICTORIA: Exactly right. Like, there's the overall leading indicators we have of, like, whether or not we're successful as a business [laughs], which is, like, revenue, and, like, margins of profit, which really aren't going to change. And as a company, we don't change our policies or things that often to where those costs are ultimately going to change. It's all about, like, are we bringing in new business? Are we retaining the clients we have? And are we able to sustain, you know, work that centers around this problem area? So, that kind of, like, makes our goal tracking, like, the numbers month to month somewhat easy. Although those individual strategies and how they all line up to meet, that is something I think I'm curious to hear about how you facilitate those discussions with teams. How would you, like, begin an engagement with a team where you have a company like thoughtbot [laughs]? How are you going to coach us to get better at our goals? EVAN: Well, one thing I do is I pull apart KPIs, Key Performance Indicators, from OKRs, which you actually implied. KPIs are metrics you use to judge the health of your business, when OKRs are the goals that are going to transform your business. They fit well together. But, you know, for a founding team, they're still trying to figure out, well, how do we actually measure if this is going well? What does that mean? And I have a whole technique for that. But for a larger company, something like thoughtbot, you probably have pretty clear KPIs for the business and for each department. And you can look each month to make sure that those are in a healthy band or each week. And then, when you go to set goals, one of the things you can say is, "Hey, what's not working well? Why are the KPIs not where they should be?" And there's other ways of coming up with good goals, but I do think that's one of the starting points for goal setting. Another one, and I'm curious if you all have this here, is, like, a sense of what's holding back your growth. So, if you have a clear goal of growing your business year over year; usually, people in different departments have a sense of what challenges they're facing in executing towards those growth goals. And, fundamentally, there's usually some sort of competitive or market conditions or customer conditions that are concerning to you as a business in terms of where you're currently at. So, do you all have that type of, I guess, angle on thoughtbot's growth at all? VICTORIA: You know, for me, it's my first year as managing director. And experiencing how thoughtbot does planning, I appreciated our approach this year was to ask each managing director more like a retro style, like, "What should we do more of? What do we like doing? What didn't really work, and what should we do less of? And what other things do we want to start doing?" So, it's kind of similar to start, stop, continue but, you know, just really reflecting on, like, what's working? What should we do more of? What doesn't work, and we should just stop [laughs], or change, or figure out how to improve? And then, what should we start doing? And what kind of new behaviors do we need to practice and learn to build a better system? Which I think when you talk about what's holding people back, I think it's difficult to understand in a complex organization of 100 people how all these departments work together and how they contribute and support teams. So, I'm curious, from your experience, and you like to come in and organize and get focused, so if you have that level of complexity in an organization, how do you start to get people organized and understanding how they all work together and what's working and what's not? EVAN: Yeah, that's a good question. I might punt that to the second half of my answer here and answer an earlier question [inaudible 17:08] how we get started. Because I think that actually comes up as, like, the second piece. I think the first piece is, like, when I start with an organization, I usually sit down with the CEO. Maybe there's a founding team. Maybe it's a leadership team. And I try to understand their vision for where the company's going and, one, how clear and actionable it is. So, does it feel like, oh, I get exactly how they're going from point A to point B to point C, or is it a little bit murkier? And trying to nail that down. And sometimes I do, like, a strategy workshop around that. But the next piece is understanding if they have a clear plan for the next quarter, next year. When I come into companies, I'm doing OKRs quarterly. So, even if they don't have a clear strategy, we still need to set goals for the next quarter. I then have them just kind of draft goals with not that much guidance here. I might do some sort of training so everybody, like, understands what OKRs are. And then, you know, I do...and this is a common thing, I think, like, my background is in product, is trying to understand the root cause of things. So, usually, there's some goal that I can ask. And, usually, there's a goal that's, like, something that seems very strategic, like a new offering, or changing how the business is organized, or it's very growth revenue-oriented. Those are, like, the two types of goals that people usually come up with. So, there's a lot of just, like, asking why this is valuable, and kind of going up the ladder, down the ladder asking why it's valuable, and understanding what their root motivation is for doing this. And then going the other direction and saying, "Oh, if we did this, then what would happen?" And trying to just understand how they're thinking of this goal and how it fits in a longer chain of events. And, usually, through that process, we shift the focus point. So, it's rare that somebody comes up with, like, exactly the right goal. I think when they start understanding what would the effect be of that goal, sometimes one of those things is the actual goal. Or if there's a root cause, it doesn't always mean that we go to the root cause, right? If somebody wants to, like, fix their onboarding, and that's really, like, their whole focus point, you know, when you say, "Why?" and they talk about helping a certain customer get more focused. And then you may say, "Well, why?" And they say, "Oh, well, you know, we have this revenue model that involves helping them, and we make money." And "Why?" "So we can grow our business at a certain clip." And that's the arc that we build. That doesn't mean we go to, oh, well, you're trying to make more money faster. That might not be really what the focus should be for the quarter. So, we have to always start just trying to, like, dial in with what the right angle is. That's both...I think you want to choose the thing that's the most fundamental to the business that still feels attainable and focusable, if that's a word, in the short term, right? That's like, oh, this is a good target for a quarter or a year, if you're doing it on an annual basis. So, that's, like, how I usually get started with folks, which, you know, depending on how much thought there is around strategy, like, it goes in different ways. Sometimes, the company has a very, like, clear strategy, and then everything I said works pretty smoothly. And you get to a goal very quickly that you kind of orient the company around. If the strategy is either not explicit or maybe the CEO has a different vision for it than, you know, CTO or the head of sales, then there's more negotiating between folks and getting on the same page. And I think that's a whole, like, can of worms that we can dive into, but that's, like, a different type of exploration. VICTORIA: Yes, I love all that. I have so many follow-up things I want to ask. Just to play it back a little bit, too, I really resonated with some of what you're saying around it's kind of better to draft it; just write it. Like, the act of planning is more valuable than the plan itself. Like, get as close as you can as fast as you can [laughs]. That makes sense. Like, something that feels, like, good enough and, like, kind of go with it and, like, see how it goes. You know, like, I think that's a mindset that can be difficult to implement in an organization, especially if there's been, like, past trauma with, like, not meeting your goals. And how does that flow down to the organization? EVAN: That's a hard thing. VICTORIA: And it makes me think of, like, what you started with, like, talking about getting to the root of what's happening. Like, what are the motivations of individual people? Like, what's happened in the past? Like, trying to take an approach that's...I prefer blame-aware to blameless. You can't get away from the tendency to blame people. So, you just have to accept that that happens and kind of move on and, like, quickly go past it [laughs] and just, like, really get to, like, what are the facts? What does the data say about this organization? So, anyways, I think that that was where I went to. I think -- EVAN: One thing I did...I started with a new company; I guess, two or three quarters ago around the OKR coaching. And, you know, I think there was this expectation. We've been doing OKRs. There's issues we need you to come in and solve and fix everything. And the tone I tried to set was, hey, I'm not here to set great goals for you. You're going to set the best goals you can. And I'm here to help support that process and teach you a lot about goal setting. And we're going to do this every quarter. And after two or three quarters, things are going to start becoming a lot easier. People are going to communicate better. Everybody's going to be on the same page. And it's going to feel like, oh, we're getting really good at goal setting. And then, like, I try to set that tone when I start working with the CEO of, like, the point here is to make your whole leadership team good at goal setting so that you have this skill as an organization, rather than set just the right goals with the right language in the right way right now, right? We want to timebox everything. So, we're moving forward using this tool to make progress throughout the quarter, and then each quarter, revisiting it and getting better. MID-ROLL AD: Are you an entrepreneur or start-up founder looking to gain confidence in the way forward for your idea? At thoughtbot, we know you're tight on time and investment, which is why we've created targeted 1-hour remote workshops to help you develop a concrete plan for your product's next steps. Over four interactive sessions, we work with you on research, product design sprint, critical path, and presentation prep so that you and your team are better equipped with the skills and knowledge for success. Find out how we can help you move the needle at tbot.io/entrepreneurs. VICTORIA: And I'm curious if there's anything else when you're evaluating whether or not someone might be a good fit for the work that you want to do with them. Are there, like, some red flag, green flag energy that you check for with executives when you're deciding whether or not to work with them? EVAN: Yeah, there are two flags that come up; one is, are they clear with what they're saying? I think a lot of leaders want to sound good. So, that doesn't mean that they need to be clear right off the bat. But in a conversation where someone says, "This is our vision," and you say, "Hey, I don't understand X, Y, and Z," or "This part didn't make sense to me. Can we dive into it?" And yeah, if someone through a conversation can be really clear about what's important to the company and where they're going, I think that's, like, key. Because if someone's talking around issues all the time and when you kind of bring up things they don't really address it, it's very hard to make any progress. It's like, you know, the lack of specificity ends up being a defense towards maybe dealing with some of the difficult conversations. But, like, at the end of the day, like, one of the major things that happens with goal setting that makes it, I think, feel exciting to people when it does—it always feels exciting to me [laughs]—when it feels exciting to other people is that they say, for the first time, "Oh, this is actually the thing holding us back. This is the problem. Yeah, we want to grow our business." But when you say, "Well, what are all the things you do to grow your business?" All of a sudden, you start talking through things, and someone says, "Hey, this is the real problem. This is why we're struggling to grow our business." And, you know, that transforms the conversation. People who are avoiding being specific, that can be really hard. That's one thing. And the other thing is around responding to feedback. And, you know, you can just...and this is a common interview question, right? You can ask somebody, "What do you think the weaknesses of your organization are?" And if somebody doesn't know, but they're, like, open to it, that's, I think, totally fine. But if it seems like they're constantly kind of, like, filibustering the answer there, it's like, hey, the main thing you're bringing me on to do is to make sure that you communicate the weaknesses of your organization to everybody else because that's what goals are about. They're about overcoming the weaknesses of your organization. So, those are two areas. And they also speak to, like, I think, rapport with the people that I'll be working with. VICTORIA: I agree. And I like that, you know, you're asking really for people, are you going to be honest about what's happening in your organization? Are you honest with yourself about where you're not doing well? And I think I also pay attention to the language people use to describe those problems. And are they really speaking with a growth mindset or a fixed mindset? Because that's a really hard thing to change [laughs]. Naturally, I think people who are good leaders and run successful companies have a growth mindset. So, I think that's usually there. But that would be some yellow-flag stuff for me. EVAN: You know, when people are looking to hire an OKR coach, they usually already are looking for improvement. And it's not like they're hiring a product manager, right? You have to be saying to yourself, hey, I believe that if we did better around goals, our company would grow better. We'd have better focus. We'd have better alignment. Like, there's already a belief that people have that is usually pretty self-aware of the limits of both the people there and the organization where it's at today, and they're looking for help. So, I think I come across what you brought up more in individual people on a leadership team that, like, feel more coachable or less coachable depending on how interested they are around expanding how they think about things and growing. And, you know, obviously, [inaudible 27:01] lots of opinions that are wrong, and I love the disagreement that comes up there. But you want to, you know, you want to be speaking to people that are generally open to learning through a conversational process. VICTORIA: Right. Yeah, I think it's like a confirming thing. Like, if they're reaching out to a goals coach, they probably do have a growth mindset. And if the top leadership does, then that means that there's an opportunity for other people to come along as well. So, I like opening it up that way and getting people to get specific about their goals as well. I think that's a real challenge. Like, it's either too vague or too specific, not inspiring enough. Some people still bring up SMART goals with me. I like to prefer HARD goals, but you probably need those. And I'm curious if you're familiar with those acronyms. I can spell them out. And I'm sure you've heard of both of these [laughs]. A lot of people are familiar with the SMART goals and the specific, measurable, actionable. I forget what the Rs and Ts are. But then HARD goals are heartfelt and more around, like, the big vision. And it's something that you want to get people excited about, which is something that you said earlier. Like, how do you get people excited? And some people would think of a corporate goal-setting event as a level three fun [laughter]. So, how do you make it more like a two or a one? EVAN: I don't know, a lot of what I hope I offer to folks...and I've gotten good feedback here is that I enjoy goal setting a lot. So, talking through all these problems, talking through challenges, doing workshops, having these conversations. Like, whenever I'm doing that, it's my favorite thing to be doing. So, I think, hopefully, some of my joy just rubs off on the people around me. Because I do think talking to somebody who's excited about what you're talking about is helpful. The other thing is, usually, at a decently small company, under 100 people, I'm working with the CEO and the leadership team; you know, people are there because they care about the company. They care about the mission of the company. They care about the people in the company, and they care about the growth of the company. So, I get why goal setting has, I think, can have a bad rap. But if you're fundamentally solving problems that people care about, there should be some, like, glee that comes in when people say, like, "Oh, yeah, I thought this was going to be about, like, how do we grow more? And that felt very generic to me." And it turns out when we actually think about how we grow more, and we talk through what's holding back our growth and what we can do to overcome that, and we have the top few ideas that we've all come up with, usually, those feel really relieving to people. And there's a company I'm working with now that I think is struggling to shift their target market a bit because...and there's awareness that the target market needs to shift, but there isn't so much knowledge around the new target market. There's a lot more knowledge around the old target market. And so, we're doing a bunch of research and talking to folks. And I know once we're able to say, "For this target market, we need to do X," there is going to be, like, a huge amount of excitement and relief at the organization because people will feel like, oh, we've crossed that bridge, that bridge that we were kind of in the middle of crossing and didn't really know where the other side was. We now can see that other side, and we're going there. So yeah, I think there can be a lot of excitement around this stuff when it's real, and it's important work that you're doing. VICTORIA: Right. Like, maybe there's a good factor of, like, how do you measure if what you've done with a company is successful? Is there a glee scale that you [laughs] use to evaluate? EVAN: You know, for me, it's still probably more subjective than I want it to be. You know, I'd love it to be like, what percentage of people's OKRs did I [laughs] hit each quarter? And when I work with them, it gets better. But I think that's, like, a pretty short-sighted view in terms of my role. So, you know, I'm looking for people who were maybe disengaged to be more engaged, people who didn't see the value of OKRs to see and be able to articulate how their daily work is different because of the OKRs we set. Yeah, and obviously, there's excitement when we're solving real problems. And we're changing the problems each quarter, and people are seeing growth increase. You know, like, all that stuff, I guess there's, like, a tangible excitement with. But I hope folks can, like, just connect the dots between the work, which can be tedious work around goal setting and negotiating with people. And often, it pulls you out of other day-to-day work that you're doing, especially for a small company, with the excitement towards the end of the quarter of reaching these goals and moving on to the next challenge. VICTORIA: I think that's great. I think that was a perfect answer. It's kind of not always easy to know what [laughs]...like, sometimes there's a sense of it, like, you have a feeling, and sometimes you can get data to back that up. And other times, you know you're doing the right thing by the people's faces around you at the end of the workshop [laughs]. So, I think that's great. And so, maybe my final question would be is, like, what would be the ideal organization that you would want to work with? Like, who's your ideal customer right now? EVAN: Yeah, I guess I have two ideal customers based on these, like, two things that I'm doing. In terms of the OKR coaching, I usually look for CEO or founding team of a company that's now, like, 20-plus people who's saying, "Oh, we have these departments," or "We have this leadership team. And we need to really get all on the same page at the beginning of the quarter because then everybody's going to consistently be talking to each other but has other people that they need to organize." That's definitely for the OKR coaching where, like, 20 to 30 people is where that starts. That probably goes up to 100 in terms of where I focus. For the other work I do as a Techstars mentor and the coaching I do through that, that's really for founding teams. And that's more focused on how do you take your vision and make that a clear goal statement, which is around, like, behavior change, usually, in a certain population you're targeting? How do you turn that into a go-to-market plan? How do you turn that into a product roadmap? So, for that, that's just much smaller teams. I actually think that work often needs to be done at larger organizations, too. That's, like, a common thing that comes up. And that can bleed into strategy at large organizations. But yeah, I know that's probably a pretty broad bucket, but groups of people that believe that focus is a key lever towards faster growth. VICTORIA: Thank you for that. And I guess I said that was my final question, but I'll add two more questions. Can you share an anecdote from being a mentor at Techstars that you think will be interesting for our audience? EVAN: I think I was struck the first time I did the mentoring. They do, like, a Mentor Madness. So, it's like, you know, six companies in a row, and every company they all have different challenges. But a lot of them, it's, like, helping them articulate what they're doing a little bit more clearly. And often, there's a question around sales and growth and maybe fundraising. So, there's just, like, a focus in that direction. And I found that every company, even though they had kind of different questions, I was giving the same answer to, which was, I don't think your goal is clear to you or to me. And so, there's this framework that I would use with each company that there was, like, this aha moment. And I picked this up from a person named Matt Wallaert. It was a book, "Start at the End." It's called a behavioral statement. And it's when population wants to motivation, and they have limitations, they do behavior as measured by data. And the kind of conceptual version is, oh, you're trying to get some group of people to change their behavior. And that's only going to happen if you can tap into a motivation that happens to them as frequently as the behavior you want to change. So, it's like a formalization of that. And each group, I'd like bring up the statement; we work on filling it quickly. And there was just, like, a clarity that would develop around what they were doing and how to orient themselves both on the growth and marketing side and on the product development side. I guess it just struck me how much that little framing was transformative to [laughs] accelerating both focus and alignment but, more importantly, like, getting somewhere that they wanted to get to. VICTORIA: It sounds almost like building a mental model of what you're trying to do [laughs], right? Like, it was a mental model that you referenced in your mind that helps you make decisions every single day. So, I really appreciate that. And we are about out of time. So, let me ask you, is there anything else that you would like to promote today? EVAN: Sure. Looking for a couple more OKR coaching clients for the new year, and just happy to chat with anybody who has questions around OKRs or goal setting for their organization. I also do personal goals coaching, which is a little different from the OKR coaching that I help individual people with their goals. But it's also similar. It's a lot of like...it's a lot more, like, reflection, and getting to know oneself, and coming up with goals that are really meaningful. And then the other half of, like, I think you alluded to this earlier around systems. Like, how do you take a goal that's important to you and actually act every day in ways that move you towards that goal? So yeah, interested in talking to people about both of those. I do some workshops as well, so people can reach out to me at evan@evanhammer.com. I can also put anybody on my mailing list. I do some workshops around both those things. VICTORIA: Wonderful. Thank you so much, Evan, for joining us today. You can subscribe to the show and find notes along with a complete transcript 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 @victori_ousg. This podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. Thank you for listening. See you next time. AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions. Special Guest: Evan Hammer.

The Bike Shed
408: Work Device Management

The Bike Shed

Play Episode Listen Later Nov 28, 2023 32:57


Joël recaps his time at RubyConf! He shares insights from his talk about different aspects of time in software development, emphasizing the interaction with the audience and the importance of post-talk discussions. Stephanie talks about wrapping up a long-term client project, the benefits of change and variety in consulting, and maintaining a balance between project engagement and avoiding burnout. They also discuss strategies for maintaining work-life balance, such as physical separation and device management, particularly in a remote work environment. Rubyconf (https://rubyconf.org/) Joël's talk slides (https://speakerdeck.com/joelq/which-time-is-it) Flaky test summary slide (https://speakerdeck.com/aridlehoover/the-secret-ingredient-how-to-understand-and-resolve-just-about-any-flaky-test?slide=170) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. JOËL: And I'm Joël Quenneville. And together, we're here to share a bit of what we've learned along the way. STEPHANIE: So, Joël, what's new in your world? JOËL: Well, as of this recording, I have just gotten back from spending the week in San Diego for RubyConf. STEPHANIE: Yay, so fun. JOËL: It's always so much fun to connect with the community over there, talk to other people from different companies who work in Ruby, to be inspired by the talks. This year, I was speaking, so I gave a talk on time and how it's not a single thing but multiple different quantities. In particular, I distinguish between a moment in time like a point, a duration and amount of time, and then a time of day, which is time unconnected to a particular day, and how those all connect together in the software that we write. STEPHANIE: Awesome. How did it go? How was it received? JOËL: It was very well received. I got a lot of people come up to me afterwards and make a variety of time puns, which those are so easy to make. I had to hold myself back not to put too many in the talk itself. I think I kept it pretty clean. There were definitely a couple of time puns in the description of the talk, though. STEPHANIE: Yeah, absolutely. You have to keep some in there. But I hear you that you don't want it to become too punny [laughs]. What I really love about conferences, and we've talked a little bit about this before, is the, you know, like, engagement and being able to connect with people. And you give a talk, but then that ends up leading to a lot of, like, discussions about it and related topics afterwards in the hallway or sitting together over a meal. JOËL: I like to, in my talks, give little kind of hooks for people who want to have those conversations in the hallway. You know, sometimes it's intimidating to just go up to a speaker and be like, oh, I want to, like, dig into their talk a little bit. But I don't have anything to say other than just, like, "I liked your talk." So, if there's any sort of side trails I had to cut for the talk, I might give a shout-out to it and say, "Hey, if you want to learn more about this aspect, come talk to me afterwards." So, one thing that I put in this particular talk was like, "Hey, we're looking at these different graphical ways to think about time. These are similar to but not the same as thinking of time as a one-dimensional vector and applying vector math to it, which is a whole other side topic. If you want to nerd out about that, come find me in the hallway afterwards, and I'd love to go deeper on it." And yeah, some people did. STEPHANIE: That's really smart. I like that a lot. You're inviting more conversation about it, which I know, like, you also really enjoy just, like, taking it further or, like, caring about other people's experiences or their thoughts about vector math [laughs]. JOËL: I think it serves two purposes, right? It allows people to connect with me as a speaker. And it also allows me to feel better about pruning certain parts of my talk and saying, look, this didn't make sense to keep in the talk, but it's cool material. I'd love to have a continuing conversation about this. So, here's a path we could have taken. I'm choosing not to, as a speaker, but if you want to take that branch with me, let's have that afterwards in the hallway. STEPHANIE: Yeah. Or even as, like, new content for yourself or for someone else to take with them if they want to explore that further because, you know, there's always something more to explore [chuckles]. JOËL: I've absolutely done that with past talks. I've taken a thing I had to prune and turned it into a blog post. A recent example of that was when I gave a talk at RailsConf Portland, which I guess is not so recent. I was talking about ways to deal with a test suite that's making too many database requests. And talking about how sometimes misusing let in your RSpec tests can lead to more database requests than you expect. And I had a whole section about how to better understand what database requests will actually be made by a series of let expressions and dealing with the eager versus lazy and all of that. I had to cut it. But I was then able to make a blog post about it and then talk about this really cool technique involving dependency graphs. And that was really fun. So, that was a thing where I was able to say, look, here's some content that didn't make it into the talk because I needed to focus on other things. But as its own little, like, side piece of content, it absolutely works, and here's a blog post. STEPHANIE: Yeah. And then I think it turned into a Bike Shed episode, too [laughs]. JOËL: I think it did, yes. I think, in many ways, creativity begets creativity. It's hard to get started writing or producing content or whatever, but once you do, every idea you have kind of spawns new ideas. And then, pretty soon, you have a backlog that you can't go through. STEPHANIE: That's awesome. Any other highlights from the conference you want to shout out? JOËL: I'd love to give a shout-out to a couple of talks that I went to, Aji Slater's talk on the Enigma machine as a German code machine from World War II and how we can sort of implement our own in Ruby and an exploration of object-oriented programming was fantastic. Aji is just a masterful storyteller. So, that was really great. And then Alan Ridlehoover's talk on dealing with flaky tests that one, I think, was particularly useful because I think it's one of the talks that is going to be immediately relevant on Monday morning for, like, every developer that was in that room and is going back to their regular day job. And they can immediately use all of those principles that Alan talked about to deal with the flaky tests in their test suite. And there's, in particular, at the end of his presentation, Alan has this summary slide. He kind of broke down flakiness across three different categories and then talked about different strategies for identifying and then fixing tests that were flaky because of those reasons. And he has this table where he sort of summarizes basically the entire talk. And I feel like that's the kind of thing that I'm going to save as a cheat sheet. And that can be, like, I'm going to link to this and share it all over because it's really useful. Alan has already put his slides up online. It's all linked to that particular slide in the show notes because I think that all of you would benefit from seeing that. The talks themselves are recorded, but they're not going to be out for a couple of weeks. I'm sure when they do, we're going to go through and watch some and probably comment on some of the talks as well. So, Stephanie, what is new in your world? STEPHANIE: Yeah. So, I'm celebrating wrapping up a client project after a nine-month engagement. JOËL: Whoa, that's a pretty long project. STEPHANIE: Yeah, that's definitely on the longer side for thoughtbot. And I'm, I don't know, just, like, feeling really excited for a change, feeling really, you know, proud of kind of, like, all of the work that we had done. You know, we had been working with this client for a long time and had been, you know, continuing to deliver value to them to want to keep working with us for that long. But I'm, yeah, just looking forward to a refresh. And I think that's one of my favorite things about consulting is that, you know, you can inject something new into your work life at a kind of regular cadence. And, at least for me, that's really important in reducing or, like, preventing the burnout. So, this time around, I kind of started to notice, and other people, too, like my manager, that I was maybe losing a bit of steam on this client project because I had been working on it for so long. And part of, you know, what success at thoughtbot means is that, like, we as employees are also feeling fulfilled, right? And, you know, what are the different ways that we can try to make sure that that remains the case? And kind of rotating folks on different projects and kind of making sure that things do feel fresh and exciting is really important. And so, I feel very grateful that other people were able to point that out for me, too, when I wasn't even fully realizing it. You know, I had people checking in on me and being like, "Hey, like, you've been on this for a while now. Kind of what I've been hearing is that, like, maybe you do need something new." I'm just excited to get that change. JOËL: How do you find the balance between sort of feeling fulfilled and maybe, you know, finding that point where maybe you're feeling you're running out of steam–versus, you know, some projects are really complex, take a while to ramp up; you want to feel productive; you want to feel like you have contributed in a significant way to a project? How do you navigate that balance? STEPHANIE: Yeah. So, the flip side is, like, I also don't think I would enjoy having to be changing projects all the time like every couple of months. That maybe is a little too much for me because I do like to...on our team, Boost, we embed on our team. We get to know our teammates. We are, like, building relationships with them, and supporting them, and teaching them. And all of that is really also fulfilling for me, but you can't really do that as much if you're on more shorter-term engagements. And then all of that, like, becomes worthwhile once you're kind of in that, like, maybe four or five six month period where you're like, you've finally gotten your groove. And you're like, I'm contributing. I know how this team works. I can start to see patterns or, like, maybe opportunities or gaps. And that is all really cool, and I think also another part of what I really like about being on Boost. But yeah, I think what I...that losing steam feeling, I started to identify, like, I didn't have as much energy or excitement to push forward change. When you kind of get a little bit too comfortable or start to get that feeling of, well, these things are the way they are [laughs], -- JOËL: Right. Right. STEPHANIE: I've now identified that that is kind of, like, a signal, right? JOËL: Maybe time for a new project. STEPHANIE: Right. Like starting to feel a little bit less motivated or, like, less excited to push myself and push the team a little bit in areas that it needs to be pushed. And so, that might be a good time for someone else at thoughtbot to, like, rotate in or maybe kind of close the chapter on what we've been able to do for a client. JOËL: It's hard to be at 100% all the time and sort of always have that motivation to push things to the max, and yeah, variety definitely helps with that. How do you feel about finding signals that maybe you need a break, maybe not from the project but just in general? The idea of taking PTO or having kind of a rest day. STEPHANIE: Oh yeah. I, this year, have tried out taking time off but not going anywhere just, like, being at home but being on vacation. And that was really great because then it was kind of, like, less about, like, oh, I want to take this trip in this time of year to this place and more like, oh, I need some rest or, like, I just need a little break. And that can be at home, right? Maybe during the day, I'm able to do stuff that I keep putting off or trying out new things that I just can't seem to find the time to do [chuckles] during my normal work schedule. So, that has been fun. JOËL: I think, yeah, sometimes, for me, I will sort of hit that moment where I feel like I don't have the ability to give 100%. And sometimes that can be a signal to be like, hey, have you taken any time off recently? Maybe you should schedule something. Because being able to refresh, even short-term, can sort of give an extra boost of energy in a way where...maybe it's not time for a rotation yet, but just taking a little bit of a break in there can sort of, I guess, extend the time where I feel like I'm contributing at the level that I want to be. STEPHANIE: Yeah. And I actually want to point out that a lot of that can also be, like, investing in your life outside of work, too, so that you can come to work with a different approach. I've mentioned the month that I spent in the Hudson Valley in New York and, like, when I was there, I felt, like, so different. I was, you know, just, like, so much more excited about all the, like, novel things that I was experiencing that I could show up to work and be like, oh yeah, like, I'm feeling good today. So, I have all this, you know, energy to bring to the tasks that I have at work. And yeah, so even though it wasn't necessarily time off, it was investing in other things in my life that then brought that refresh at work, even though nothing at work really changed [laughs]. JOËL: I think there's something to be said for the sort of energy boost you get from novelty and change, and some of that you get it from maybe rotating to a different project. But like you were saying, you can change your environment, and that can happen as well. And, you know, sometimes it's going halfway across the country to live in a place for a month. I sometimes do that in a smaller way by saying, oh, I'm going to work this morning from a coffee shop or something like that. And just say, look, by changing the environment, I can maybe get some focus or some energy that I wouldn't have if I were just doing same old, same old. STEPHANIE: Yeah, that's a good point. So, one particularly surprising refresh that I experienced in offboarding from my client work is coming back to my thoughtbot, like, internal company laptop, which had been sitting gathering dust [laughs] a little bit because I had a client-issued laptop that I was working in most of the time. And yeah, I didn't realize how different it would feel. I had, you know, gotten everything set up on my, you know, my thoughtbot computer just the way that I liked it, stuff that I'd never kind of bothered to set up on my other client-issued laptop. And then I came back to it, and then it ended up being a little bit surprising. I was like, oh, the icons are smaller on this [laughs] computer than the other computer. But it definitely did feel like returning to home, I think, instead of, like, being a guest in someone else's house that you haven't quite, like, put all your clothes in the closet or in the drawers. You're still maybe, like, living out of a suitcase a little bit [laughs]. So yeah, I was kind of very excited to be in my own space on my computer again. JOËL: I love the metaphor of coming home, and yeah, being in your own space, sleeping in your own bed. There's definitely some of that that I feel, I think, when I come back to my thoughtbot laptop as well. Do you feel like you get a different sense of connection with the rest of our thoughtbot colleagues when you're working on the thoughtbot-issued laptop versus a client-issued one? STEPHANIE: Yeah. Even though on my client-issued computer I had the thoughtbot Slack, like, open on there so I could be checking in, I wasn't necessarily in, like, other thoughtbot digital spaces as much, right? So, our, like, project management tools and our, like, internal company web app, those were things that I was on less of naturally because, like, the majority of my work was client work, and I was all in their digital spaces. But coming back and checking in on, like, all the GitHub discussions that have been happening while I haven't had enough time to catch up on them, just realizing that things were happening [laughs] even when I was doing something else, that is both cool and also like, oh wow, like, kind of sad that I [chuckles] missed out on some of this as it was going on. JOËL: That's pretty similar to my experience. For me, it almost feels a little bit like the difference between back when we used to be in person because thoughtbot is now fully remote. I would go, usually, depending on the client, maybe a couple of days a week working from their offices if they had an office. Versus some clients, they would come to our office, and we would work all week out of the thoughtbot offices, particularly if it was like a startup founder or something, and they might not already have office space. And that difference and feeling the connection that I would have from the rest of the thoughtbot team if I were, let's say, four days a week out of a client office versus two or four days a week out of the thoughtbot office feels kind of similar to what it's like working on a client-issued laptop versus on a thoughtbot-issued one. STEPHANIE: Another thing that I guess I forgot about or, like, wasn't expecting to do was all the cleanup, just the updating of things on my laptop as I kind of had it been sitting. And it reminded me to, I guess, extend that, like, coming home metaphor a little bit more. In the game Animal Crossing, if you haven't played the game in a while because it tracks, like, real-time, so it knows if you haven't, you know, played the game in a few months, when you wake up in your home, there's a bunch of cockroaches running around [laughs], and you have to go and chase and, like, squash them to clean it up. JOËL: Oh no. STEPHANIE: And it kind of felt like that opening my computer. I was like, oh, like, my, like, you know, OS is out of date. My browsers are out of date. I decided to get an internal company project running in my local development again, and I had to update so many things, you know, like, install the new Ruby version that the app had, you know, been upgraded to and upgrade, like, OpenSSL and all of that stuff on my machine to, yeah, get the app running again. And like I mentioned earlier, just the idea of like, oh yeah, this has evolved and changed, like, without me [laughs] was just, you know, interesting to see. And catching myself up to speed on that was not trivial work. So yeah, like, all that maintenance stuff still got to do it. It's, like, the digital cleanup, right? JOËL: Exactly. So, you mentioned that on the client machine, you still had the thoughtbot Slack. So, you were able to keep up at least some messages there on one device. I'm curious about the experience, maybe going the other way. How much does thoughtbot stuff bleed into your personal devices, if at all? STEPHANIE: Barely. I am very strict about that, I think. I used to have Slack on my phone, I don't know, just, like, in an earlier time in my career. But now I have it a rule to keep it off. I think the only thing that I have is my calendar, so no email either. Like, that is something that I, like, don't like to check on my personal time. Yeah, so it really just is calendar just in case I'm, like, out in the morning and need to be, like, oh, when is my first meeting? But [laughs] I will say that the one kind of silly thing is that I also refuse to sign into my Google account for work. So, I just have the calendar, like, added to my personal calendar but all the events are private. So, I can't actually see what the events are [laughs]. I just know that I have something going on at, like, 10:00 a.m. So, I got to make sure I'm back home by then [laughs], which is not so ideal. But at the risk of being signed in and having other things bleed into my personal devices, I'm just living with that for now [laughs]. JOËL: What I'm hearing is that I could put some mystery events on your calendar, and you would have a fun surprise in the morning because you wouldn't know what it is. STEPHANIE: Yeah, that is true [laughs]. If you put, like, a meeting at, like, 8:00 a.m., [laughs] then I'm like, oh no, what's this? And then I arrive, and it's just, like [laughs], a fun prank meeting. So, you know, you were talking about how you were at the conference this week. And I'm wondering, how connected were you to work life? JOËL: Uh, not very. I tried to be very present in the moment at the conference. So, I'm, you know, connected to all the other thoughtboters who were there and connecting with the attendees. I do have Slack on my phone, so if I do need to check it for something. There was a little bit of communication that was going on for different things regarding the conference, so I did check in for that. But otherwise, I tried to really stay focused on the in-person things that are happening. I'm not doing any client work during those days that I'm at RubyConf, and so I don't need to deal with anything there. I had my thoughtbot laptop with me because that's what I used to give my presentation. But once the presentation was done, I closed that laptop and didn't open it again, and, honestly, that felt kind of good. STEPHANIE: Yeah, that is really nice. I'm the same way, where I try to be pretty connected at conferences, and, like, I will actually redownload Slack sometimes just for, like, coordinating purposes with other folks who are there. But I think I make it pretty clear that I'm, like, away. You know, like, I'm not actually...like, even though I'm on work time, I'm not doing any other work besides just being present there. JOËL: So, you mentioned the idea of work time. Do you have, like, a pretty strict boundary between personal time and work time and, like, try not to allow either to bleed into each other? STEPHANIE: Yeah. I can't remember if I've mentioned this on the show. I think I have, but I'm going to again because one of my favorite things that I picked up from The Bike Shed back when Chris Toomey and Steph Viccari were hosting the show is Chris had, like, a little ritual that he would do every day to signal that he was done with work. He would close his laptop and say, "Schedule shutdown complete," I think. And I've started adopting it because then it helps me be like, I'm not going to reopen my laptop after this because I have said the words. And even if I think of something that I maybe need to add to my to-do list, I will, instead of opening my computer and adding to my, like, whatever digital to-do list, I will, like, write it down on a piece of paper instead for the sake of, you know, not risking getting sucked back into, you know, whatever might be going on after the time that I've, like, decided that I need to be done. JOËL: So, you have a very strict divisioning between work time and personal time. STEPHANIE: Yeah, I would say so. I think it's important for me because even when I take time off, you know, sometimes folks might work a half day or something, right? I really struggle with having even a half day feel like, once I'm done with work, having that feel like okay, like, now I'm back in my personal time. I'd much prefer not working the entire day at all because that is kind of the only way that I can feel like I've totally reclaimed that time. Otherwise, it's like, once I start thinking about work stuff, it's like I need a mental boundary, right? Because if I'm thinking about a work problem, or, like, an interaction or, like, just anything, it's frustrating because it doesn't feel like time in my own brain [laughs] is my own. What do work and personal time boundaries look like for you? JOËL: I think it's evolved over time. Device usage is definitely a little bit more blurry for me. One thing that I have started doing since we've gone fully remote as the pandemic has been winding down and, you know, you can do things, but we're still working from home, is that more days than not, I work from home during the day, and then I leave my home during the evening. I do a variety of social activities. And because I like to be sort of present in the moment, that means that by being physically gone, I have totally disconnected because I'm not checking emails or anything like that. Even though I do have thoughtbot email on my phone, Gmail allows me to like log into my personal account and my thoughtbot account. I have to, like, switch between the two accounts, and so, that's, like, more work than I would want. I don't have any notifications come in for the thoughtbot account. So, unless I'm, like, really wanting to see if a particular email I'm waiting for has come in, I don't even look at it, ever. It's mostly just there in case I need to see something. And then, by being focused in the moment doing social things with other people, I don't find too much of a temptation to, like, let work life bleed into personal life. So, there's a bit of a physical disconnect that ends up happening by moving out of the space I work in into leaving my home. STEPHANIE: Yeah. And I'm sure it's different for everyone. As you were saying that, I was reminded of a funny meme that I saw a long time ago. I don't think I could find it if I tried to search for it. But basically, it's this guy who is, you know, sitting on one side of the couch, clearly working. And he's kind of hunched over and, like, typing and looking very serious. And then he, like, closes his laptop, moves over, like, just slides to the other side of the couch, opens his laptop. And then you see him, like, lay back, like, legs up on the coffee table. And it's, like, work computer, personal computer, but it's the same computer [laughs]. It's just the, like, how you've decided like, oh, it's time for, you know, legs up, Netflix watching [laughs]. JOËL: Yeah. Yeah. I'm curious: do you use your thoughtbot computer for any personal things? Or is it just you shut that down; you do the closing ritual, and then you do things on a separate device? STEPHANIE: Yeah, I do things on a separate device. I think the only thing there might be some overlap for are, like, career-related extracurriculars or just, like, development stuff that I'm interested in doing, like, separate from what I am paid to do. But that, you know, kind of overlaps a little bit because of, like, the tools and the stuff I have installed on my computer. And, you know, with our investment time, too, that ends up having a bit of a crossover. JOËL: I think I'm similar in that I'll tend to do development things on my thoughtbot machine, even though they're not necessarily thoughtbot-related, although they could be things that might slot into something like investment time. STEPHANIE: Yeah, yeah. And it's because you have all your stuff set up for it. Like, you're not [laughs] trying to install the latest Ruby version on two different machines, probably [laughs]. JOËL: Yeah. Also, my personal device is a Windows machine. And I've not wanted to bother learning how to set that up or use the Windows Subsystem for Linux or any of those tools, which, you know, may be good professional learning activities. But that's not where I've decided to invest my time. STEPHANIE: That makes sense. I had an interesting conversation with someone else today, actually, about devices because I had mentioned that, you know, sometimes I still need to incorporate my personal devices into work stuff, especially, like, two-factor authentication. And specifically on my last client project...I have a very old iPhone [laughs]. I need to start out by saying it's an iPhone 8 that I've had for, like, six or seven years. And so, it's old. Like, one time I went to the Apple store, and I was like, "Oh, I'm looking for a screen protector for this." And they're like, "Oh, it's an iPhone 8. Yikes." [laughs] This was, you know, like, not too long ago [laughs]. And the multi-factor authentication policy for my client was that, you know, we had to use this specific app. And it also had, like, security checks. Like, there's a security policy that it needed to be updated to the latest iOS. So, even if I personally didn't want to update my iOS [laughs], I felt compelled to because, otherwise, I would be locked out of the things that I needed to do at work [laughs]. JOËL: Yeah, that can be a challenge sometimes when you're adding work things to personal devices, maybe not because it's convenient and you want to, but because you don't have a choice for things like two-factor auth. STEPHANIE: Yeah, yeah. And then the person I was talking to actually suggested something I hadn't even thought about, which is like, "Oh, you know, if you really can't make it work, then, like, consider having that company issue another device for you to do the things that they're, like, requiring of you." And I hadn't even thought of that, so... And I'm not quite at the point where I'm like, everything has to be, like, completely separate [laughs], including two-factor auth. But, I don't know, something to consider, like, maybe that might be a place I get to if I'm feeling like I really want to keep those boundaries strict. JOËL: And I think it's interesting because, you know, when you think of the kind of work that we do, it's like, oh, we work with computers, but there are so many subfields within it. And device management and, just maybe, corporate IT, in general, is a whole subfield that is separate and almost a little bit alien. Two, I feel like me, as a software developer, I'm just aware of a little bit...like, I've read a couple of articles around...and this was, you know, years ago when the trend was starting called Bring Your Own Device. So, people who want to say, "Hey, I want to use my phone. I want to have my work email on my phone." But then does that mean that potentially you're leaking company memos and things? So, how do you secure that kind of thing? And everything that IT had to think through in order to allow that, the pros and cons. So, I think we're just kind of, as users of that system, touching the surface of it. But there's a lot of thought and discussion that, as an industry, the kind of corporate IT folks have gone through to struggle with how to balance a lot of those things. STEPHANIE: Yeah, yeah. I bet there's a lot of complexity or nuance there. I mean, we're just talking about, like, ways that we do or don't mix work and personal life. And for that kind of work, you know, that's, like, the job is to think really thoroughly about how people use their devices and what should and shouldn't be permissible. The last thing that I wanted to kind of ask about in terms of device management or, like, work and personal intermixing is the idea of being on call and your device being a way for work to reach you and that being a requirement, right? I feel very lucky to obviously not really be in that position. As consultants, like, we're not usually so embedded into a team that we're then brought into, like, an on-call rotation, and I think that's good for me. Like, I don't think that that is something I'd be interested in doing anytime soon. Do you have any experience with that? JOËL: I have not been on a project where I've had to be on call, and I think that's generally true for most of us at thoughtbot who are doing software development. I know those who are doing more kind of platformy SRE-type things are on call. And, in fact, we have specifically hired people in different regions around the world so that we can provide 24-hour coverage for that kind of thing. STEPHANIE: Yeah. And I imagine kind of like what we're talking about with work device management looks even different for that kind of role, where maybe you do need a lot more access to things, like, wherever you might be. JOËL: And maybe the answer there is you get issued a work-specific device and a work phone or something like that, or an old-school work pager. STEPHANIE: [laughs] JOËL: PagerDuty is not just a metaphoric thing. Back in the day, they used actual pagers. STEPHANIE: Yeah, that would be very funny. JOËL: So yeah, I can't speak to it from personal experience, but I could imagine that maybe some of the dynamics there might be a little bit different. And, you know, for some people, maybe it's fine to just have an app on your phone that pings you when something happens, and you have to be on call. And you're able to be present while waiting, like, in case you get pinged, but also let it go while you're on call. I can imagine that's, like, a really weird kind of, like, shadow, like, working, not working experience that I can't really speak to because I have not been in that position. STEPHANIE: Yeah. As you were saying that, I also had the thought that, like, our ability to step away from work and our devices is also very much dependent on, like, a company culture and those types of factors, right? Where, you know, it is okay for me to not be able to look at that stuff and just come back to it Monday morning, and I am very grateful [laughs] for that. Because I recognize that, like, not everyone is in that position where there might be a lot more pressure or urgency to be on top of that. But right now, for this time in my life, like, that's kind of how I like to work. JOËL: I think it kind of sits at the intersection of a few different things, right? There's sort of where you are personally. It might be a combination, like, personality and maybe, like, mental health, things like that, how you respond to how sharp or blurry those lines between work and personal life can be. Like you said, it's also an element of company culture. If there's a company culture that's really pushing to get into your personal life, maybe you need firmer boundaries. And then, finally, what we spent most of this episode talking about: technical solutions, whether that's, like, physically separating everything such that there are two devices. And you close down your laptop, and you're done for the day. And whether or not you allow any apps on your personal phone to carry with you after you leave for the day. So, I think at the intersection of those three is sort of how you're going to experience that, and every person is going to be a little bit different. Because those three...I guess I'm thinking of a Venn diagram. Those three circles are going to be different for everyone. STEPHANIE: Yeah, that makes complete sense. JOËL: On that note, shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at: tbot.io/referral. Or you can email us at: referrals@thoughtbot.com with any questions.

Giant Robots Smashing Into Other Giant Robots
501: GNOME and OpenKids Africa with Regina Nkenchor

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Nov 22, 2023 38:35


Host Victoria Guido and special guest Regina Nkenchor discuss the evolution and impact of Regina's work with the GNOME Project and OpenKids Africa. Regina explains how the GNOME Project is advancing its Global Inclusive Initiative, aiming to amplify diverse voices within the community and contribute to GNOME's development. She expresses enthusiasm for OpenKids Africa's efforts to incorporate technology education in rural communities, primarily through engaging early childhood teachers in understanding and teaching tech like virtual reality and robotics. Victoria probes into strategies for sparking children's interest in technology, with Regina advocating for a co-creative, experience-based approach that includes real-life applications and interactive participation. They also touch on the challenges of balancing professional and personal commitments. Regina shares her ongoing journey to find balance by prioritizing and delegating while still maintaining her nonprofit work and her role at the GNOME Project. They also talk about personal growth and community engagement. Regina advises newcomers to leverage open-source tools and be open to change while encouraging fair treatment within the open-source community. Victoria reflects on her experiences with Women Who Code, highlighting the importance of community involvement and networking for career advancement. Both emphasize the significance of creating safe, welcoming spaces in tech communities to foster inclusion and support, especially for women in tech. GNOME (https://www.gnome.org/) Follow GNOME on X (https://twitter.com/gnome), Facebook (https://www.facebook.com/GNOME/), LinkedIn (https://www.linkedin.com/company/gnome-foundation/), YouTube (https://www.youtube.com/user/GNOMEDesktop), or Mastodon (https://floss.social/@gnome). OpenKids Africa (https://openkidsafrica.com/) Follow OpenKids Africa on LinkedIn (https://www.linkedin.com/company/openkidsafrica/), X (https://twitter.com/openkidsafrica), YouTube (https://www.youtube.com/@openkidsafrica), Facebook (https://www.facebook.com/openkidsafrica), or Instagram (https://www.instagram.com/openkidsafrica/). Follow Regina Nkenchor on LinkedIn (https://www.linkedin.com/in/reginankenchor/). Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: 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, Victoria Guido. And with me today is Regina, Board Vice President of the GNOME Foundation and Founder at OpenKids Africa. Regina, thank you for joining me. REGINA: Thank you so much for having me. It's such a great opportunity to be here today. VICTORIA: That's wonderful. So, what's going on in your world, anything fun or exciting happening? REGINA: You know, I actually work in Sweden. And this period is actually one of the...let me say the peak period, beginning of a new year, beginning of a new year for my job. So, there's so much around projects, projects, projects. So, I wouldn't say this is more like a fun period because, after the summer, it's a different time here when you're working in Europe. VICTORIA: Yes, working in Sweden must be so interesting. I'm wondering if you found any cultural differences that were really surprising about working there. REGINA: Oh yes. I think there are so many cultural differences, one of it is...I come from Nigeria, and we have more, like, a particular way...we don't have a schedule for having breakfast. So, we can have breakfast anytime we want to, and we don't feel any problem by it. So, I could decide to have my breakfast by 12:00 or by 1:00 and have my lunch by 4:00 p.m., you know, it just depends. But here, it's more like you have to have your breakfast early. And by 11:00, 12:00, 1:00, you should be having your lunch. I'm still trying to get used to that one anyway. And also, another cultural difference that I've seen here that is very, very obvious to me compared to where I'm coming from, and I think this is basically the work culture around here, so they have, like, a work culture of taking certain timeouts for vacations, which is not the same thing for me when I was working back in Nigeria. I mean, you could just pick your vacations anytime you want to have them. But here, it's more like you have to have them around the summer somehow so that you could basically have much fun and get the time required. So, I think these basic two things are things I've had to adjust to working here now for over two years, so yeah. VICTORIA: So, more rigid timeframes for lunch, and breakfast, and vacation [laughs]. REGINA: Yes, yes. And, you know, it's quite funny because even when my colleagues are like, "Let's go and have lunch," and I'm not ready. And they feel like, "Are you okay? Like, you should be having lunch." [laughs] So, it's really rigid timeframe here, I would say that. VICTORIA: I like that. You know, working in a remote world, it's so easy to just work through lunch or skip breakfast and just go straight to your computer and work. So, I kind of like it. They're looking out for you and making sure that you're taking your breaks. REGINA: Yes. Yes. And it's actually also making me self-conscious. Because, you know, working daytime as a software engineer, you don't know when to eat. You don't know when to take a break. So, that realization, I'm beginning to more, like, take it more in and adapt to the culture here. Now, I'm always looking out for myself. And when I wake up in the morning, I remember that I need to, you know, grab something, no matter how small. And then, when it's around lunchtime, I'm also preparing to have something as well. So, I think it's really good. And it also keeps me more healthy, I would say [laughs], compared to me just eating anytime I want to eat. So, I think it's a very good culture. VICTORIA: That's wonderful. And I really want to hear more about your journey and your career. I first heard about you and invited you to the podcast when you were a speaker for Open Source Festival in Nigeria earlier this year. So, I'm curious how you went from being in Nigeria and how did you get into software engineering and get to where you are today with the GNOME Project and everything else. REGINA: Well, thank you so much for that. I actually started my technology career path...that's about...I would say around about 10-11 years ago. So, I graduated with a public administration bachelor's, so a bachelor's in public administration. I really did not think that I would be doing what I'm doing today. But so, when I graduated years ago, that was 2010, I needed more opportunity. And at the time, in Nigeria, technology was not something that was very available to everyone. What I mean is technology was mostly found around those that are privileged, those with more advantage, and all of that. And I wasn't around the set of people that had...those privileged to have computers in their homes or to have parents that has the money to buy these kinds of resources. But I had always known as a child that I was very good with my hands. And I could remember when I was quite younger, I was the one that my dad would go to to repair his phone when it's not working well. So, I had this thing with my hands that I couldn't really explain that I like to repair things. And so, when I graduated from the university, I got an opportunity to attend more like a program, a computer program, where they would teach stuff around IT for beginners and all of that. So, I enrolled, and when I enrolled for that particular program, I can remember they would show us more like a slideshow of different programs that you would like to learn, and then give you more like, insight into job opportunities available for those programs. So, when I sat in that class as a beginner, and I was watching the slideshows, one of the courses that caught my interest was Linux administration and database administration, so I opted in for that particular course. And that was basically how my journey began. When I began to learn about Linux, I began to use it to basically manage databases; then, I was managing databases in Oracle. And I found that one of the things that I needed to learn was basically knowing how to administer the Linux OS. From there, I began my first job. I worked as a faculty, more like a lecturer teaching Linux administration. So, this time, I had learned, and now I have to help other students learn as well. So, because of this, I began to use more of open-source tools. Now, just to do a little bit of realization check here, at the time when I was basically lecturing years back as a Linux administrator, I did not know that the concept open source existed. I knew that I was using Linux, but I did not really understand the concept of what open source is. So, going forward now, as I began to use these tools and began to teach students how to administer databases and use more of Linux operating system tools, I somehow, a particular year, stumbled on the GNOME Project. Because GNOME is more like a feature of the Linux OS—it's a desktop application—I was already familiar with it. I just decided to make my contributions there anyway since I had been using the GNOME Project over the years with the Linux operating system. So, I was basically fascinated to see that everything I had done as a user in my career was basically using open source to basically teach Linux and to teach my students. So, that's, in some way, how I got into technology, how I got into open source, and all of that. So, going into how I found myself [laughs] in the Open Source Festival and how I found myself in GNOME Project, I chose to contribute to the GNOME Project, one, because GNOME is one of the basic...I'll say a very good feature of the Linux OS. It's a desktop application––allows usability in a way that Linux seems like a Windows operating system. And so, I decided to go into GNOME just to learn more about community, how the community looks like and also contribute my quota to outreach and engagement. So, what it means is that there are different areas you can contribute to in the GNOME project, one of it is community and engagements, which means you basically help to do outreach, marketing, and events. So, I wanted to basically bring the GNOME project down to my location, and that's Africa, Nigeria. I wanted people to basically see the benefits of what the GNOME Project is to the Linux ecosystem and how they can also contribute to it. So, because of this, I created a chapter of GNOME in Africa. Right now, we have a community of GNOME Africa. And basically, that is how I started. So, this particular Open Source Festival that just completed for 2023 was not my first, although I was a keynote for this particular one. I had attended Open Source Festival in 2020, where I shared as a workshop speaker, and I shared more about improving Linux experience for African users. And one of the demos I did was basically showcasing the GNOME Project to the users. VICTORIA: I love that. And maybe you can say more about what the GNOME Project is and the kind of impact it can have on communities like the one that you're from. REGINA: One of the things with GNOME Project, in some way, it's a desktop application, a desktop application that features in the Linux operating system. So, like you know, we have the Windows operating system, and then we have user-friendly desktop that allows us to be able to basically use Windows without going through command lines all the time. GNOME is like that desktop application to Linux operating system. So, it's a feature of distros of Linux that decides to basically use it. So, what does it do to a community like mine? I think it is very clear, usability, and allows people as well to be able to contribute to the GNOME shell. Like any other open-source projects, one of the things is that you don't just become a user. But also, you can contribute to the innovation of that particular project, so not just having to be consumers of products but also become creators of those products by contributing to what the community is doing. So, I think what it has done to a community like mine is basically given people the opportunity and the free will to become creators for something that is quite unique to the Linux operating system and allowing them to also become part of a community, bringing diversity to the global community globally. VICTORIA: So, how does GNOME benefit as a project from having these additional communities in areas where they may not have had before? REGINA: I think the key thing here is diverse voices. The key thing here is bringing in people to create more diverse GNOME Projects. And it's not a buzzword. I think creating better technologies is allowing for diverse users' views to be heard. So, before I came into the GNOME project, they had presence around Europe and the U.S. but not so much around Asia and Africa. What this means is that the design, the usability, the culture around the community is not going to be that that is very friendly towards these communities that they are not part of, these communities that doesn't really know what is happening in the GNOME Project. So, having to bring in diversity, bringing in somebody like myself, community like myself, into the GNOME Project, what this means is that there will be more opportunities for GNOME to evolve around what they have in the previous years into something that is more global, something that is more inclusive, you know, a project that allows people to become contributors and designers of the GNOME shell. So, I would say this: when I got into the board...this is my second time in the board. We've had several discussions around how to bring in diversity into the GNOME Project and also allow users, newcomers to feel welcomed in the GNOME Project. And that is a discussion and an action that is basically progressive here. We are having these conversations because I have now come into the project. There is now space for the GNOME Project to see that we need to be more inclusive. We need to be more diverse in our approach, in our design, in the basically way we listen to users right now. So, this was not the case before I came in. So, it's basically just allowing more diversity into the GNOME Project. VICTORIA: I love that. And I think there's been a lot of studies and evidence that have shown that projects and companies with more inclusive and more diverse voices perform better business-wise afterwards. So, it's not only, like, a moral imperative but just smart business decisions. REGINA: Yes, yes, yes, yes. Yes. VICTORIA: And I'm curious, as a community organizer myself [chuckles], what surprised you about the early stages of starting up this community in Africa, or maybe even joining the board of this community now that you've become there? Anything that surprised you in the process there? REGINA: I think one of the first things that surprised me is that it was more like I was the only one that knows that GNOME exists [laughs]. So, it's me having to first always explain, giving onboarding sections to newcomers to basically explain to them what the GNOME Project is, and doing multiple demos to show how the GNOME desktop works within Linux. And I thought that people would just know these things and people would just understand how the Linux project works. So, that basically surprised me because I had to always have to...even up until now, I always have to more, like, introduce, guide, and explain what GNOME is and help users to basically or newcomers basically decide if it is something that they will want to contribute to, right? So, that's one thing that surprised me. And I think the second thing that surprised me was mainly about when I came into the GNOME Project; for a project that global, I thought that there would be some certain level of diversity around the projects. And I thought that I would see more of people like myself or more of people from maybe, you know, Asia or something like that. But I realized that that wasn't the case. Instead, I remember when I was being introduced to the project, I was introduced to other two Africans, and that made us three. And it was shocking for me that there was less presence for Africans within the GNOME Project. And I think that's one of the basic motivation for me to build a community in Africa and to see that they know that a project like GNOME exists. VICTORIA: I love that, and it reminds me of when I was running DevOps groups with Women Who Code and DevOps DC, how frequently you have to do just a 101, like, a 101, like, here's the basics. Here's the introduction. And getting really good at that and just knowing you're going to have to keep doing that and to bring in new people. Yeah, that's interesting; that was the point for you. Mid-Roll Ad: When starting a new project, we understand that you want to make the right choices in technology, features, and investment but that you don't have all year to do extended research. In just a few weeks, thoughtbot's Discovery Sprints deliver a user-centered product journey, a clickable prototype or Proof of Concept, and key market insights from focused user research. We'll help you to identify the primary user flow, decide which framework should be used to bring it to life, and set a firm estimate on future development efforts. Maximize impact and minimize risk with a validated roadmap for your new product. Get started at: tbot.io/sprint VICTORIA: I'm curious; maybe we can dive more into open source in general and how it can be more inclusive and more diverse. Because I think what I see with open source is, you know, often, it's people doing maintenance on their own free time. They're not getting paid for it. And, of course, there's all the existing access and issues with enabling women to be more into technology careers. So, I'm curious if you have anything else that you think we should talk about with open source and how to make it more inclusive and have more voices at the table. REGINA: One of the things here is...and I feel like discussion there is a progressive discussion as open-source communities begin to grow, open-source ecosystem continues to grow. So, one of the things here is, basically, having programs that is geared towards under-representation people within the open-source ecosystem. And this program, I feel like, should be a program that encourages some certain level of incentives, you know, stipends for people that are going to be contributing. Because, like I said, in the past, open source has thrived more within Europe and the U.S. area. But in these areas, there are certain levels of opportunities that is presented. It's either the maintainer has good jobs, or they have projects that pays them on the side. So, they could easily give their free time to open-source contribution. But looking at the economy side of things and problems we have within areas like Africa and Asia, if you see people contributing or you want people to contribute to open source, there must be some other level of motivations that would get them to basically contribute to your project. So, there are programs like Outreachy. Outreachy is basically a program that helps women to contribute to open source, and they are paid a certain level of stipends at the end of three months, at the end of their contribution. We need to have more of such programs to encourage inclusive contribution into open source-projects. Because this way, we get more people that would not necessarily have an opportunity to become open-source contributors to come in to contribute. And also, [inaudible 18:29] more diverse voices in the open-source ecosystem. Another thing here is also that we need to also talk about one of the problems within open source at the moment, which is that we have less women representation, and I'm very glad you're very deep within community and Women Who Code as well. So, you will basically relate with this one. So, there are less women within the open-source ecosystem. And even the women that are contributing––they have challenges within the ways they are treated amongst maintenance. They have challenges even with how to prioritize what they are doing and to be able to also give their time to open source. So, these all challenges we need to begin to, you know, address them by giving voices to women within open source and helping them to solve some of these problems that they have within, you know, the communities that they are serving in. Another thing is to have representation in leadership, and I really cannot stress this enough. When I mean representation, it's having more women leaders because this is where the gap is here at the moment. I think the Linux Foundation had a particular research; I'm not very sure about the year. But it shows that we have about 93% of men in the open-source ecosystem, and that tells you what is left of women, you know, the percentage of women that we have within the open-source ecosystem. So, there's a whole lot of work we need to do to bring in more inclusiveness, to bring in more women into the open-source ecosystem. I'm not particularly sure about the exact statistics for that research, but I know it's around that range. Another thing is that we should encourage communities, open-source communities, to have separate channels where diverse voices can basically have their views about their community, so whether it is having to have a pool of questions geared towards, how do you think we are diverse? How diverse are we in this community? What can we do better? You know, taking metrics of your community is one way we can also bring in inclusivity into the open-source ecosystem. One of the last thing here that I would mention is events also––open-source events, has to also be conscious around people that are attending their events, around the different races, the different genders. This matrix needs to be taken to basically help to solve and bring more inclusivity into open-source community and open-source events. VICTORIA: You raised a lot of really great points there. And I won't even try to recap them all because I think I'll miss them [laughs]. But I think you're spot on with everything. It resonates with me, especially, like, working through Women Who Code; what you'll see is there's lots of people interested in joining. There's a drop-off rate around the mid-level of your career because of some of the things that you mentioned, the way that they're treated in the environments and in the communities, and not seeing a path forward to leadership. So, I think you're spot on with everything that you said there. And I'm curious; I want to make sure we make time to also talk about OpenKids Africa and your founding of that. And what was the goal or the idea behind it? REGINA: The idea behind it was basically my journey into tech. If you recall, I said I started my journey into tech after my bachelor's degree in public administration. And I felt like I could have done more with technology if I was aware about technology a bit more earlier in life. So, I wanted to create something and to build something that would give children an opportunity to have better career choices and possibly become technologists, or software engineer, or robotics engineer, or developers in future. But giving them the opportunity to know that this set of careers exist and they could actually make their choices from it. So, I grew up in Nigeria, like I said. And at the time I grew up, the trending careers were doctors, engineers, lawyers. And my parents actually wanted me to be a lawyer because, at the time, they believed that I was very good at arguments [chuckles]. I could argue a lot. And that basically quickly transcends to I can be a better lawyer. And also because lawyers, in those times, lawyers were very respected in the society. Now, don't get me wrong, lawyers are still respected. But at that time, it felt as though being a lawyer or being a doctor is the only way you're ever going to have a career in Nigeria. Having to feel like I disappointed my parents because I couldn't get into law...I had a diploma. I did a diploma in law program, but I did not get into my degree. So, I had to do something close, which was the public administration I took. Having to go through those whole process in my career and then finish my bachelor's and realizing that I was a bit better in a technology career, I felt like it was a bit late for me and that I would have taken a better chance at my career choices if I had known about technologies earlier. So, this is the motivation of creating OpenKids Africa is basically giving children an opportunity to know what they can do with technology, to know how technology cuts across different careers, and to make them realize that technology is no longer an option in your career choices; it's something that needs to be part of your career journey, whether they want to become doctors, whether they want to become technologists in future. Whatever they want to become, they need to have this basic foundation to thrive. So, that's basically what brought about OpenKids Africa. And my target is basically children in rural communities. And so, we are teaching children in rural communities several skills: how to code, how to understand basically foundational courses within technology. Recently, we went to different schools and giving them an experience of how virtual reality looks like. And it was really fun for these children because, like I said, they are in rural communities. They don't even have these opportunities in the first place, and except it is provided to them here. So, that's basically what we're doing. We're giving children in rural community an opportunity to experience technology and to make better career choices in the future. VICTORIA: I love that. And so, you found that the kids are really excited about learning about computers. Do you feel that the parents agree that technology is a good path for them to follow and study? REGINA: Well, I think that that's another part of OpenKids Africa. So, when I started OpenKids Africa, I wanted to explore the rural community and understand, basically, what are the unique cases that we have here? So that's part of those...I was exploring, basically. We found that some of the children would tell us that, "I like this, but my mom or my parent would not allow me to do this. They will not allow me to know how to use computers or to become maybe a technologist in future because my mom or my dad thinks I should be a doctor," and all of that. So, we had to remodel our strategy in a way that we now go to parents' associations in schools in rural communities. And we talk to them about technology, benefits of technology, and how they can encourage their children to learn technology, and also the future career choices for their children. And when we do this, when we speak to parents, we see the excitement of "Oh, so, my child can actually become this with this technology thing." And we also give them safety measures because, of course, there's so many things on the internet here. And there's safety tips for parents to know about, even if they want to allow their children to basically use computers and all of that, child control and all of those things. So, by talking to parents, we've realized that we have to have a two-model approach in OpenKids Africa, where we don't just teach the children and encourage the teachers to learn more about technology, but we also have to talk to the parents to allow their children to basically explore technology careers in the future, and also, showing them the opportunities that it will pose to them. So yeah, to be honest, this is one of the surprising things that I found, and it has continued to surprise me as a founder of OpenKids. VICTORIA: Well, that's, I think, a very common thing for founders is that you think you have one set of users, but there's actually another one [laughs] where it impacts you. REGINA: Exactly. Exactly [laughs]. VICTORIA: That's wonderful. Are you excited about on the horizon with either the GNOME Project or OpenKids Africa? REGINA: I will start with the GNOME Project. Right now, we are looking towards things like the Global Inclusive Initiative. And it's basically an initiative that we are looking to put together all the communities we have globally, giving more voices to diverse users to be able to contribute into GNOME. That is something on the pipeline that we're looking to plan. And I'm also excited for OpenKids Africa. So, right now, we are exploring how to get teachers in rural communities involved with what we're doing and basically train them separately as well to know the benefit of technology to children. So, the target teachers here are teachers that basically...early child education teachers and helping them to understand how to teach technology to children, and how to inspire children to appreciate technology innovation we have around the world, innovations like virtual reality, you know, robotics, and all of that. So, I'm really excited about that one because I feel like if you can tell the teachers how these things are and the benefits, and then they can better pass the message across to the children, making our work more easier when we have workshops and demos to do in schools, yeah. VICTORIA: And I've actually gotten this question quite a few times from people, which is, how do you get kids interested in learning [laughs] technology and learning how to code? REGINA: I think it's basically having a practice that is more child-friendly, co-creative. So, co-creation is basically, you are not the only one doing it. You're involving the children in it as well, and you give them the real-life experiences. So, for instance, when we went to talk about virtual reality to children, and we showed them what virtual reality does in the presentation, we engage with the kids. We make them give us their own ideas. We even go as far as allowing them to draw what they see and give us what they think about it. But we don't stop there. We get virtual sets and show them exactly...give them a real-life experience of what virtual reality is. So, children are very, very creative, and they also have a very fast mind to pick pictures. But not only that, they can also store experiences very, very fast. So, we utilize every area that makes children excited in our workshops. After we are done, we do practices, and we give them gifts as well for engaging in those practices. So yeah, we just co-creation [laughs]. VICTORIA: Wow. And you're doing so much because you have a full-time job. You're on the board for GNOME Project, and you have your non-profit, OpenKids Africa. So, how do you find a right balance in your life of work, and extra stuff, and your regular life [laughs]? REGINA: Honestly, I would say that the word balance I wouldn't use balance for me at the moment because I feel like I've not basically found the balance I'm looking for, but I've been able to prioritize. So, what that means is that I've been able to know what is important part-time and know when to take certain engagements. So, my full-time job is more, like, a priority right now because, of course, we need a job to be able to sustain our lives. So, I take that as my priority. And I have different schedule of days for other things like the GNOME community and working with my team in OpenKids Africa. So, I would say I'm quite lucky to have a very good team. And also, being part of GNOME board, the commitments are not as demanding as you would expect, you know, maybe a regular board. There are fixed schedules on things, and they have flexible time for contribution as well. I'm also part of the GNOME Africa community. And I recently just on-boarded a community manager because I realized that I need more, like, to take a step back so that I don't get burned out and all of that. So, I think it's basically prioritizing for me at the moment to gain the balance that I'm looking for. So, I think if I have a conversation with you maybe months after now, I would be able to know what balance feels like. So, I'm really experimenting with prioritizing at the moment. VICTORIA: We'll have to check back in in a few months and see how things are going. But I think that's a very honest answer, and I appreciate that. And I think that probably relates to how a lot of people feel, honestly, even having less on their plate that it's hard to find that balance. So, I appreciate you sharing that. And I wonder, too, if you had any advice for yourself. If you could go back in time, either when you were first starting on your journey or when you were first starting on either of these projects, what advice would you give yourself? REGINA: I think one of the things...I will talk about first starting on my technology career. I didn't have the opportunities that many young people had at the time because I didn't come from a background where my parents had the finances to basically give me the opportunity to learn technology the way I wanted to. But, I was able to make do with the resources I had at the time to learn and to basically grow. So, an advice I will give to my younger self and to anybody that wants to come into technology that do not have the resources, I would say leverage open-source tools as much as you can because now I realize that that's basically what helped me. And also, allow yourself to grow; it will always get better. Advice I would give to somebody coming into an open-source project like me at the GNOME Project. I think that one of the things that...understand why you're contributing to that project, and always seek to be treated fairly, always seek to be treated nicely. And also treat other people nicely and fairly as well. I think if we have these both balance, we'll have a better, healthy community within open source. And don't be scared to share your view. Don't be scared to basically be yourself wherever you are found in the community that you're representing. And if I would like to add: OpenKids Africa, for me, if anyone would be...it's, I would say, it's still young because we are going, I think, about our third year now. So, I will say it's still young. But what I would say to any founder that wants to basically found a non-profit or do something in the society, I think, is just to get your motivation, understand why you're doing them, and be open-minded to what you'll learn along the way. That's it. VICTORIA: I think that's great. Yeah, I love that. And I like that you mentioned that there are open-source tools out there. I'm trying to use those more, and I think I always try to iterate that for people, too, is, like, there's free training. There's free resources. There's free tools. And there are lots of people who want to see you succeed, no matter your background, or where you're from, or what you look like. So, I think that that's a really powerful message. So, I appreciate that. And do you have anything else that you would like to promote? REGINA: I think before that, I would like to learn more about the Women Who Code. As a community builder, what basically surprised you the most? VICTORIA: Yeah. So, what I loved about Women Who Code is that it was really aimed at helping women get started in careers in technology and maintaining careers in technology. So, I think what was interesting for me...I think I started doing it back in 2017 or 2018, and I just loved it. I loved going to a tech meetup with a room where it's all women [laughs]. Because, normally, and I'm sure you've had this experience, you go to a tech meetup, and you're maybe one of two, at the best, of women in the group. I just really enjoyed that. And I've been really surprised and happy to see how the women, including myself, who started running the meetups, and doing trainings, and helping other women learn how to code have really advanced in their career and become directors, or engineering managers, or really senior contributors in different companies. So, I think that that was a really interesting and surprising thing for people is, like, well, if you want to grow in your career, it helps to be active in your community and to be someone that people know and to have those connections. And I think it still surprises me to this day how my network that I got from investing in all of those meetups and all that time is still paying off [laughs]. Like, I could still, like, reach back into my network and find someone who is an expert on a particular subject or works at a company that I want to talk to or something like that. So, I think that that's been a really wonderful aspect of it. REGINA: Wow, that's quite interesting. And I really think, also I agree with you. One of the beautiful things around communities and meetups is basically networks, the people that you get to meet, the people that you get to know along the way. VICTORIA: Absolutely. Yeah, and those are the people that you want to keep working with. So, it helps you find jobs. It helps you find people to hire if you're hiring. It's worth it. Like [laughs], it can feel like, ugh, am I really going to go to this meetup [laughter], like, after work, after a long day? And, you know, maybe the topic is even something I'm not interested in. But it does pay off if you keep showing up and continue to invest in it. Yeah, I think that's smart. And make people feel safe, too. I think that was a big part of it is, you know, going to a meetup and meeting someone maybe like me who's nice and friendly and wants to hear your voice. I think that has a big impact for people, especially if they're, you know, the only woman at their company. And now they have a whole set of friends [laughs]. That's, yeah, how powerful that can be for people. REGINA: Exactly. Exactly. And you just said one of the most important things, and that's basically making people feel safe, making them welcomed as well. Interesting. Thank you for sharing that one because I was quite curious, and I wanted to really learn more. VICTORIA: Yeah, I'm very lucky. And we actually had the CEO and founder of Women Who Code on our podcast lately. So, you're in good company [laughs]. REGINA: Nice. VICTORIA: Yeah, it's wonderful. Do you have any other questions for me? REGINA: My last question, and I'm going to be asking again that I will be inviting you on my podcast as well [inaudible 37:32] [laughs] VICTORIA: Yes. Of course, yes. Absolutely. Send me the details. I'd be happy to join. All right. Well, thank you so much again for joining us. I really appreciate your time. And for our listeners, you can subscribe to the show and find notes along with a complete transcript 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 @victori_ousg. This podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. Thank you for listening. See you next time. AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions. Special Guest: Regina Nkenchor.

The Bike Shed
407: Tech Opinions Online with Edward Loveall

The Bike Shed

Play Episode Listen Later Nov 21, 2023 36:44


Stephanie interviews Edward Loveall, a former thoughtbotter, now software developer at Relevant Healthcare. Part of their discussion centers around Edward's blog post on the tech industry's over-reliance on GitHub. He argues for the importance of exploring alternatives to avoid dependency on a single platform and encourages readers to make informed technological choices. The conversation broadens to include how to form opinions on technology, the balance between personal preferences and team decisions, and the importance of empathy and nuance in professional interactions. Both Stephanie and Edward highlight the value of considering various perspectives and tools in software development, advocating for a flexible, open-minded approach to technology and problem-solving in the tech industry. Relevant (https://relevant.healthcare/) Let's make sure Github doesn't become the only option (https://blog.edwardloveall.com/lets-make-sure-github-doesnt-become-the-only-option) And not but (https://blog.edwardloveall.com/and-not-but) Empathy Online (https://thoughtbot.com/blog/empathy-online) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. And today, I'm joined by a very special guest, a friend of the pod and former thoughtboter, Edward Loveall. EDWARD: Hello, thanks for having me. STEPHANIE: Edward, would you share a little bit about yourself and what you're doing these days? EDWARD: Yes, I am a software developer at a company called Relevant Healthcare. We do a lot of things, but the maybe high-level summary is we take very complicated medical data and help federally-funded health centers actually understand that data and help their population's health, which is really fun and really great. STEPHANIE: Awesome. So, Edward, what is new in your world? EDWARD: Let's see, this weekend...I live in a dense city. I live in Cambridge, Massachusetts, and it's pretty dense there. And a lot of houses are very tightly packed. And delivery drivers struggle to find the numbers on the houses sometimes because A, they're old and B, there is many of them. And so, we put up house numbers because I live in, like, a three-story kind of building, but there are two different addresses in the same three stories, which is very weird. And so [laughs], delivery drivers are like, "Where is number 10 or 15?" or whatever. And so, there's two different numbers. And so, we finally put up numbers after living here for, like, four years [chuckles]. So, now, hopefully, delivery drivers in the holiday busy season will be able to find our house [laughs]. STEPHANIE: That's great. Yeah, I have kind of a similar problem where, a lot of the times, delivery folks will think that my house is the big building next door. And the worst is those at the building next door they drop off their packages inside the little, like, entryway that is locked for people who don't live there. And so, I will see my package in the window and, you know, it has my name on it. It has, like, my address on it. And [laughs] some strategies that I've used is leaving a note on the door [laughter] that is, like, "Please redeliver my package over there," and, like, I'll draw an arrow to the direction of my house. Or sometimes I've been that person to just, like, buzz random [laughter] units and just hope that they, like, let me in, and then I'll grab my package. And, you know, if I know the neighbors, I'll, like, try to apologize the next time I see them. But sometimes I'll just be like, I just need to get my package [laughs]. EDWARD: You're writing documentation for those people working out in the streets. STEPHANIE: Yeah. But I'm glad you got that sorted. EDWARD: Yeah. What about you? What's new in your world? STEPHANIE: Well, I wanted to talk a little bit about a thing that you and I have been doing lately that I have been enjoying a lot. First of all, are you familiar with the group chat trend these days? Do you know what I'm talking about? EDWARD: No. STEPHANIE: Okay. It's basically this idea that, like, everyone is just connecting with their friends via a group chat now as opposed to social media. But as a person who is not a big group chat person, I can't, like, keep up with [chuckles], like, chatting with multiple people [laughter] at once. I much prefer, like, one-on-one interaction. And, like, a month ago, I asked you if you would be willing to try having a shared note, like, a shared iOS note that we have for items that we want to discuss with each other but, you know, the next time we either talk on the phone or, I don't know, things that are, like, less urgent than a text message would communicate but, like, stuff that we don't want to forget. EDWARD: Yeah. You're, like, putting a little message in my inbox and vice versa. And yeah, we get to just kind of, whenever we want, respond to it, or think about it, or use it as a topic for a conversation later. STEPHANIE: Yeah. And I think it is kind of a playbook from, like, a one-on-one with a manager. I know that that's, like, a strategy that some folks use. But I think it works well in the context of our friendship because it's just gotten, like, richer over time. You know, maybe in the beginning, we're like, oh, like, I don't know, here are some random things that I've thought about. But now we're having, like, whole discussions in the note [laughter]. Like, we will respond to each other, like, with sub-bullets [laughs]. And then we end up not even needing to talk about it on the phone because we've already had a whole conversation about it in the note. EDWARD: Which is good because neither of us are particularly brief when talking on the phone. And [laughs] we only dedicate, like, half an hour every two weeks. It sort of helps clear the decks a little. STEPHANIE: Yeah, yeah. So, that's what I recommend. Try a shared note for [laughs] your next friendship hangout. EDWARD: Yeah, it's great. I heartily recommend it. STEPHANIE: So, one of the things that we end up talking about a lot is various things that we've been reading about tech on the web [laughs]. And we share with each other a lot of, like, blog posts, or articles, various links, and recently, something of yours kind of resurfaced. You wrote a blog post about GitHub a little while ago about how, you know, as an industry, we should make sure that GitHub doesn't become our only option. EDWARD: Yeah, this was a post I wrote, I think, back in May, or at least earlier this year, and it got a bunch of traction. And it's a somewhat, I would say, controversial article or take. GitHub just had their developer conference, and it resurfaced again. And I don't have a habit of writing particularly controversial articles, I don't think. Most of my writing history has been technical posts like tutorials. Like, I wrote a whole tutorial on how to write SQL, or I did write one about how to communicate online. But I wasn't, like, so much responding to, like, a particular person's communication or a company's communication. And this is the first big post I've written that has been a lot more very heavily opinionated, very, like, targeted at a particular thing or entity, I guess you'd say. It's been received well, I think, mostly, and I'm proud of it. But it's a different little world for me, and it's a little scary, honestly. STEPHANIE: Yeah, I hear that, having an opinion [laughs], a very strong and maybe, like, a less popular opinion, and publishing that for the world. Could you recap what the thesis of it is for our listeners? EDWARD: Yeah, and I think you did a great job of it, too. I see GitHub or really any singular piece of technology that we have in...I'll say our stack with air quotes, but it's, you know, all the tools that we use and all the things that we use. It's a risk if you only have one of those things, let's say GitHub. Like, if the only way you know how to contribute to a code repository with, you know, 17 people all committing to that repository, if the only way you know how to do that is a pull request and GitHub goes away, and you don't have pull requests anymore, how are you going to contribute to code? It's not that you couldn't figure it out, or there aren't multiple ways or even other pull request equivalents on other sites. But it is a risk to rely on one company to provide all of the things that you potentially need, or even many of the things that you potentially need, without any alternatives. So, I wanted to try to lay out A: those risks, and B: encourage people to try alternatives, to say that GitHub is not necessarily bad, although they may not actually fit what you need for various reasons, or someone else for various reasons. But you should have an alternative in your back pocket so that in case something changes, or you get locked out, or they go away, or they decide to cancel that feature, or any number of other scenarios, you have greatly diminished that risk. So, that's the main thrust of the post. STEPHANIE: Yeah, I really appreciated it because, you know, I think a lot of us probably take GitHub for granted [laughs]. And, you know, every new thing that they kind of add to the platform is like, oh, like, cool, like, I can now do this. In the post, you kind of lay out all of the different features that GitHub has rolled out over the last, you know, couple of years. And when you see it all like that, you know, like, in addition to being, like, a code repository, you now have, like, GitHub Actions for CI/CD, you know, you can deploy static pages with it. It now has, like, an in-browser editor, and then, you know, Copilot, which, like, the more things that they [laughs] roll out, the more it's becoming, like, the one-stop shop, right? That, like, do all of your work here. And I appreciated kind of, like, seeing that and being like, oh, like, is this what I want? EDWARD: Right. Yeah, exactly. Yeah. And you mentioned a bunch. There's also issues and discussions. You mentioned their in-browser editor. But so many people use VS Code, which, while it was technically made by Microsoft, it's based on Electron, which was developed at GitHub. And GitHub even, like, took away their other Electron-based editor, Atom. And then now officially recommends VS Code. And everything from deploying all the way down to, like, thinking about and prioritizing features and editing the code and all of that pretty much could happen on GitHub. I think maybe the only thing they don't currently do is host non-static sites, maybe [laughs]. That's maybe about it. And who knows? Maybe they're working on that; as far as I know, they are, so... STEPHANIE: Yeah, absolutely. You also mentioned one thing that I really liked about the content in the post was that you talked about alternatives to GitHub, even, like, alternatives to all of the different features that we mentioned. I guess I'm wondering, like, what were you hoping that a reader from your blog post, like, what they would get out of reading and, like, what they would take away from kind of sharing your opinion? EDWARD: I wanted to try to meet people where I think they might be because I think a lot of people do use GitHub, and they do take it for granted. And they do sort of see it as this thing that they must use, or they want to use even, and that's fine. That's not necessarily a bad thing. I want them to see those alternatives and have at least some idea that there is something else out there, that GitHub doesn't become just not only the default, but, like, the only thing. I mean, to just [chuckles] re-paraphrase the title of the post, I want to make sure GitHub does not become the only option, right? I want people to realize that there are other options out there and be encouraged to try them. And I have found, for me, at least, the better way to do that is not to only focus on, like, hey, don't use GitHub. Like, I hope people did not come away with only that message or even that message at all. But that it is more, hey, maybe try something else out and to encourage you to try something out. I'm going to A: share the risks with you and B: give you some actual things to try. So, I talk about the things I'm using and some other platforms and different paradigms to think about and use. So, I hope they take those. We'll see what happens in the next, you know, months or years. And I'll probably never know if it was actually just from me or from many other conversations, and thoughts, and articles, and all that kind of stuff. But that's what it takes, so... STEPHANIE: Yeah. I think the other fun thing about kind of the, like, meta-conversation we're having about having an opinion and, like, sharing it with the world is that you don't even really say like, "This is better than GitHub," or, like, kind of make a statement about, like, you shouldn't use...you don't even say, "You shouldn't use GitHub," right? The message is, like, here are some options: try it out, and, like, decide for yourself. EDWARD: Yeah, exactly. I want to empower people to do that. I don't think it would have been useful if I'd just go and say, "Hey, don't do this." It's very frustrating to me to see posts that are only negatives. And, honestly, I've probably written those posts, like, I'm not above them necessarily. But I have found that trying to help people do what you want them to do, as silly and maybe obvious as that sounds, is a more effective way to get them to do what you want them to do [laughs], as opposed to say, "Hey, stop doing the thing I don't want you to do," or attack their identity, or their job, or some other aspect of their life. Human behavior does not respond well to that generally, at least in my experience. Like, having your identity tied up in a tool or a platform is, unfortunately, pretty common in, like, a tech space. Like, oh, like, Ruby on Rails is the best piece of software or something like that. And it's like, well, you might like it, and that might be the best thing for you. And personally, I really like Ruby on Rails. I think it does a great job of what it does. But as an example, I would not use Ruby on Rails to maybe build an iOS app. I could; I think that's possible, but I don't think that's maybe the best tool for that job. And so, trying to, again, meet people where they are. STEPHANIE: I guess it kind of goes back to what you're saying. It's like, you want to help people do what they are trying to do. EDWARD: Yeah. Maybe there's a little paternalistic thinking, too, of, like, what's good for the industry, even if it feels bad for you right now. I don't love that sort of paternalistic thinking. But if it's a real risk, it seems worth at least addressing or pointing out and letting people make that decision for themselves. STEPHANIE: Yeah, absolutely. I am actually kind of curious about how do you, like, decide something for yourself? You know, like, how do you form your own opinion about technology? I think, yeah, like, a lot of people take GitHub for granted. They use it because that's just what's used, and that may or may not be a good reason for doing so. But that was a position I was in for a long time, right? You know, especially when you're newer to the industry, you're like, oh, well, this is what the company uses, or this is what, like, the industry uses. But, like, how do you start to figure out for yourself, like, do I actually like this? Does this help me meet my goals and needs? Is it doing what I want it to be doing? Do you have any thoughts about that? EDWARD: Yeah. I imagine most people listening to this have tried lots of different pieces of software and found them great, or terrible, or somewhere in between. And I don't think there's necessarily one way to do this. But I think my way has been to try lots of things, unsurprisingly, and evaluate them based on the thing that I'm trying to do. Sometimes I'll go into a new field, or a new area, or a new product, or whatever, and you just sort of use what's there, or what people have told you about, or what you heard about last, and that's fine. That's a great place to start, right? And then you start seeing maybe where it falls down, or where it is frustrating or doesn't quite meet those needs. And it takes a bit of stepping back. Again, I don't think I'm, like, going to blow anyone's mind here by this amazing secretive technique that I have for, like, discovering good software. But it's, like, sitting there and going through this iterative loop of try it, evaluate it. Be honest with, is it meeting or not meeting some particular needs? And then try something else. Or now you have a little more info to arm yourself to get to the next piece that is potentially good. As you go on in your career and you've tried many, many, many pieces of things, you start to see patterns, right? And you know, like, oh, it's not like, oh, this is how I make websites. It's like, ah, I understand that websites are made with a combination of HTML, and CSS, and JavaScript and sometimes use frameworks. And there's a database layer with an ORM. And you start to understand all the different parts. And now that you have those keywords and those pieces a little more under your control or you have more experience with them, you can use all that experience to then seek out particular pieces. I'm looking for an ORM that's built with Rust because that's the thing I need to do it for; that's the platform I need to work with. And I needed to make sure that it supports MySQL and Postgres, right? Like, it's a very targeted thing that you wouldn't know when you're starting out. But over years of experience, you understand the difference and the reasons why you might need something like that. And sometimes it's about kind of evaluating options and maybe making little test projects to play around with those things or side projects. That's why something like investment time or 20% time is so helpful and useful for that if you're the kind of person who, you know, enjoys programming on your own in your own free time like I am. And that's also a great time to do it, although it's certainly not required. And so, that's kind of how I go through and evaluate whatever tool it is that I need. For something maybe more professional or higher stakes, there's a little more evaluation upfront, right? You want to make sure you make the right choice before you spend thousands of hours using it and potentially regretting [laughs] it and having to roll it back, causing even more thousands of hours of time. So, there's obviously some scrutiny there. But, again, that also takes experience and understanding the kind of need that you have. So, yeah, it's kind of a trade-off of, like, your time, and your energy, and your experience, and your interest. You will have many different inputs from colleagues, from websites, from posts on the internet, from Twitter, or fediverse-type kind of blogging and everything in between, right? So, you take all that in, and you try a bunch of stuff, and you come out on the other side, and then you do it again. STEPHANIE: Yeah, it sounds like you really like to just experiment, and I think that's really great. And I actually have to say that I am not someone who likes to do that [laughs]. Like, it's not where I focus a lot of my time. And it's why I'm, like, glad I'm friends with you, first of all. EDWARD: [laughs] STEPHANIE: But also, I've realized I'm much more of, like, a gatherer in terms of information and opinions. Like, I like hearing about other people's experience to then, like, help inform an opinion that I might develop myself. And, you know, it's not to say that, like, I am, like, oh yeah, like, so and so said this, and so, therefore, yeah, I completely believe what they have to say. But as someone who does not particularly want to spend a ton of my time trying out things, it is really helpful to know people who do like to do that, know people who I do trust, right? And then kind of like you had mentioned, just, like, having all these different inputs. And one thing that has changed for me with more experience is, previously, a lot of, like, the basis of what I thought was the quote, unquote, "right way" to develop software was, like, asking, like, other people and, you know, their opinions becoming my own. And, you know, at some point, though, that, like, has shifted, right? Where it's like, oh, like, you know, I remember learning this from so and so, and, like, actually, I think I disagree now. Or maybe it's like, I will take one part of it and be like, yeah, I really like test-driven development in this particular way that I have figured out how I do it, but it is different still from, like, who I learned it from. And even though, like, that was kind of what I thought previously as, like, oh yeah, like, this is the way that I've adopted without room for adjustment. I think that has been a growth, I guess, that I can point to and be like, oh yeah, like, I once was in a position where maybe opinions weren't necessarily my own. But now I spend a lot more time thinking about, like, oh, like, how do I feel about this? And I think there is, like, some amount of self-reflection required, right? A lot, honestly. Like, you try things, and then you think about, like, did I like that? [laughs] One without the other doesn't necessarily fully informed opinion make. EDWARD: Yeah, absolutely. I mean, I'm really glad you brought up that, like, you've heard an opinion, or a suggestion, or an idea from somebody, and you kind of adopt it as your own for a little bit. I like to think of it as trying on ideas like you try on clothing. Or something like, let me try on this jacket. Does this fit? And maybe you like it a little bit. Or maybe you look ridiculous, and it's [laughs] not quite for you. And you don't feel like it's for you. But you have to try. You have to, like, actually do it. And that is a completely valid way to, like, kick-starting some of those opinions, getting input from friends or colleagues, or just the world around you. And, like, hearing those things and trying them is 100% valid. And I'm glad you mentioned that because if I mentioned it, I think I kind of skipped over it or went through it very quickly. So, absolutely. And you're talking about how you just take, like, one part of it maybe. That nuance, that is, I think, really critical to that whole thought, too. Everything works differently for different people. And every tool is good for other, like, different jobs. Like, it will be like saying a hammer is the best tool, and it's, like, well, it's a good tool for the right thing. But, like, I wouldn't use a hammer to, like, I don't know, level the new house numbers I put on my house, right? But I might use them to, like, hit the nail to get them in. So, it's a silly analogy, but, like, there is always nuance and different ways to apply these different tools and opinions. STEPHANIE: I like that analogy. I think it would be really funny if there was someone out there who claimed that the hammer is the best tool ever invented [laughs]. EDWARD: Oh, I'm sure. I'm sure there is, you know. I'm not going to use a drill to paint my house, though [laughs]. STEPHANIE: That's a fair point, and you don't have to [chuckles]. EDWARD: Thank you [laughs]. STEPHANIE: But, I guess, to extend this thought further, I completely and wholeheartedly agree that, like, yeah, everyone gets to decide for themselves what works for them. But also, we work in relation with others. And I'm very interested in the balance of having your own ideas and opinions about tooling, software practices, like, whatever, and then how to bring that back into, like, working on a team or, like, working with others. EDWARD: Yeah. Well, I don't know if this is exactly what you're asking, but it makes me think of: you've gone off; you've discovered a whole bunch of stuff that you think works really well for you. And then you go to work, or you go to a community that is using a very different way of working, or different tools, or different technologies. That can be a piece of friction sometimes of, like, "Oh my gosh, I love Ruby on Rails. It's the best." And someone else is like, "I really, really don't like Ruby on Rails for reasons XYZ. And we don't use it here." And that can be really tough and, honestly, sometimes even disheartening, depending on how strongly you feel about that tool and how strongly they feel about their tools. And as a young developer many years ago, I definitely had a lot more of my identity wrapped up in the tools and technologies that I used. And that has been very useful to try to separate those two. I don't claim to be perfect at it or done with that work yet. But the more I can step away and say, you know, like, this is only a tool. It is not the tool. It is not the best tool. It is a tool that can be very effective at certain things. And I've found, at least right now, the more useful thing is to get to the root of the problem you're trying to solve and make sure you agree with everybody on that premise. So, yes, you may have come from a world where fast iteration and a really fluent language interface like Ruby has and a really fast iteration cycle like Rails has, is, like, the most important need to be solved because other things have been solved. You understand what you're doing for your product, or maybe you need to iterate quickly on that product. You've figured out an audience. You're getting payroll. You're meeting all that as a business. But then you go into a business that's potentially, like, let's say, much less funded. Or they have their market fit, and now they're working on, like, extreme performance optimization, or they're working on getting, like, government compliance, or something like that. And maybe Rails is still great. This is maybe a...the analogy may fall apart here. But let's pretend it isn't for some reason. You have to agree that, hey, like, yes, we've solved problem X that Rails really helps you solve. And now we're moving on to problem Y, and Rails may not help you solve that, or whatever technology you're using may not help you solve that. And I've found it to be much more useful to stop worrying about the means, and the tools, the things in between, and worry about the ends, worry about the goal, worry about the problems you're actually trying to solve. And then you can feel really invested in trying to solve that problem together as a group, as a team, as a community. I've found that to be very helpful. And I would also like to say it is extremely difficult to let some of that stuff go. It takes a lot of work. I see you nodding along. Like, it's really, really hard. And, like I said, I'm not totally done with it either. But that's, I think, it's something I'm really working on now and something I feel really strongly about. STEPHANIE: Yeah. You mentioned the friction of, like, working in an environment where there are different opinions, which is, you know, I don't know, just, like, reality, I guess [laughs]. EDWARD: Human nature. STEPHANIE: Yeah, exactly. And one thing I was thinking about recently was, like, okay, like, so someone else maybe made a decision about using a type of technology or, like, made a decision about architecture before my time or, like, above me, or whatever, right? Like, I wasn't there, and that is okay. But also, like, how do I maintain what I believe in and hold fast to, like, my opinions based on my value system, at least, without complaining? [laughs] Because I've only seen that a little bit before, right? When it just becomes, like, venting, right? It's like, ugh, like, you know, I have seen people who are coming from maybe, like, microservices or more of a JavaScript world, and they're like, ugh, like, what is going on with Rails? Like, this sucks [laughs]. And one thing I've been trying lately is just, like, communicating when I don't agree that something's a great idea. But also, like, acknowledging that, like, yeah, but this is how it is for this team, and I'm also not in a position to change it. Or, like, I don't feel so strongly about it that I'm like, "Hey, we should totally rethink using this, like, background job [laughs] platform." But I will be like, "Hey, like, I don't like this particular thing about it. And, you know, maybe here are some things that I did to mitigate whatever thing I'm not super into," or, like, "If I had more time, this is what I would do," and just putting it out there. Sometimes, I don't get, like, engagement on it. But it's a good practice for me to be, like, this is how I can still have opinions about things, even if I'm not, at least in this particular moment, in a position to change anything. EDWARD: It sounds to me like you in, at least at the lowest level, like, you want to be acknowledged, and you want to, like, be heard. You want to be part of a process. And yes, it doesn't always go with Stephanie's initial thought, or even final thought, or Edward's final thought. But it is very helpful to know that you are heard and you are respected. And it isn't someone just, like, completely disregarding any feeling that you have. As much as we like to say programming is this very, like, I don't know, value neutral, zero emotion kind of job, like, there's tons of emotion in this job. We want to do good things for the world. We want our technology to serve the people, ultimately, at least I do, and I know you do. But we sometimes disagree on the way to do that. And so, you want to make sure you're heard. And if you can't get that at work, like, and I know you do this, but I would encourage anyone listening out there to, like, get a buddy that you can vent to or get somebody that you can express, and they will hear you. That is so valuable just as a release, in some ways, to kind of get through what you need to get through sometimes. Because it is a job, and you aren't always the person that's going to make the decisions. And, honestly, like, you do still have one decision left, which is you can go work somewhere else if it really is that bad. And, like, it's useful to know that you are staying where you are because you appreciate the trade-offs that you have: a steady paycheck, or the colleagues that you work with, or whatever. And that's fine. That's an okay trade-off. And at some point, you might want to make a different trade-off, and that's also fine. We're getting real managery and real here. But I think it's useful. Like you said, this can be a very emotional career, and it's worth acknowledging that. STEPHANIE: Yeah, you just, you know, raised a bunch of, like, very excellent points. Yeah, at the end of the day, like, you know, you can do your best to, like, propose changes or, like, introduce new tooling and, like, see how other people feel about it. But, like, yeah, if you fundamentally do not enjoy working with a critical tool that, you know, a lot of the foundation of the work that you're doing day to day is built off of, then maybe there is a place where, like, another company that's using tools that you do feel excited or, like, passionate or, like, are a better alignment with what you hope to be doing. Kind of just going back to that theme that we were talking about earlier, like, everyone gets to decide for themselves, right? Like, the tools to help them do what they want to be doing. EDWARD: And you could even, like, reframe it for yourself, where instead of it being about the tools, maybe it's about the problem. Like, you start being more invested in, like, the problem that you're solving and, okay, maybe you don't want to use microservices or whatever, but, like, maybe you can get behind that if you realign yourself. The thing you're trying to solve is not the tool. The thing you're trying to solve is the problem. And that can be a useful, like, way to mitigate that or to, like, help yourself feel okay about the thing, whatever that is. STEPHANIE: Yeah. Now, how do I have this conversation with everyone [laughter] who claims on the internet that X is the solution to all their problems or the silver bullet, [laughs] or whatever? EDWARD: Yeah, that's tough because there are some very strong opinions on the internet, as I'm sure [laughs] you've observed. I don't know if I have the answer [laughs]. Once again, nuance and indecisions. I have been currently approaching it from kind of a meta-perspective of, like, if someone says, "X is the best tool," you know, "A hammer is the best tool," right? I'm not going to go write the post that's like, "No, hammer is, in fact, not the best tool. Don't use hammers." I would maybe instead write a post that's like, "Consider what makes the best tool." I've effectively, like, raised up one level of abstraction from, we're no longer talking about is X, or Y, or Z, the best tool? We're talking about how do we even decide that? How do we even think about that? One post...I'm now just promoting my blog posts, so get ready. But one thing I wrote was this post called And Not But. And I tried to make the case that instead of saying the word but in a sentence, so, like, yeah, yeah, we might want to use hammers, but we have to use drills or whatever. I'm trying to make the case that you can use and instead. So yeah, hammers are really good, and drills are really good in these other scenarios. And trying to get that nuance in there, like, really, really putting that in there and getting people to, like, feel that better, I think, has been really helpful, for me, certainly to get through. And part of the best thing about writing a blog post is just getting your own thoughts...I mean, it's another way to vent, right? It's getting your own thoughts out somewhere. And sometimes people respond to them. You'd be surprised who just reaches out and been like, "Hey, yeah, like, I really appreciated that post. That was really great." You weren't trying to reach that person, but now you have another connection. So, a side benefit for writing blog posts [inaudible 30:17] do it, or just even getting your thoughts out via a podcast, via a video, whatever. So, I've kind of addressed that. I also wrote a post when I worked at thoughtbot called Empathy Online. And that came out of, like, frustration with seeing people being too divisive or, in my opinion, unempathetic or inconsiderate. And instead of, again, trying to just say, "Stop it, don't do that," [laughs] but trying to, like, help use what I have learned when communicating in a medium that is kind of inherently difficult to get across emotion and empathy. And so, again, it's, in some ways, unsatisfying because what you really want to do is go talk to that person that says, "Hammer is the best tool," and say, "No, stop it [laughs]," and, like, slap them on the head or whatever, politely. But I think that probably will not get you very far. And so, if your goal, really, is to change the way people think about these things, I find it way more effective to, like, zoom out and talk about that on that sort of more meta-level and that higher level. STEPHANIE: Yeah. I liked how you called it, like, a higher level of abstraction. And, honestly, the other thing I was thinking about as you were talking about the, like, divisiveness that opinions can create, there's also some aspect of it, as a reader, realizing that one person sharing their opinion does not take away your ability to have a differing opinion [laughs]. And sometimes it's tough when someone's like, "Tailwind sucks [laughs], and it is a backward step in, you know, how we write CSS," or whatever. Yes, like, sometimes that can be kind of, like, inflammatory. But if you, like, kind of are translating it or, like, reading between the lines, they're just writing about their perspective from the things that they value. And it is okay for you to value different things and, for that reason, have a different perspective on the same thing. And, I don't know, that has helped me sometimes avoid getting into that, like, headspace of wanting to argue with someone [laughs] on the internet. Or they'll be like, "This is why I am right." [laughs] Now I have to write something and share it on the internet in response [laughs]. EDWARD: There's this idea of the narcissism of minor differences. And I believe the idea is this, like, you know, you're more likely to argue with someone who, like, 90% agrees with you. But you're just, like, quibbling over that last 10%. I mean, one might call it bikeshedding. I don't know if you've heard that phrase. But the thing that I have often found, too, is that, like the GitHub post, I will get people arguing with me, like, there's the kind of stuff I expected, where it's like, "Oh, but GitHub is really good," and XYZ and that's fine. And we can have that conversation. But it's kind of surprising, and I should have expected it, that people will sometimes be like, "Hey, you didn't go far enough. You should tell people to, like, completely delete their GitHub or, like, you know, go protest in the street." And, like, maybe that's true. I'm not saying it is or isn't. But I think one thing I try to think about is, in any post, in any trying convincing argument, like, you're potentially moving someone 1 step forward, even if there's ten steps to go. But they're never going to make those ten steps if they don't make the first 1. And so, you can kind of help them get there. And someone else's post can absolutely take them from step 5 to 6 or 6 to 7 or 7 to 8. And you won't accomplish it all at once, and it's kind of a silly thing to try, and your efforts are probably lost [laughs]. Unfortunately, it's a little bit of preaching to the choir because, like, yeah, the people that are going to respond to, like, the extreme, the end are, like, the people that already get it. And the people that you're trying to convince and move along are not going to get that thing. I do want to say that I could see this being perceived as, like, a very privileged position of, like, if there's some, like, genuine atrocity happening in the world, like, it is appropriate to go to extremes many times and sometimes, and that's fine, and people are allowed to be there. I don't want to invalidate that. It's a really tricky balance. And I'm trying to say that if your goal is to vent, that's fine. And if your goal is to move people from step 3 to 4, you have to meet people at step 3. And all that's valid and okay to try to help people move in that way. But it is very tricky. And I don't want to invalidate someone who's extremely frustrated because they're at step 10, and no one else is seeing the harm that not everybody else being at step 10 is. Like, that's an incredibly reasonable place to be and an okay place to be. STEPHANIE: Yeah, yeah. The other thing you just sparked, for me, is also the, like, power of, yeah, being able to say like, "Yeah, I agree with this 50%, or 60%, or, like, 90%." And also, there's this 10% that I'm like, oh, like, I wish were different, or I wish they'd gone further, or I wish they didn't say that. Or, you know, I just straight up disagree with this step 1 sentence, but the rest of the article, you know, I really related to. And, like, teasing that apart has been very useful for me, right? Because then I'm no longer like being like, oh, was this post good or bad? Do I agree with it or don't agree with it? It's like, there's room for [laughs] all of it. EDWARD: Yeah, that's that nuance that, you know, I liked this post, and I did not agree with these two parts of it, or whatever. It's so useful. STEPHANIE: Well, thanks, Edward, so much for coming on the show and bringing that nuance to this conversation. I feel really excited about kind of what we talked about, and hopefully, it resonates with some of our listeners. EDWARD: Yeah, I hope so too. I hope I can take them from step 2 to step 3 [laughs]. STEPHANIE: On that note, shall we wrap up? EDWARD: Let's wrap up. STEPHANIE: Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeeee!!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions.

Watch This
Taylor Swift night on Dancing With the Star, Blue Bloods to end

Watch This

Play Episode Listen Later Nov 21, 2023 11:30


It's a celebration of Taylor Swift's music on the new episode of Dancing With the Stars, featuring Swift's Eras Tour choreographer Mandy Moore as a guest judge. Fargo returns for a new season, starring Juno Temple, Jon Hamm, and Jennifer Jason Leigh. Twenty-four singers remain for the Playoffs on the new episode of The Voice. Plus, Hollywood trivia, and entertainment headlines, including Blue Bloods announcing news about its final season, and Hill Harper leaves The Good Doctor to run for the U.S. Senate. More at ew.com, ew.com/wtw, and @EW on X (formerly Twitter) and @EntertainmentWeekly everywhere else. Host/Writer/Producer Gerrad Hall (@gerradhall); Editor: Samee Junio (@it_your_sam); Writer: Dustin Nelson. Learn more about your ad choices. Visit megaphone.fm/adchoices

Autism Parenting Secrets
Go For HIGH-VIBE Health & Beauty

Autism Parenting Secrets

Play Episode Listen Later Nov 16, 2023 45:00


Welcome to Episode 178 of Autism Parenting Secrets. Today, we're focusing on the case for non-toxic health and beauty care with our guest, Nadine Artemis.She is the creator of Living Libations, a luxury line of organic wild-crafted non-GMO serums, elixirs, and essential oils for those seeking the purest of the pure botanical natural health and beauty products on the planet.Nadine is also the author of two books, including Renegade Beauty and Holistic Dental Care: The Complete Guide to Healthy Teeth and Gums.Avoiding toxic products is a MUST for you, your child, and your entire family.The secret this week is…Go For HIGH-VIBE Health & BeautyYou'll Discover:Why It Makes Sense To Cleanse With OIL (6:22)How To Protect Your Largest Organ (8:06)The Case For Peppermint (18:50)Options To Address High-Oxalates (20:32)A Science Experiment In Your Mouth and Other Oral Care Tips (26:29)Why Organic Isn't A Guarantee (32:34)The Many Applications For Essential Oils (34:14)The Hazards Of Municipal Water (38:01)Tips To Promote Calm And Restful Sleep (41:01)About Our GuestNadine is a key speaker at health and wellness conferences and a frequent commentator on health and beauty for media outlets.  She has received glowing reviews for her work in the Hollywood Reporter, GOOP, Vogue, People, Elle, Yoga Journal, Natural Health, W Magazine, The New York Times, Los Angeles Times, and National Post.Celebrity fans include Shailene Woodley, Renee Zellweger, Julianne Moore, Carrie Anne Moss, Mandy Moore, First Lady of Canada Sophie Trudeau, and many others. Alanis Morissette describes  Nadine as “a true sense-visionary."Aveda founder Horst Rechelbacher calls Nadine “a pure flower of creativity.”Fun Fact: She opened the first full-concept aromatherapy store in North America at just 22 years old. Living LibationsLiving Libations On InstagramLiving Libations On FacebookLiving Libations On YouTubeReferences in The Episode:Living Libations (10% discount with this link)Aqua Tru Water PurifiersAdditional Resources:Take The Quiz: What's YOUR Top Autism Parenting Blindspot?To learn more about Cass & Len, visit us at www.autismparentingsecrets.comBe sure to follow Cass & Len on InstagramIf you enjoyed this episode, share it with your friends.

Giant Robots Smashing Into Other Giant Robots
500: Giant Robots Smashing Into Other Giant Robots 500th Episode!

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Nov 16, 2023 72:17


We released episode one of this podcast on June 11, 2012. Now, more than a decade later, we're celebrating the 500th episode of our show. In honor of this milestone, Victoria, Will, and Chad caught up with each of the past hosts of the show: Ben Orenstein, Chris Toomey, and Lindsey Christensen. We chatted about what they're up to now, what they liked and learned from hosting the show, their time at thoughtbot, and more! Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: 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, Victoria Guido. WILL: And I'm your other host, Will Larry. CHAD: And I'm your other host, Chad Pytel. We released episode one of this podcast on June 11, 2012. Now more than a decade later, were celebrating this: the 500th episode of our show. In honor of this milestone, Victoria, Will, and I caught up with each of the past hosts of the show: Ben Orenstein, Chris Toomey, and Lindsey Christensen. We chatted about what they're up to now, what they liked and learned from hosting the show and their time at thoughtbot, and more. First up: Ben Orenstein. Ben was the very first host of the show back in 2012 when he was a developer at thoughtbot. He is now the co-founder and Head of Product at Tuple, a remote pair programming tool for designers and developers. Ben, it's great to talk to you again. It's been a while since you and I talked. How have you been? BEN: I've been decent, yeah. It's fun to be back to my roots a little bit. I told some folks that I work with that I was coming back to the pod for the 500th Episode, and they were stoked. So, it's kind of a treat to get to be on these airwaves again. CHAD: What have you been up to since you left this show and thoughtbot? BEN: Well, I started a company. So, I was at thoughtbot for a while; I think it was seven years. And I eventually sort of struck out to start my own thing–had a false start or two here and there. And then, I ended up starting a company called Tuple, and we still exist today, fortunately. Tuple is a tool for doing remote pair programming. We started off on macOS and then wrote a Linux client. And we're launching a Windows client now. But it's sort of, like, screen sharing with remote control for developers who are actually writing code and want to have great, low latency remote control and who care about screen share quality and that sort of thing. I started that about five years ago with two co-founders. Today, we are a team of 11, I think it is. And it's been going well. Our timing was really great, it turned out. We launched a little bit before COVID. So, remote work turned into a lot more of a thing, and we were already in the market. So, that helped us a ton. It was quite a wild ride there for a bit. But things have calmed down a little lately, but it's still fun. I'm, like, really enjoying being a co-founder of a software company. It was what I've always sort of wanted to do. And it turns out it actually is pretty fun and pretty great. Although there are, of course, the ups and downs of business ownership. It is never quite as calm or relaxing as being an employee somewhere else. CHAD: You started Tuple instigated by...full disclosure: thoughtbot's an early customer of Tuple. We're still a customer. We use it a lot. BEN: Woo-hoo. I appreciate that. Thank you. CHAD: If I remember right, you started and were sort of instigated to create Tuple because there was a prior product that then Slack bought, and then it started to degrade. And now, it no longer exists in the same way that it did before. BEN: Yeah. So, there was this tool called Screenhero, which I actually started using -- CHAD: [inaudible 02:14] BEN: Yeah, first at thoughtbot. Some other thoughtboter introduced me to it, and we would use it for pair programming. And I was like, oh, this is nice. And then yeah, Slack kind of acqui-hired it and more or less ended up shutting the product down. And so, there was this gap in the market. And I would ask my friends, I would ask thoughtboters and other developers, like, "What are you using now that Screenhero is gone?" And no one had a good answer. And so, after a while of this thing sort of staring me in the face, I was like, we have to try to solve this need. There's clearly a hole in the market. Yeah, so we were heavily inspired by them in the early days. Hopefully, we've charted our own path now. But they were definitely...the initial seed was, you know, let's do Screenhero but try to not get bought early or something. CHAD: [laughs] How did you or did you feel like you captured a lot of the Screenhero customers and reached them in those early days? BEN: I think so. The pitch for it was sort of shockingly easy because Screenhero had kind of blazed this trail. Like, I would often just be like, "Oh, we're making a thing. Do you remember Screenhero?" And they'd go, "Oh yeah, I loved Screenhero". I'd be like, "Yeah, we're going to try to do that." And they'd be like, "Nice. Sign me up." So, it for sure helped a ton. I have no idea what percentage of customers we converted. And they were a pretty large success, so probably a small fraction, but it definitely, like, made the initial days much easier. CHAD: Yeah. And then, like you said, COVID happened. BEN: COVID happened, yeah. I think we had been around for about a year when COVID hit. So, we were getting our feet underneath us. And we were already, like, the company was already growing at a pretty good rate, and we were feeling pretty good about it. I don't think we had quite hit ramen profitable, but we were probably pretty close or, like, flirting with it. Yeah, the business, like, I don't know, tripled or quadrupled in a matter of months. We had a few big customers that, like, just told everyone to start using Tuple. So, we had, like, thousands and thousands of new users kind of immediately. So, it was a crazy time. Everything melted, of course. We hadn't quite engineered for that much scale. We had a really rough day or so as we scrambled, but fortunately, we got things under control. And then had this, like, very nice tailwind. Because we started the company assuming that remote work would grow. We assumed that there would be more remote developers every year. And, you know, it's probably maybe 5% of dev jobs are remote or maybe even less, but we expect to see this number creeping up. We don't think that trend will reverse. And so, COVID just, like, it just yanked it, you know, a decade in the future. CHAD: You haven't tripled or quadrupled your team size, have you? BEN: No. Well, I mean, I guess, I mean, we started as 3, and now we're 11, so kind of. CHAD: [laughs] Yeah, that's true. BEN: Expenses have not grown as fast as revenue, fortunately. CHAD: That's good. That's basically what I was asking [laughs]. BEN: Yeah, yeah. We're still a pretty small team, actually. We have only, like, four or five full-time engineers on the team at the moment, which is kind of wild because we are now, you know, we have three platforms to support: Linux, Windows, and Mac. It's a pretty complicated app doing, like, real-time streaming of audio, webcams, desktops, caring about OS-level intricacies. So, I think we will be hiring more people soon, although we haven't said that for a long time. We sort of have always had a bit of a hire-slow mentality to try to get the right team members and, like, feel a real pain before we hire someone into it. But we have been getting a bit more aggressive with hiring lately. VICTORIA: Well, I really appreciate Tuple. I installed it when I first started working here at thoughtbot. And we have random pairings with everyone across the company. So, I'll randomly get to meet someone halfway across the world who's working on similar projects. And I think they really enjoy that I have a tool they like working to share what they're working on. So, I want to thank you for that. And I'm curious about when you really started to scale during COVID, what were some of the technology architecture trade-offs you came across, and where did you land with it? BEN: Well, we got fairly...I don't know if it was lucky, but we...for a long time, for years, even through COVID, maybe the first four years of the company, all Tuple calls were purely peer-to-peer. And there was no server that we owned intermediating things. This was, like, kind of one of the keys of, like, not having expenses. The scale of revenue was we could have lots more calls happen. And it wouldn't cost us bandwidth or server capacity. To this day, still, for any calls with three or fewer participants, they're purely peer-to-peer. And this is nice for latency purposes because it just...we can find the most direct path to the internet between two people. It's also nice from our cost perspective because we don't need to pay to send that data. And that was hugely useful as call volume went up immensely. Didn't have to worry too much about server load and didn't have to worry too much about bandwidth costs. CHAD: Today, is there a central service that makes the initial connection for people? BEN: Yes, yeah, yeah. So, there is a signaling server. So, when you launch the app, you sign in, and you see, like, oh, which of my co-workers are online? So, there is actually a Rails app that handles that, actually, increasingly less the Rails app. We have now...I think it's a Go service that actually manages all those. I'm further and further from the code every year. Some of the technical questions might be a little bit beyond me, or I might have slightly out-of-date info. But back to the architecture question for a second, we did a pretty big refactor when we decided to go from just being a Mac client to supporting other platforms, where we split out a cross-platform real-time communication engine written in C++ so that we could use that for all of the heavy lifting, all the managing of the connections, and the tricky bandwidth estimation, and all this stuff, and use that across different platforms. And so, today, you have the cross-platform engine, and then on top of that is a, like, a less specific layer for each of the operating systems that we support. CHAD: So, you mentioned you're less and less in the code these days. So, what do you spend your time doing then? BEN: It's a mix of things. These days, it's basically mostly -- CHAD: Just cocktails on the beach, right? BEN: Cocktails, yes [laughs], cocktails on the beach, appearing on podcasts trying to sound important and impressive, yeah. Mostly product work. So, right before this, I just got off a call with some folks from The Browser Company. They are some of our first alpha users for our new Windows clients. So, I hopped on the call with them and, like, watched three of them install the product and inevitably run into some bugs. And, you know, chatted through those with the engineer that was working on it, prioritized some stuff, made some decisions about what's coming up next, and what we're going to ignore. So, mostly product work these days. For the first five years of the company, I was CEO, so I was doing kind of everything: marketing, and also hiring, and also product. About two months ago, I stepped down as CEO, and one of my other co-founders, Spencer, stepped up. And so, now my focus has narrowed to be mostly just product stuff and much less on the marketing or hiring side. VICTORIA: Yeah, you mentioned that it was a little more comfortable to be an employee than to be a founder. I don't know if you could say more about that because, certainly, a lot of engineers are smart enough and capable enough to run their own company. But what really informed your choice there, and do you regret it? [laughs] BEN: I definitely don't regret it. thoughtbot was a close second in terms of wonderful professional experiences. But running my own thing has been the most interesting professional thing I've done by a big margin. It has also been more stressful. And, Chad, I don't know if you remember, I think, like, maybe eight years ago, you tweeted something like, if you want to sleep well at night, and, like, value that, like, peace of mind, like, don't start a company or something. I have experienced that. CHAD: [laughs] BEN: A lot more, yeah, like waking up in the middle of the night worrying about things. It feels a little bit like the highs are higher; the lows are lower. Being an employee somewhere, it's like, if this company fails, I know I can go get another job, right? Like, you're a developer. You're extremely employable. But as the owner of the company, if the company fails, like, a huge chunk of your net worth is gone. Like, this thing you poured your life into is gone. It's way more stressful and traumatic to have that happen, or have that threatened to be happening, or just imagine that happening. So, overall, I have found the trade-off to be totally worth it. It's awesome to make your own decisions and chart your own path. And when it works, it can work in a way that being a salaried employee can't. So, I'm happy with those trade-offs. But I think that is a good question for people to ask themselves as they consider doing something like this is, like: is that the kind of trade-off that you want to make? Because it has significant downsides for sure. WILL: I am a big fan of Tuple also. I love it. It [inaudible 10:08] easy, especially with remote work. You hit the jackpot with COVID and remote work, so kudos for that [laughs]. Was there anything...because I know from our previous companies, about over...hopefully a lot more of the good stuff than the bad stuff. But was there anything that you learned? Because you were at thoughtbot for seven years. Was there anything that you're like, oh my gosh, I learned that, and it's helped me till this day while I'm running my company? BEN: Yeah, quite a bit, actually. I think it'd be hard to tease apart exactly which lessons, but I do...so I ran Upcase for thoughtbot and also FormKeep. So, I got a chance to kind of run a small division of the company, while still being a normal employee and, like, having not much of that risk. And I think that was a really wonderful opportunity for me to, like, practice the skills that I was interested in. Just, like, how do you market a thing? How do you design a product and have it be good? How do you prioritize user feedback? There were a ton of lessons from those days that I feel like made me better at running our company when we actually took a shot at it. So, there were, like, the specific things that I learned by the work I was doing there. But then just, like, I mean, I think I am the programmer I am today because of, like, the weekly dev discussions that happened. Like, spending so much time with Joe Ferris and, like, trying to copy as much of his brain as possible, like, really, like, imprinted on me as, like, a programmer. And also, just, like, a lot of the sort of cultural things from my time at thoughtbot of, like, you should be sharing the things you're learning. Like, writing blog posts is a great use of time. Like, doing open-source work is a great use of time. And maybe you can't directly trace how doing, like, working in public or sharing information benefits the company. It's hard to, like, attribute it from a marketing sense. But if you sort of have faith that in the large, it's going to work out, it probably will. That feels like a thoughtbot lesson to me, and I think it has served us really well; where I recorded a weekly podcast for a long time called The Art of Product. I'm recording a new podcast called Hackers Incorporated with Adam Wathan of Tailwind fame. And I don't ever think, like, hmm, how many new leads do we think we get per episode, and how many hours has that taken? What's the ROI? I just have this sort of reflex that I developed from thoughtbot time of, like, you should be putting stuff out there, or you should be giving back. You should help other people. And that will probably help your business and make it work in the long term. CHAD: That's a good lesson [laughs]. One of the other things, you know, while you were a host of Giant Robots, you were the first host. I remember, you know, encouraging you to be the first host, and I think we talked about that in one of the episodes along the way. But we also transitioned the format a little bit, especially as you started to work on products here; you know, it was more about the building of those products and following along with those. And one of the things that sort of half-jokingly defined, I think, your impact on a lot of products was pricing, experimenting with pricing, learning about pricing, increasing prices more than people were maybe comfortable doing so. How has that worked out with Tuple, pricing in particular? BEN: It's really hard to say. It's hard to know what, like, the other path would have been through the world-. We sort of decided from, like, the early days that we wanted to have, like, a fairly premium price. Like, we wanted to be the product that was really good and was, like, a little bit annoyingly expensive, but you still paid for it because it felt worth it. And I think people could debate in both directions whether we nailed that or not. We have had a price increase that we ended up rolling back. We went, like, a little too far one time and said, "You know what? I think we're a little bit over," and we reverted that. But I would say even today, we are still a fairly pricey product. I mean, I'm pretty happy with how the company has done. I can't prove to you that, like, if the price were half what it is, we would have, you know, better success or not. CHAD: I think it'd be very hard to make the argument that if it was half that, you would have double the number of customers. BEN: Yeah, that's probably not true. CHAD: Not with the customers that you have, who are companies that will pay for products that they use as much as Tuple. BEN: Yeah, I'm happy serving the kind of companies, and they end up being mostly tech companies that really value developer happiness. When their developers come to them and they say, "We don't want to pair over Zoom. We like this thing. It's better. It feels nicer to use," they say, "Okay," and they buy the tool for them. There are places where that's not the case. And they say, "We already have a thing that does screen sharing. You're not allowed to buy this." We don't invest a lot of time trying to sell to those people or convince them that they're wrong. And I'm pretty happy serving sort of the first group. CHAD: So, you've mentioned that you've still been podcasting. To be honest, I didn't realize you were starting something new. Is it live now? BEN: It is live now, yeah. CHAD: Awesome. Where can people find that? BEN: hackersincorporated.com. It's about the transition from developer to founder, which is kind of what we've been touching on here. Yeah, hopefully, the audience is developers who want to start something or have started something who are maybe a little bit further behind progression-wise. And it's kind of, like, I have some lessons, and Adam has some lessons, and, you know, we don't think that we're experts. But sometimes it's useful to just hear, like, two people's story and sort of see, like, what seemingly has worked for them. So, we've been trying to share things there. And I think people will find it useful. VICTORIA: I was going to ask you for a lesson, maybe give us a little sample about how would you advise someone who's built a product and wants to market it, and it's targeted towards developers since you mentioned that previously as well. BEN: Yeah, in a way, the question already contains a problem. It's like, oh, I built the product; now how do I market it? It's a little bit indicative of a very common failure mode for developers, which is that. They sort of assume, okay, after you make the product, you then figure out how you're going to market it. And marketing is sort of a thing you layer on later on when you realize that just, like, throwing it on Twitter or Product Hunt didn't really work. When we started building Tuple, I was out there marketing it already. So, I had two co-founders, so this is a luxury I had. My two co-founders were writing code, and I was out doing stuff. I was recording podcasts. I was tweeting about things. I was making videos. I was giving conference talks. And I was getting people to hear about our product well before it was done. In fact, I was even selling it. I was taking pre-orders for annual subscriptions to the app while it was still vaporware. So, I would say, like, you basically can't start marketing too early. If you start marketing early and no one really cares, well, then you don't really have to build it probably. I would actually even go a little further and say, like, I started marketing Tuple before we had a product available. But in reality, I started marketing Tuple seven or so years before that when I started publishing things through thoughtbot. It's like when I was traveling around giving talks about Ruby, and when I was making screencasts about Vim, and when I was running Upcase, I was, over time, building an audience. And that audience was useful for thoughtbot, and it also was useful for me so that when I left, I had something like 10,000 Twitter followers or something, a few thousand people on our mailing list. But there were a lot of developers that already sort of knew me and trusted me to make fairly good things. And so, when I said, "Hey, I've made a new thing, and it's for you," I really benefited from those years of making useful content and trying to be useful on the internet. And in the early days, we had people sign up, and they would say, "I don't even really think I'm going to use this. But I've learned so much from you over the years that I want to support you, so I'm going to pay for a subscription." VICTORIA: I like your answer because I think the same thing when people ask me, like, because I am an organizer for Women Who Code, and I know all these great people from showing up for years in person months over months. And so, then people will ask, "Oh, how do I recruit more women in my company?" I'm like, "Well, you got to start showing up [laughs] now and do that for a couple of years, and then maybe people will trust you," right? So, I really like that answer. WILL: How has your relationship with Chad continued to grow since you left? Because seven years at the company is a lot. And it seems like you're still on really, really good terms, and you're still friends. And I know that doesn't happen at every company. BEN: I mean, it was tough deciding to leave. I think, like, both of us felt pretty sad about it. That was the longest I'd ever worked anywhere, and I really enjoyed the experience. So, I think it was tough on both sides, honestly. But we haven't kept in that much touch since then. I think we've emailed a handful of times here and there. We're both sociable people, and we sort of get each other. And there's a long history there. So, I think it's just easy for us to kind of drop back into a friendly vibe is sort of how I feel about it. CHAD: Yeah. And the way I explain it to people, you know, when you're leading a company, which Ben and I both are, you put a lot of energy into that and to the people who are on that team. If you're doing things right, there's not really hard feelings when someone leaves. But you need to put in a lot of effort to keep in touch with people outside of the company and a lot of energy. And, to be honest, I don't necessarily do as good a job with that as I would like because it's a little bit higher priority to maintain relationships with them, the people who are still at thoughtbot and who are joining. BEN: What you're saying is I'm dead to you [laughter]. That's CEO, for you're dead to me. CHAD: No. It's just...no hard feelings. BEN: Totally. CHAD: I think one of the things that has been great about the show over the years is that we haven't been afraid to change the format, which I think has been important to keeping it going. So, there is sort of; in fact, the website now is organized into seasons. And I went back and re-categorized all the episodes into seasons. And when the seasons were made up of, like, sort of the format of the show or particular hosts...when we started, it was just an interview show, and it was largely technical topics. And then we started The Bike Shed, and the technical topics sort of moved over there. But it also went with your interests more under the product and business side. Then you started working on products at thoughtbot, so it started to go even more in that. And I think Chris joined you on the show, and that was sort of all about those topics. BEN: Yeah, that makes sense. I think if you don't let the hosts kind of follow their interests, they're going to probably burn out on the thing. It's not fun to force yourself, I think, to record a podcast. CHAD: Yeah. And then when you left, you know, I took over hosting and hosted by myself for a while, went back to the interview format, but then was joined by Lindsey for a little while. We experimented with a few different things: one, interviews, but then we did a whole, just under a year, where we followed along with three companies. And each month, we would have an interview episode where we talked to them, all three companies, about the same topic. And then, we also did an episode with just Lindsey and I talking about that topic and about what we learned from the startup companies that we were following along with for the year. And now we're back to interview freeform, different guests, different topics. It seems like we're going to stick with that for a little while. But, obviously, as Will and Victoria have said, like, we'll probably change it again in some way, you know, a year, two years, three years from now. VICTORIA: Yeah, and I'm definitely bringing my interest around DevOps and platform engineering, so you'll see more guests who have that focus in their background. And with that, sometimes my interview style is more; how do I ask a question that I can't read from your developer docs and that I might not understand the answer to? [laughs] That's kind of where I like to go with it. So yeah, I'm really excited about...it's probably one of my favorite parts of my job here at thoughtbot because I get to meet so many interesting people. And, hopefully, that's interesting to everyone else [laughs] and our guests, yeah. BEN: Totally. Well, I dramatically underestimated how awesome it would be to meet all kinds of cool people in the industry when I started the podcast. I didn't truly connect in my head, like, wait a second, if I have a 45-minute conversation with, like, a lot of prominent, awesome people in our field, that's going to be really interesting and useful for me. So, I think, yeah, it's nice to be in the hosting seat. VICTORIA: And it's so surprising how I'll meet someone at a conference, and I'll invite them onto the podcast. And the way it winds up is that whatever we're talking about on the show is directly relevant to what I'm working on or a problem that I have. It's been incredible. And I really appreciate you for coming back for our 500th Episode here. CHAD: Ben, thanks very much again for joining us, and congratulations on all the success with Tuple. And I wish you the best. BEN: Thank you so much. Thanks for being a continuing customer. I really appreciate it. CHAD: Next, we caught up with Chris Toomey, who had a run as co-host of the show with Ben throughout 2016. CHRIS: Hi there. Thanks for having me. So, we're talking with all of the past hosts. I know you joined the show, and you were on it with Ben. And then you moved over to The Bike Shed, right? CHRIS: Yeah. So, I had co-hosted with Ben for about six months. And then I think I was transitioning off of Upcase, and so that ended sort of the Giant Robots “let's talk about business” podcast tour for me. And then, I went back to consulting for a while. And, at some point, after Derek Prior had left, I took over as the host of The Bike Shed. So, I think there was probably, like, a year and a half, two-year gap in between the various hostings. CHAD: Are you doing any podcasting now? CHRIS: I'm not, and I miss it. It was a lot of fun. It was, I think, an ideal medium for me. I'm not as good at writing. I tend to over-edit and overthink. But when you get me on a podcast, I just start to say what's in my head, and I tend to not hate it after the fact. So [chuckles], that combination I found to be somewhat perfect for me. But yeah, lacking that in my current day-to-day. CHAD: Well, what's been taking up your time since you left? CHRIS: I had decided it was time to sort of go exploring, try and maybe join a startup, that sort of thing. I was sort of called in that direction. So, just after I left thoughtbot, I did a little bit of freelancing, but that was mostly to sort of keep the lights on and start to connect with folks and see if there might be an opportunity out there. I was able to connect with a former thoughtbot client, Sam Zimmerman, who was looking to start something as well. And so, we put our act together and formed a company called Sagewell, which was trying to build a digital financial platform for seniors, which is a whole bunch of different complicated things to try and string together. So, that was a wonderful experience. I was CTO of that organization. And I think that ran for about two and a half years. Unfortunately, Sagewell couldn't quite find the right sort of sticking point and, unfortunately, shut down a little bit earlier in this year. But that was, I would say, the lion's share of what I have done since leaving thoughtbot, really wonderful experience, got to learn a ton about all of the different aspects of building a startup. And I think somewhat pointedly learned that, like, it's messy, but I think I do like this startup world. So, since leaving Sagewell, I've now joined a company called August Health, which has a couple of ex-thoughtboters there as well. And August is post their Series A. They're a little bit further along in their journey. So, it was sort of a nice continuation of the startup experience, getting to see a company a little bit further on but still with lots of the good type of problems, lots of code to write, lots of product to build. So, excited to be joining them. And yeah, that's mostly what's taking up my time these days. CHAD: So, I know at Sagewell, you made a lot of technical architecture, team decisions. It was Rails in the backend, Svelte in the frontend, if I'm not mistaken. CHRIS: Yep, that's correct. CHAD: You know, hindsight is always 2020. Is there anything you learned along the way, or given how things ended up, that you would do differently? CHRIS: Sure. I was really happy with the tech stack that we were able to put together. Svelte was probably the most out there of the choices, I would say, but even that, it was sort of relegated to the frontend. And so, it was a little bit novel for folks coming into the codebase. Most folks had worked in React before but didn't know Svelte. They were able to pick it up pretty quickly. But Inertia.js was actually the core sort of architecture of the app, sort of connected the frontend and the backend, and really allowed us to move incredibly quickly. And I was very, very happy with that decision. We even ended up building our mobile applications, both for iOS and Android. So, we had native apps in both of the stores, but the apps were basically wrappers around the Rails application with a technology similar to Turbolinks native–if folks are familiar with that so, sort of a WebView layer but with some native interactions where you want. And so, like, we introduced a native login screen on both platforms so that we could do biometric login and that sort of thing. But at the end of the day, most of the screens in the app didn't need to be differentiated between a truly native mobile app and what like, mobile WebView would look like. So, we leaned into that. And it was incredible just how much we were able to do with that stack and how quickly we were able to move, and also how confidently we were able to move, which was really a nice thing. Having the deep integration between the backend and the frontend really allowed a very small team to get a lot done in a short time. CHAD: Does that code live on in any capacity? CHRIS: No. CHAD: Oh. How does that make you feel? [chuckles] CHRIS: It makes me feel very sad, I will say. That said, I mean, at the end of the day, code is in service of a business. And so, like, the code...there are, I think, probably a couple of things that we might be able to extract and share. There were some interesting...we did some weird stuff with the serializers and some, like, TypeScript type generation on the frontend that was somewhat novel. But at the end of the day, you know, code is in service of a business, and, unfortunately, the business is not continuing on. So, the code in the abstract is...it's more, you know, the journey that we had along the way and the friends we made and whatnot. But I think, for me, sort of the learnings of I really appreciate this architecture and will absolutely bring it to any new projects that I'm building from, you know, greenfield moving forward. VICTORIA: I'm curious what it was like to go from being a consultant to being a big player in a startup and being responsible for the business and the technology. How did that feel for you? CHRIS: I would say somewhat natural. I think the consulting experience really lent well to trying to think about not just the technical ramifications but, you know, what's the business impact? How do we structure a backlog and communicate about what features we want to build in what order? How do we, you know, scope a minimal MVP? All those sorts of things were, I think, really useful in allowing me to sort of help shape the direction of the company and be as productive of an engineering team as we could be. CHAD: A lot of the projects you worked on at thoughtbot were if not for startups, helping to launch new products. And then, a lot of the work you did at thoughtbot, too, was on Upcase, which was very much building a business. CHRIS: Yes. I definitely find myself drawn in that direction, and part of like, as I mentioned, I seem to be inclined towards this startup world. And I think it's that, like, the intersection between tech and business is sort of my sweet spot. I work with a lot of developers who are really interested in getting sort of deeper into the technical layers, or Docker and Kubernetes and orchestration. And I always find myself a little bit resistant to those. I'm like, I mean, whatever. Let's just...let's get something out there so that we can get users on it. And I am so drawn to that side, you know, you need both types of developers critically. I definitely find myself drawn to that business side a little bit more than many of the folks that I work with, and helping to bridge that gap and communicate about requirements and all those sort of things. So, definitely, the experience as a consultant really informed that and helped me have sort of a vocabulary and a comfort in those sort of conversations. WILL: How did Upcase come about? Because I know I've talked to numerous people who have gone through Upcase. I actually went through it, and I learned a ton. So, how did that come about? CHRIS: I think that was a dream in Ben Orenstein's eye. It started as thoughtbot Learn many, many years ago. There was a handful of workshops that had been recorded. And so, there were the video recordings of those workshops that thoughtbot used to provide in person. Ben collected those together and made them sort of an offering on the internet. I think Chad, you, and I were on some podcast episode where you sort of talked about the pricing models over time and how that went from, like, a high dollar one-time download to, like, $99 a month to $29 a month, and now Upcase is free. And so, it sort of went on this long journey. But it was an interesting exploration of building a content business of sort of really leaning into the thoughtbot ideal of sharing as much information as possible, and took a couple of different shapes over time. There was the weekly iterations of the video series that would come out each week, as well as the, like, longer format trails, and eventually some exercises and whatnot, but very much an organic sort of evolving thing that started as just a handful of videos and then became much more of a complete platform. I think I hit the high points there. But, Chad, does that all sound accurate to you? CHAD: Yeah, I led the transition from our workshops to Learn, which brought everything together. And then, I stepped away as product manager, and Ben took it the next step to Upcase and really productized it into a SaaS sort of monthly recurring billing model and took it over from there. But it still exists, and a lot of the stuff there is still really good [laughs]. CHRIS: Yeah, I remain deeply proud of lots of the videos on that platform. And I'm very glad that they are still out there, and I can point folks at them. VICTORIA: I love that idea that you said about trying to get as much content out there as possible or, like, really overcommunicate. I'm curious if that's also stayed with you as you've moved on to startups, about just trying to get that influence over, like, what you're doing and how you're promoting your work continues. CHRIS: I will say one of the experiences that really sticks with me is I had followed thoughtbot for a while before I actually joined. So, I was reading the blog, and I was listening to the podcasts and was really informing a lot of how I thought about building software. And I was so excited when I joined thoughtbot to, like, finally see behind the curtain and see, like, okay, so, what are the insider secrets? And I was equal parts let down...actually, not equal parts. I was a little bit let down but then also sort of invigorated to see, like, no, no, it's all out there. It's like, the blog and the open-source repos and those sort of...that really is the documentation of how thoughtbot thinks about and builds software. So, that was really foundational for me. But at the same time, I also saw sort of the complexity of it and how much effort goes into it, you know, investment time Fridays, and those sort of things. Like, a thoughtbot blog post is not a trivial thing to put up into the world. So many different people were collaborating and working on it. And so, I've simultaneously loved the sharing, and where sharing makes sense, I've tried to do that. But I also recognize the deep cost. And I think for thoughtbot, it's always made sense because it's been such a great mechanism for getting the thoughtbot name out there and for getting clients and for hiring developers. At startups, it becomes a really interesting trade-off of, should we be allocating time to building up sort of a brand in the name and getting ourselves, you know, getting information out there? Versus, should we be just focusing on the work at hand? And most organizations that I've worked with have bias towards certainly less sharing than thoughtbot, but just not much at all. Often, I'll see folks like, "Hey, maybe we should start a blog." And I'm like, "Okay, let's just talk about how much effort that [laughs] actually looks like." And I wonder if I'm actually overcorrected on that, having seen, you know, the high bar that thoughtbot set. CHAD: I think it's a struggle. This is one of my [laughs] hot topics or spiels that I can go on. You know, in most other companies, that kind of thing only helps...it only helps in hiring or the people being fulfilled in the work. But at most companies, your product is not about that; that's not what your business is. So, having a more fulfilled engineering team who is easier to hire—don't get me wrong, there are advantages to that—but it doesn't also help with your sales. CHRIS: Yes. CHAD: And at thoughtbot, our business is totally aligned with the people and what we do as designers and developers. And so, when we improve one, we improve the other, and that's why we can make it work. That is marketing for the product that we actually sell, and that's not the case at a SaaS software company. CHRIS: Yes, yeah, definitely. That resonates strongly. I will say, though, on the hiring side, hiring at thoughtbot was always...there was...I won't say a cheat code, but just if someone were to come into the hiring process and they're like, "Oh yeah, I've read the blog. I listen to the podcast," this and that, immediately, you were able to skip so much further into the conversation and be like, "Okay, what do you agree with? What do you disagree with? Like, let's talk." But there's so much. Because thoughtbot put so much out there, it was easy to say, like, "Hey, this is who we are. Do you like that? Is that your vibe?" Whereas most engineering organizations don't have that. And so, you have to try and, like, build that in the context of, you know, a couple of hour conversations in an interview, and it's just so much harder to do. So, again, I've leaned in the direction of not going anywhere near thoughtbot's level of sharing. But the downside when you are hiring, you're like, oh, this is going to be trickier. CHAD: Yeah. One of the moments that stands out in my mind, and maybe I've told this story before on the podcast, but I'll tell it again. When we opened the New York studio, it was really fast growing and was doing a lot of hiring. And one of the people who had just joined the company a couple of weeks before was doing an interview and rejected the person was able to write an articulate reason why. But it all boiled down to this person is, you know, not a fit for thoughtbot. Based on what they were able to describe, I felt very confident with the ability or with the fact that they were able to make that call, even though they had been here only a couple of weeks, because they joined knowing who we were, and what we stand for, and what our culture and our values are, and the way that we do things, and all that kind of thing. And so, yeah, that's definitely a huge benefit to us. VICTORIA: I've certainly enjoyed that as well, as someone who hires developers here and also in meeting new companies and organizations when they already know thoughtbot. That's really nice to have that reputation there, coming from my background—some really more scrappier startup kind of consulting agencies. But, you know, I wanted to talk a little bit more about your podcasting experience while you're here. So, I know you were on both The Bike Shed and Giant Robots. Which is the better podcast? [laughter] So, what's your...do you have, like, a favorite episode or favorite moment, or maybe, like, a little anecdote you can share from hosting? CHRIS: Well, I guess there's, like, three different eras for me in the podcasting. So, there's Giant Robots with Ben talking more about business stuff, and I think that was really useful. I think it was more of a forcing function on me because I sort of...Both Ben and I were coming on; we were giving honest, transparent summaries of our, like, MRR and stats and how things were growing, and acted as sort of an accountability backstop, which was super useful but also just kind of nerve-wracking. Then, when I joined the Bike Shed, the interviewing sequence that I did each week was just a new person that I was chatting with. And I sort of had to ramp them up on, hey, here's a quick summary on how to think about podcasting. Don't worry, it'll be great. Everybody have fun. But I was finding each of the guests. I was sort of finding a topic to talk about with them. So, that ended up being a lot more work. And then, the last three years chatting with Steph that was by far my favorite. There was just such a natural back-and-forth. It really was just capturing the conversations of two developers at thoughtbot and the questions we would ask each other as we hit something complicated in a piece of code or, "Oh, I saw this, you know, article about a new open-source repository. What do you think about that?" It was so much easier, so much more natural, and, frankly, a lot of fun to do that. And, two, I actually do have an answer to the favorite podcast episode, which is the first episode that Steph was ever on. It was before she actually joined as a co-host. But it was called “What I Believe About Software.” And it was just this really great, deep conversation about how we think about software. And a lot of it is very much, like, thoughtbot ideals, I would say. But yeah, Steph came in and just brought the heat in that first episode, and I remember just how enjoyable that experience was. And I was like, all right, let's see if I can get her to hang out a little bit more, and, thankfully, she was happy to join. WILL: What was your favorite position, I guess you can call it? Because you say you like the mixture of business and, you know, development. So, you've been in leadership as development director, CTO. You've been a web developer. You've been over content, like, with Upcase. What was your favorite position [inaudible 16:43] you were doing, and why was it your favorite? CHRIS: The development director role feels like sort of a cheating answer, but I think that would be my answer because it contained a handful of things within it. Like, as development director, I was still working on client projects three days a week. And then, one day a week was sort of allocated to the manager-type tasks, or having one-on-ones with my team sort of helping to think about strategy and whatnot. And then, ideally, still getting some amount of investment time, although the relative amounts of those always flexed a little bit. Because that one sort of encompassed different facets, I think that's going to be my answer. And I think, like, some of what drew me to consulting in the first place and kept me in that line of work for seven years was the variety, you know, different clients, as well as, even within thoughtbot, different modes of working in podcasts or video. Or there was a bootcamp that I taught, a session of Metis, which that was a whole other experience. And so, getting that variety was really interesting. And I think as sort of a tricky answer to your question, the development director role as a singular thing contained a multitude, and so I think that was the one that would stand out to me. It's also the most, you know, the one that I ended on, so [laughs] it might just be recency bias, but yeah. VICTORIA: Oh, I love that. Is there anything else that you would like to promote on the podcast today? CHRIS: No, although as you ask the question, I feel like I should, I don't know, make some things to promote, get back into some, I don't know, content generation or something like that. But for now, no. I'm, you know, diving into the startup life, and it's a wonderful and engrossing way to do work, but it does definitely take up a lot of my headspace. So, it's an interesting trade-off. But right now, I don't know; if folks are online and they want to say hi, most of my contact information is readily available. So, I would love to say hi to folks, anyone that listened in the past or, you know, has any thoughts in the now. Would love to connect with folks. But otherwise, yeah, thank you so much for having me on. CHAD: In 2017, I took over from Ben as solo host of the show but was joined by Lindsey Christainson as cohost in 2019. After some time away from thoughtbot, Lindsey is back with us and we sat down to catch up with her. VICTORIA: Why don't you tell me about your current role with thoughtbot? LINDSEY: I am currently supporting marketing and business development at thoughtbot, as well as working as a marketing consultant for thoughtbot clients. VICTORIA: Great. And I understand that you had worked with thoughtbot many years ago, and that's when you also came on as a co-host of Giant Robots. Is that right? LINDSEY: Yeah, a couple of years ago. I left thoughtbot in spring of 2021. And I forget how long my stint was as a co-host of Giant Robots, but over a year, maybe a year and a half, two years? CHAD: Yeah, I think that's right. I think you started in 2019. LINDSEY: Yeah. Yeah, that sounds right. And Chad and I were co-hosts, I think, similar to the setup today in which sometimes we hosted together, and sometimes we were conducting interviews separately. CHAD: And then we sort of introduced a second season, where we followed along with a batch of companies over the course of the entire season. And that was fun, and we learned a lot. And it was nice to have consistent guests. LINDSEY: Yeah, that was a lot of fun. I really liked that format. I don't know; they almost were, like, more than guests at that point. They were just like other co-hosts [laughs] that we could rely on week in, week out to check in with them as they're working on early-stage companies. So, every time we checked in with them, they usually had some new, exciting developments. WILL: I really like that idea. How did y'all come up with that? CHAD: I'm not sure. I think a few years before I had taken over hosting of the show, and I forget...my memory maybe is that I went to Lindsey and said, "You know, let's do something different." But I'm not sure. Does that match your memory, Lindsey? LINDSEY: Yeah, I think there were two main drivers; one was I think you were feeling like you were having similar conversations in the interviews every time. Like, you couldn't get to a certain depth because every time you were interviewing someone, you were doing, like, the, "Well, tell me your founding story." And, you know, how did you raise funding? It kind of got a little bit repetitive. And then, on the side, the few we had done together, I think we both really enjoyed. So, we were thinking, like, what's the format in which the two of us could co-host together more regularly? Because I'm a pleasure to talk to [laughter]. I think you were like, I need to talk to Lindsey more. [inaudible 3:13] VICTORIA: What is your hosting style? How would you describe your approach to hosting a podcast? LINDSEY: I mean, obviously, it's a podcast about products and business. I think as a marketer, I am, you know, drawn a lot to the marketing side, so tending to ask questions around go-to-market audience, users. That's always just, like, a particular interest of mine. But then also, like, the feelings. I love asking about the feelings of things, you know, how did it feel when you started? How did it feel when you made this tough decision? So, that's another thing I think I noticed in my interviews is asking about some of the emotions behind business decisions. VICTORIA: And I like hearing about how people felt at the time and then how they felt afterwards [laughs]. And, like, how people around them supported each other and that type of thing. That's really fun. I'm curious, too, from your marketing background and having to do with podcasts like; some founders, I think, get the advice to just start a podcast to start building a community. But I'm curious on your thoughts about, like, how does podcasting really play into, like, business and marketing development for products? LINDSEY: Oh yeah. It's become definitely, like, a standard channel in B2B these days. I feel like that it's pretty typical for a company to have a podcast as one way that they engage their audience and their users. In marketing, you're really vying for people's attention, and people's attention span is getting shorter and shorter. So, like, if you have an ad or a blog, you're getting, like, seconds, maybe minutes of someone's attention. And whereas something like a podcast offers a unique channel to have someone's undivided attention for, you know, 30 minutes, an hour, and if you're lucky, you know, checking back in week over week. So, it became a really popular method. That said, I think you're probably also seeing the market get saturated [laughs] with podcasts now, so some diminishing returns. And, you know, as always, kind of looking for, you know, what's the next way? What's the next thing that people are interested in in ways to capture their attention? CHAD: What is the next thing? LINDSEY: I don't know, back to micro-content? TikTok videos -- CHAD: Yeah, I was going to say TikTok, yeah. LINDSEY: Yeah, you know, 10-30 seconds, what can you communicate? VICTORIA: I see people live streaming on Twitch a lot for coding and developer products. LINDSEY: Yeah, I think we've seen some of that, too. We've been experimenting more at thoughtbot with live streaming as well. It's another interesting mechanism. But yeah, I don't know, it's interesting. It's another form of, like, community and how people engage with their communities. So, it's always evolving. It's always evolving, and sometimes it's not. Sometimes, people just do want to get in a room together, too, which is always interesting. WILL: What has been, in your experience, the good the bad? Like, how do you feel about the way that it has shifted? Because I think you started in, like, 2000, like, kind of earlier 2000, 2005, something around there. And it was totally different than now like you're saying. Because I feel like, you know, Channel 5 30-second ad, you know, with some of the marketing depending on what you're doing, to now to where you're, like, you're paying influencers to advertise your product, or you're doing an ad. Or it's more social media-driven and tech-driven. What has been your opinion and feelings on the way that it has grown and evolved? LINDSEY: Marketing, in general, yeah, I graduated college in 2005 and started my marketing career. And yeah, you could, like, actually get people to click on banner ads back then, which was pretty [inaudible 07:14] [laughs]. WILL: I forgot about banner ads [laughs]. LINDSEY: I don't know, yeah. I don't know. In order for myself to not just get too frustrated, I think I've got to, like, view it as a game kind of. What new things are we going to try? You know, what do we see work? But it can really depend. And I've always been in B2B side of things. And consumer, I'm sure, has its own kind of evolution around how people engage and how they consume content and byproducts. But in B2B, you know, it can really depend on industry too. You know, I'm working with a client right now in the senior living space, and they're really big in in-person conferences. So, that's how people consume, get a lot of their information and, make connections, and learn about new products. So, it's been interesting to work in an industry that what might be considered, like, a little bit more old-school channels are still effective. And then just thinking about how you weave in the new channels with the existing ones without ignoring them. They might get information in conferences, but they're still a modern human who will then, you know, search online to learn more, for example. VICTORIA: It reminds me of a phrase I like to say, which is that, like, technology never dies; you just have more of it. There's just more different options and more different ways to do things. And some people are always, you know, sometimes you have to be flexible and do everything. CHAD: So, tell us more about what you did in between...after you left thoughtbot, what did you do? LINDSEY: I was heading up B2B marketing for a company called Flywire, which is headquartered in Boston but is a global company now. And they were just kind of starting their B2B business unit, which, as I mentioned, B2B is my personal specialty. I had been connected to their CMO through the Boston startup community. And yeah, I was helping them kind of launch their go-to-market for B2B. The industries they were in before...they got their start in higher education and then expanded in healthcare and found a niche in luxury travel, and then we were figuring out the B2B piece. But yeah, I was there for about a year and a half. They actually went public the second week I was there, which was an interesting [laughs] experience. I knew they were, like, on that journey, but it was kind of funny to be there the second week, and people were, like, "Congrats." And I was like, "Well, I definitely didn't have anything to do with it because I just finished my onboarding, but thank you," [laughs]. CHAD: One of the things that really impressed me when you joined thoughtbot was the way in which you learned about who we were and really internalized that in a way where you were then able to pretty meaningfully understand our market, our positioning in the market, and come up with new strategies for us. I assume that's something you're good at in general [laughs]. How do you approach it? How did you approach it when you joined Flywire, for example? And how was it the same or different than how you approached thoughtbot? LINDSEY: Ooh, yeah, that's a good question. And I appreciate that comment because it's difficult. But I think, yeah, with any new organization that I'm joining, you know, I think starting out with your kind of mini-listening tour of your key stakeholders across, you know, the different departmental focuses to get a sense of, what are the challenges? What are the opportunities? It's actually like, you know, it's the SWOT analysis, kind of trying to fill in your own mind map of a SWOT analysis of where the company is. What are the major hurdles you're facing? Where are people trying to go? What have they tried that's worked? What have they tried that's failed? But then, like, I think for the culture component, I think a part of that maybe is, like, feel, and maybe something that I do have a knack for. Again, maybe this is, like, you know, emotional intelligence quotient, where it's like, you know, but it's the company, you know, who is this company? What is important to them? How do they work and go about things? I know thoughtbot is certainly very unique, I think, in that arena in terms of being, like, a really value-driven company, and one where especially, like, marketing and business work is, like, distributed across teams in a really interesting way. You know, I'm sure the fact that it fascinated me and was something I could get passionate and get behind was something that also helped me understand it quickly. CHAD: I was excited that...or it was sort of a coincidence because I had reached out to you and without realizing that you had left Flywire. And Kelly, who had been doing a combined sales and marketing role, was going on parental leave. And so, it was fortuitous [laughs] that you were able to come back and help us and provide coverage, like, Kelly was out. LINDSEY: Yeah, it definitely felt like stars aligned moment, which, you know, I'm pretty woo-woo, so I believe in [laughter]...I believe in that kind of thing. You know, yeah, it was wild. It really did feel like your email came out of nowhere. And, you know, I mentioned it, obviously, to my partner and my friends. And they were like, "Oh, he definitely knows, like, that you left your last company." And I'm like, "I actually don't think he does [laughter]. I actually don't think he does." Yeah, and then we started chatting about me coming back to help. And it was great. thoughtbot makes it hard to work anywhere else [laughs]. So, I was happy to come back. I missed the team. CHAD: And one of the exciting things, and you've mentioned it, is you're not just doing marketing for thoughtbot now. We have started to offer your services to our clients. LINDSEY: Yeah, I'm super excited about this. And it's something I'd started thinking about. I had decided to take some time off between Flywire and my next thing and had started thinking about doing marketing, consulting. And as I'm doing that, I'm thinking a lot about how thoughtbot does consulting and, you know, wanting to emulate something like that. So, I started back up at thoughtbot. That wasn't part of the plan. I was just going to, you know, fill in for Kelly and help with marketing things. But then, you know, a good opportunity arose to work on a client, and I was really excited. When, you know, Chad, you and I chatted through it, we came to the conclusion that this was something worth exploring under the, you know, thoughtbot umbrella. And it's been a really great experience so far. And we now have brought on another client now. And if you're listening and need early-stage B2B marketing support, reach out to lindsey@thoughtbot.com. CHAD: Definitely. And Lindsey is pretty good, so you're going to like it [laughs]. LINDSEY: Yeah, you're going to like the way you look. WILL: Yeah, definitely. Because I can even feel your presence here, you know, coming back. Because even like, you know, the market where it's at now and some of the suggestions that, you know, you've been helping us. For example, like, I do a lot of React Native, and you're like, "Hey, you know, blog posts have done a lot of traction, you know, let's get some more blog posts out in the market to help with the traffic and everything." So, the question I have with that is, like, thank you for even suggesting that because it's, like, those little things that you don't even think about. It's like, oh yeah, blog posts, that's an easy transition to help the market, clients, things like that. But with the market the way it is, what has been your experience working during this time with the market? I don't know if you want to call it struggling, but whatever you want to call it that, it's doing [laughs]. LINDSEY: Yeah, I mean, the economy is difficult now. We also went through a really tough spot when I was here last time. During COVID, you know, we faced a major company challenge. And, I mean, I'll let Chad speak to it, but I would imagine it's probably one of the bigger, like, economic inflection points that you faced. Would you say that? CHAD: Yeah, definitely. The thing about it that made it worse was how quickly it happened. You know, it was something that you didn't see coming, and then, you know, about 40% of our business went away in a single month. That's the kind of thing that was a real shock to the system. I think the thing that made it difficult, too, was then the aspects of COVID, where we were no longer able to go into our studios. We were all working remotely. We were isolated from each other. And so, that made executing on what needed to be done in order to make the company survive additionally challenging. LINDSEY: Yeah, so I think, like, going through that experience, also, and seeing how the team and the leadership team rallied together to get through it. And then, you know, ultimately, I think 2021 and 2022 have, like, really good years. That was a really positive experience. And something I'll definitely take with me for a while is just, like, keeping a cool head and just knowing you have, like, really smart, talented folks with you working on it and that you can get through it. And just, like, doing some, I mean, we relied on what we did best, which was, like, design thinking, using design exercise to think about, like, how we might re-organize the company, or what other services we might try launching, or how might we re-package, you know, larger services into smaller more palatable services when people have, like, kind of tighter purse strings. So, that was, like, a great educational experience, and I think something we just continue to do now: be open to change, be open to changing how we package services, what clients we go after, and coming at it with, like, an agile, experimental mindset and try to find out what works. VICTORIA: I really appreciate that. And it aligns now with the new service we've developed around you and the marketing that you provide. And I'm curious because I've had founders come up to me who say they need help with marketing or they need to, like, figure out their marketing plans. So, say you've met a founder who has this question, like, what questions do you ask them to kind of narrow down what it is they really need and really want to get out of a marketing plan? LINDSEY: I've been thinking about this a lot recently. And, like, obviously, I see other marketing leaders in the market. Marketers like to talk about what they do on LinkedIn [laughs], so I get to...I read a lot about different people's approaches to this. And some people kind of go in and are like, okay, this is what you need. This is how we're going to do it, and they start executing on it. And I really do take a very collaborative approach with founders. I think they're, especially in early stage, they're your most important asset in a way, and a lot of their intuition around the market and the business, you know, it's gotten them to where they're at. And so, I think starting from the point of, like, taking what they view as priorities or challenges, and then helping them better explore them or understand them with my own marketing experience and expertise, to

The Bike Shed
406: Working Solo

The Bike Shed

Play Episode Listen Later Nov 14, 2023 32:27


Joël got to do some pretty fancy single sign-on work. And when it came time to commit, he documented the ridiculous number of redirects to give people a sense of what was happening. Stephanie has been exploring Rails callbacks and Ruby debugging tools, using methods like save_callbacks and Kernel.caller, and creating a function call graph to better understand and manage complex code dependencies. Stephanie is also engaged in an independent project and seeking strategies to navigate the challenges of solo work. She and Joël explore how to find external support and combat isolation, consider ways to stimulate creativity, and obtain feedback on her work without a direct team. Additionally, they ponder succession planning to ensure project continuity after her involvement ends. They also reflect on the unique benefits of solo work, such as personal growth and flexibility. Stephanie's focus is on balancing the demands of working independently while maintaining a connected and sustainable professional approach. ASCII Sequence Diagram Creator (https://textart.io/sequence) Callback debugging methods (https://andycroll.com/ruby/find-list-debug-active-record-callbacks-in-the-console/) Kernel.caller (https://ruby-doc.org/core-3.0.2/Kernel.html#method-i-caller) Method.source_location (https://ruby-doc.org/core-3.0.2/Method.html#method-i-source_location) Building web apps by your lonesome by Jeremy Smith (https://www.youtube.com/watch?v=Rr871vmV4YM) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. JOËL: And I'm Joël Quenneville. And together, we're here to share a bit of what we've learned along the way. STEPHANIE: So, Joël, what's new in your world? JOËL: I got to do something really fun this week, where I was doing some pretty fancy single sign-on work. And when it came time to commit, I wanted to document the kind of ridiculous number of redirects that happen and give people a sense of what was going on. And for my own self, what I had been doing is, I had done a sequence diagram that sort of shows, like, three different services that are all talking to each other and where they redirect to each other as they all go through the sequence to sign someone in. And I was like, how could I embed that in the commit message? Because I think it would be really useful context for someone trying to get an overview of what this commit is doing. And the answer, for me, was, can I get this sequence diagram in ASCII form somewhere? And I found a website that allows me to do this in ASCII art. It's the textart.io/sequence. And that allows me to create a sequence diagram that gets generated as ASCII art. I can copy-paste that into a commit message. And now anybody else who is like, "What is it that Joël is trying to do here?" can look at that and be like, "Oh, oh okay, so, we got these, like, four different places that are all talking to each other in this order. Now I see what's happening." STEPHANIE: That's super neat. I love the idea of having it directly in your commit message just because, you know, you don't have to go and find a graph elsewhere if you want to understand what's going on. It's right there for you, for future commit explorers [laughs] trying to understand what was going on in this snippet of time. JOËL: I try as much as possible to include those sorts of things directly in the commit message because you never know who's reading the commit. They might not have access to some sort of linked resource. So, if I were like, "Hey, go to our wiki and see this link," like, sure, that would be helpful, but maybe the person reading it doesn't have access to the wiki. Maybe they do have access, but they're not on the internet right now, and so they don't have access to the wiki. Maybe the wiki no longer exists, and that's a dead link. So, as much as possible, I try to embed context directly in my commit messages. STEPHANIE: That's really cool. And just another shout out to ASCII art, you know [laughs], persevering through all the times with our fancy tools. It's still going strong [laughs]. JOËL: Something about text, right? STEPHANIE: Exactly. I actually also have a diagram graph thing to share about what's new in my world that is kind of in a similar vein. Another thoughtboter and former guest on the show, Sara Jackson, shared in our dev channel about this really cool mural graph that she made to figure out what was going on with callbacks because she was working on, you know, understanding the lifecycle of this model and was running into, like, a lot of complex behavior. And she linked to a really neat blog post by Andy Croll, too, that included a little snippet sharing a few callback debugging methods that are provided by ActiveRecord. So, basically, you can have your model and just call double underscore callbacks. And it returns a list of all the callbacks that are defined for that model, and I thought that was really neat. So, I played around with it and copypastad [laughs] the snippet into my Rails console to figure out what's going on with basically, like, the god object of that that I work in. And the first issue I ran into was that it was undefined because it turns out that my application was on an older [laughs] version of Rails than that method was provided on. But, there are more specific methods for the types of callbacks. So, if you are looking specifically for all the callbacks related to a save or a destroy, I think it's save underscore callbacks, right? And that was available on the Rails version I was on, which was, I think, 4. But that was a lot of fun to play around with. And then, I ended up chatting with Sara afterwards about her process for creating the diagram after, you know, getting a list of all these methods. And I actually really liked this hybrid approach she took where, you know, she automated some parts but then also manually, like, went through and stepped through the code and, like, annotated notes for the methods as she was traversing them. And, you know, sometimes I think about, like, wow, like, it would be so cool if this graph just generated automatically, but I also think there is some value to actually creating it yourself. And there's some amount of, like, mental processing that happens when you do that, as opposed to, like, looking at a thing that was just, you know, generated afterwards, I think. JOËL: Do you know what kind of graph Sara generated? Was it some kind of, like, function call graph, or was it some other way of visualizing the callbacks? STEPHANIE: I think it was a function call graph, essentially. It even kind of showed a lot of the dependencies, too, because some of the callback functions were quite complicated and then would call other classes. So, there was a lot of, I think, hidden dependencies there that were unexpected, you know, when you think you're just going to create a regular old [laughs] record. JOËL: Yeah, I've been burned by unexpected callbacks or callbacks that do things that you wouldn't want in a particular context and then creating bad data or firing off external services that you really didn't want, and that can be an unpleasant surprise. I appreciate it when the framework offers debugging tools and methods kind of built-in, so these helpers, which I was not aware of. It's really cool because they allow you to kind of introspect and understand the code that you're going through. Do you have any others like that from Rails or Ruby that you find yourself using from time to time to help better understand the code? STEPHANIE: I think one I discovered recently was Kernel.caller, which gives you the stack trace wherever you are when executing. And that was really helpful when you're not raising an exception in certain places, and you need to figure out the flow of the code. I think that was definitely a later discovery. And I'm glad to have it in my back pocket now as something I can use in any kind of Ruby code. JOËL: That can, yeah, definitely be a really useful context to have even just in, like, an interactive console. You're like, wait a minute, where's this coming from? What is the call stack right now? STEPHANIE: Do you have any debugging tools or methods that you like to use that maybe are under the radar a little bit? JOËL: One that I really appreciate that's built into Ruby is the source location method on the method object, so Ruby has a method object. And so, when you're dealing with some sort of method and, like, maybe it got generated programmatically through metaprogramming, or maybe it's coming from a gem or something like that, and you're just like, where is this define? I'm trying to find it. If you're in your editor and you're doing stuff, maybe you could run some sort of search, or maybe it has some sort of keyword lookup where you can just find the definition of what's under your cursor. But if you're in an interactive console, you can create a method object for that method name and then call dot source location on it. And it will tell you, here's where it's defined. So, very handy in the right circumstances. STEPHANIE: Awesome. That's a great tip. JOËL: Of course, one of the most effective debugging tools is having a pair, having somebody else work with you, but that's not always something that you have. And you and I were talking recently about what it's like to work solo on a project. Because you're currently on a project, you're solo, at least from the thoughtbot side of things. You're embedding with a team, with a client. Are you working on kind of, like, a solo subtask within that, or are you still kind of embedding and interacting with the other teammates on a regular basis? STEPHANIE: Yeah. So, the past couple of weeks, I am working on more of a solo initiative. The other members of my client team are kind of ramping up on some other projects for this next quarter. And since my engagement is ending soon, I'm kind of left working on some more residual tasks by myself. And this is new for me, actually. I've not really worked in a super siloed by-myself kind of way before. I usually have at least one other dev who I'm, like, kind of partnering up with on a project, or an epic, or something like that. And so, I've had a very quiet week where no one is, you know, kind of, like, reaching out to me and asking me to review their code, or kind of checking in, or, you know, asking me to check in with them. And yeah, it's just a little bit different than how I think I like to normally work. I do like to work with other people. So, this week has been interesting in terms of just kind of being a more different experience where I'm not as actively collaborating with others. JOËL: What do you think are some of the biggest challenges of being kind of a little bit out in your own world? STEPHANIE: I think the challenges for me can definitely be the isolation [laughs], and also, what kind of goes hand in hand with that is when you need help, you know, who can you turn to? There's not as much of an obvious person on your team to reach out to, especially if they're, like, involved with other work, right? And that can be kind of tough. Some of the other ones that I've been thinking about have been, you know, on one hand, like, I get to make all of the decisions that I want [laughs], but sometimes you kind of get, like, really in your own head about it. And you're not in that space of, like, evaluating different solutions that you maybe might not think of. And I've been trying to figure out how to, like, mitigate some of that risk. JOËL: What are some of the strategies that you use to try to balance, like making good decisions when you're a bit more solo? Do you try to pull in someone from another team to talk ideas through? Do you have some sort of internal framework that you use to try to figure out things on your own? What does that look like? STEPHANIE: Yeah, luckily, the feature I'm working on is not a huge project. Well, if it were, I think then I wouldn't be alone on it. But, you know, sometimes you find yourself kind of tasked with one big thing for a while, and you are responsible for from start to finish, like all of the architectural decisions to implementation. But, at least for me, the scope is a little more narrow. And so, I don't feel as much of a need to get a lot of heads together because I at least feel somewhat confident in what I'm doing [laughs]. But I have found myself being a bit more compelled to kind of just verbalize what I'm doing more frequently, even to, like, myself in Slack sometimes. It's just like, I don't know who's reading this, but I'm just going to put it out there because maybe someone will see this and jump in and say, "Oh, like, interesting. Here's some other context that I have that maybe might steer you away from that," or even validating what I have to say, right? Like, "That sounds like a good idea," or, you know, just giving me an emoji reaction [laughs] is sometimes all I need. So, either in Slack or when we give our daily sync updates, I am, I think, offering a little more details than I might if I already was working with someone who I was more in touch with in an organic way. JOËL: And I think that's really powerful because it benefits you. Sort of by having to verbalize that or type it out, you, you know, gain a little bit of self-awareness about what you're trying to do, what the struggles are. But also, it allows anybody else who has potentially helpful information to jump in. I think that's not my natural tendency. When I'm on something solo, I tend to kind of, like, zoom in and focus in on something and, like, ignore a little bit of the world around me. Like, that's almost the time when I should look at overcommunicating. So, I think most times I've been on something solo, I sort of keep relearning this lesson of, like, you know, it's really important to constantly be talking out about the things that you're doing so that other people who are in a broader orbit around you can jump in where necessary. STEPHANIE: Yeah, I think you actually kind of touched on one of the unexpected positives, at least for me. Something I wasn't expecting was how much time I would have to just be with my thoughts. You know, as I'm implementing or just in my head, I'm mulling over a problem. I have less frequent, not distractions necessarily, but interruptions. And sometimes, that has been a blessing because I am not in a spot where I have a lot of meetings right now. And so, I didn't realize how much generative thought happens when you are just kind of, like, doing your own thing for a little bit. I'm curious, for you, is that, like, a space that you enjoy being when you're working by yourself? And I guess, you know, you were saying that it's not your natural state to kind of, like, share what's going on until maybe you've fully formed an idea. JOËL: I think I often will regret not having shared out before everything is done. The times that I have done it, I've been like, that was a really positive experience; I should do that more. I think it's easy to sort of wait too long before sharing something out. And with so many things, it feels like there's only one more small task before it's done. Like, I just need to get this one test to go green, and then I can just put up a PR, and then we'll have a conversation about it. But then, oh, this other test broke, or this dependency isn't installing correctly. And before you know it, you've spent a whole day chasing down these things and still haven't talked. And so, I think if some of those things were discussed earlier, it would help both to help me feel more plugged in, but also, I think everybody else feels like they're getting a chance to participate as well. STEPHANIE: So, you mentioned, you know, obviously, there's, like, the time spent just arriving at the solution before sharing it out for feedback. But have you ever been in a position where there is no one to give you feedback and, like, not even a person to review your code? JOËL: That's really challenging. So, occasionally, if I'm working on a project, maybe it would be, like, very early-stage startup that maybe just has, like, a founder, and then I'm, like, the only technical person on the team, generally, what I'll try to do is to have some kind of review buddy within thoughtbot, so some other developer who's not staffed on my project but who has access to the code such that I can ask them to say, "Hey, can you just take a look at this and give me a code review?" That's the ideal situation. You know, some companies tend to lock things down a lot more if you're dealing with something like healthcare or something like that, where there might be some concerns around personal information, that kind of thing. But generally, in those cases, you can find somebody else within the company who will have some technical knowledge who can take a look at your code; at least, that's been my experience. STEPHANIE: Nice. I don't think I've quite been in that position before; again, I've really mostly worked within a team. But there was a conference talk I watched a little bit ago from Jeremy Smith, and it was called Building Web Apps by Your Lonesome. And he is a, like, one-man agency. And he talked about, you know, what it's like to be in that position where you pretty much don't have other people to collaborate with, to review your code. And one thing that he said that I really liked was shifting between writer and editor mode. If you are the person who has to kind of just decide when your code is good enough to merge, I like that transition between, like, okay, I just spent however many hours putting together the solution, and now I'm going to look at it with a critical eye. And sometimes I think that might require stepping away for a little bit or, like, revisiting it even the next day. That might be able to help see things that you weren't able to notice when you were in that writing mode. But I have found that distinction of roles really helpful because it does feel different when you're looking at it from those two lenses. JOËL: I've definitely done that for some, like, personal solo projects, where I'm participating in a game jam or something, and then I am the only person to review my code. And so, I will definitely, at that point, do a sort of, like, personal code review where I'll look at it. Maybe I'm doing PRs on GitHub, and I'm just merging. Maybe I'm just doing a git diff and looking at a commit in the command line on my own machine. But it is useful, even for myself, to sort of switch into that editor mode and just kind of look at everything there and say, "Is it in a good place?" Ideally, I think I do that before putting it out for a co-worker's review, so you kind of get both. But on a solo project, that has worked actually pretty well for me as well. STEPHANIE: One thing that you and I have talked about before in a different context, I think, when we have chatted about writing conference talks, is you are really great about focusing on the audience. And I was thinking about this in relation to working solo because even when you are working by yourself on a project, you're not writing the code for yourself, even though you might feel like [laughs] it in the moment. And I also kind of like the idea of asking, like, who are you building for? You know, can you ask the stakeholder or whoever has hired you, like, "Who will maintain this project in the future?" Because likely, it won't be you. Hopefully, it won't be you unless that's what you want to be doing. There's also what my friend coined the circus factor as opposed to the bus factor, which is, like, if you ran away to the circus tomorrow [laughs], you know, what is the impact that would have? And yeah, I think working solo, you know, some people might think, like, oh, that gives me free rein to just write the code exactly how I want to, how I want to read it. But I think there is something to be said about thinking about the future of who will be [inaudible 18:10] what you just happen to be working on right now. JOËL: And keep in mind that that person might be future you who might be coming back and be like, "What is going on here?" So, yeah, audience, I think, is a really important thing to keep in mind. I like to ask the question, if somebody else were looking at this code, and somebody else might be future me, what parts would they be confused by? If I was walking somebody else through the code for the first time, where would they kind of stop me through the walkthrough and be like, "Hey, why is this happening? What's the connection between these two things? I can see they're calling each other, but I don't know why." And that's where maybe you put in a comment. Maybe you find a better method or a class name to better explain what happens. Maybe you need to put more context in a commit message. There's all sorts of tools that we can use to better increase documentation. But having that pause and asking, "What will confuse someone?" is, I think, one of the more powerful techniques I do when I'm doing self-review. STEPHANIE: That's really cool. I'm glad you mentioned that, you know, it could also be future you. Because another thing that Jeremy says in this talk that I was just thinking about is the idea of optimizing for autonomy. And there's a lot to be said there because autonomy is like, yeah, like, you end up being the person who has to deal with problems [laughs], you know, if you run into something that you can't figure out, and, ideally, you'll have set yourself up for success. But I think working solo doesn't mean that you are in your own universe by yourself completely. And thinking about future, you, too, is kind of, like, part of the idea that the person in this moment writing code will change [laughs]. You'll get new information. Maybe, like, you'll find out about, like, who might be working on this in the future. And it is kind of a fine balance between making sure that you're set up to handle problems, but at the same time, maybe it's that, like, you set anyone up to be able to take it away from where you left it. JOËL: I want to take a few moments to sort of talk a little bit about what it means to be solo because I think there are sort of multiple different solo experiences that can be very different but also kind of converge on some similar themes. Maybe some of our listeners are listening to us talking and being like, "Well, I'm not at a consultancy, so this never happens to me." But you might find yourself in that position. And I think one that we mentioned was maybe you are embedded on a team, but you're kind of on a bit of a larger project where you're staffed solo. So, even though you are part of a larger team, you do feel like the initiative that you're on is siloed to you a little bit. Are there any others that you'd like to highlight? STEPHANIE: I think we also mentioned, you know, if you're a single developer working on an application because you might be the first technical hire, or a one-person agency, or something, that is different still, right? Because then your community is not even your company, but you have to kind of seek out external communities on social networks, or Slack groups, or whatever. I've also really been interested in the idea of developers kind of being able to be rotated with some kind of frequency where you don't end up being the one person who knows everything about a system and kind of becomes this dependency, right? But how can we make projects so, like, well functioning that, like, anyone can step in to do some work and then move on? If that's just for a couple of weeks, for a couple of months. Do you have any thoughts about working solo in that kind of situation where you're just stepping into something, maybe even to help someone out who's, you know, on vacation, or kind of had to take an unexpected leave? JOËL: Yeah, that can be challenging. And I think, ideally, as a team, if you want to make that easier, you have to set up some things both on a, like, social level and on a tactical level, so all the classic code quality things that you want in place, well structured, encapsulated code, good documentation, things like that. To a certain extent, even breaking down tasks into smaller sort of self-sufficient stories. I talk a lot about working incrementally. But it's a lot easier to say, "Hey, we've got this larger story. It was broken down into 20 smaller pieces that can all be shipped independently, and a colleague got three of them done and then had to go on leave for some reason. Can you step in and do stories 4 through 20?" As opposed to, "Hey, we have this big, amorphous story, and your colleague did some work, and it kind of is done. There's a branch with some code on it. They left a few notes or maybe sent us an email. But they had to go on leave unexpectedly. Can you figure it out and get it done?" The second scenario is going to be much more challenging. STEPHANIE: Yeah, I was just thinking about basically what you described, right? Where you might be working on your own, and you're like, well, I have this one ticket, and it's capturing everything, and I know all that's going on [laughs], even though it's not quite documented in the ticket. But it's, you know, maybe on my branch, or in my head, or, worst of all, on my local machine [laughs] without being pushed up. JOËL: I think maybe that's an anti-pattern of working solo, right? A lot of these disciplines that you build when you're working in a team, such as breaking up tickets into smaller pieces, it's easy to kind of get a little bit lazy with them when you're working solo and let your tickets inflate a little bit, or just have stuff thrown together in branches on your local machine, which then makes it harder if somebody does need to come in to either collaborate with you or take over from you if you ever need to step aside. STEPHANIE: Right. I have definitely seen some people, even just for their personal projects, use, like, a Trello board or some other project management tool. And I think that's really neat because then, you know, obviously, it's maybe just for their own, like, self-organization needs, but it's, like, that recognition that it's still a complicated project. And just because they're working by themselves doesn't mean that they can't utilize a tool for project management that is meant for teams or not even teams [laughs], you know, people use them for their own personal stuff all the time. But I really like that you can choose different levels of how much you're documenting for your future self or for anyone else. You had mentioned earlier kind of the difference between opening up a PR for you...you have to merge your branch into main or whatever versus just committing to main. And that distinction might seem, like, if you were just working on a personal project, like, oh, you know, why go through the extra step? But that can be really valuable in terms of just seeing, like, that history, right? JOËL: I think on solo projects, it can really depend on the way you tend to treat your commit history. I'm very careful with the history on the main branch where I want it to tell a sort of, like, cohesive story. Each commit is kind of, like, crafted a little bit. So, even when I'm working solo and I'm committing directly to master or to the main branch, I'm not just, like, throwing random things there. Ideally, every commit is green and builds and is, like, self-contained. If you don't have that discipline, then it might be particularly valuable to go through the, like, a branching system or a PR system. Or if you just want, like, a place to experiment, just throw a bunch of code together, a bunch of things break; nothing is cohesive, that's fine. It's all a work in progress until you finally get to your endpoint, and then you squash it down, or you merge it, or whatever your workflow is, and then it goes back into the main branch. So, I think that for myself, I have found that, oftentimes, I get not really a whole lot of extra value by going through a branching and PR system when it's, like, a truly solo project, you know, I'm building a side project, something like that. But that's not necessarily true for everyone. STEPHANIE: I think one thing I've seen in other people's solo projects is using a PR description and, you know, having the branching strategy, even just to jot down future improvements or future ideas that they might take with the work, especially if you haven't kind of, like, taken the next step of having that project management system that we talked about. But there is, like, a little more room for some extra context or to, like, leave yourself little notes that you might not want necessarily in your commit history but is maybe more related to this project being, like, a work in progress where it could go in a lot of different directions, and you're figuring that out by yourself. JOËL: Yeah, I mean, definitely something like a draft PR can be a great place to have work in progress and experiment and things like that. Something you were saying got me wondering what distinction you typically have between what you would put in a commit message versus something that you would put in a PR description, particularly given that if you've got, like, a single commit PR, GitHub will automatically make the commit message your PR message as well. STEPHANIE: This has actually evolved for me over time, where I used to be a lot more reliant on PR descriptions holding a lot of the context in terms of the decision-making. I think that was because I thought that, like, that was the most accessible place of information for reviewers to find out, you know, like, why certain decisions were made. And we were using, you know, PR templates and stuff like that. But now the team that I'm working on uses commit message templates that kind of contain the information I would have put in a PR, including, like, motivation for the change, any risks, even deployment steps. So, I have enjoyed that because I think it kind of shortens the feedback loop, too, right? You know, you might be committing more frequently but not, you know, opening a PR until later. And then you have to revisit your commits to figure out, like, okay, what did I do here? But if you are putting that thought as soon as you have to commit, that can save you a little bit of work down the line. What you said about GitHub just pulling your commit message into the PR description has been really nice because then I could just, like, open a thing [laughs]. And that has been nice. I think one aspect that I really like about the PR is leaving myself or reviewers, like, notes via comments, like, annotating things that should not necessarily live in a more permanent form. But maybe I will link to documentation for a method that I'm using that's a little less common or just add some more information about why I made this decision over another at a more granular level. JOËL: Yeah, I think that's probably one of the main things that I tend to put in a PR message rather than the commit message is any sort of extra information that will be helpful at review time. So, maybe it's a comment that says, "Hey, there is a lot of churn in this PR. You will probably have a better experience if you review this in split view versus unified view," things like that. So, kind of, like, meta comments about how you might want to approach reviewing this PR, as opposed to something that, let's say somebody is reviewing the history or is, like, browsing the code later, that wouldn't be relevant to them because they're not in a code review mindset. They're in a, like, code reading, code understanding mindset or looking at the message to say, "Why did you make the changes? I saw this weird method. Why did you introduce that?" So, hopefully, all of that context is in the commit message. STEPHANIE: Yeah, you reminded me of something else that I do, which is leave notes to my future self to revisit something if I'm like, oh, like, this was the first idea I had for the, you know, the way to solve this problem but, you know, note to self to look at this again tomorrow, just in case I have another idea or even to, like, you know, do some more research or ask someone about it and see if they have any other ideas for how to implement what I was aiming for. And I think that is the editor mode that we were talking about earlier that can be really valuable when you're working by yourself to spend a little extra time doing. You know, you are essentially optimizing for autonomy by being your own reviewer or your own critic in a healthy and positive way [laughs], hopefully. JOËL: Exactly. STEPHANIE: So, at the beginning of this episode, I mentioned that this is a new experience for me, and I'm not sure that I would love to do it all of the time. But I'm wondering, Joël, if there are any, you know, benefits or positives to working solo that you enjoy and find that you like to do just at least for a short or temporary amount of time. JOËL: I think one that I appreciate that's maybe a classic developer response is the heads downtime, the focus, being able to just sit down with a problem and a code editor and trying to figure it out. There are times where you really need to break out of that. You need somebody else to challenge you to get through a problem. But there are also just amazing times where you're in that flow state, and you're getting things done. And that can be really nice when you're solo. STEPHANIE: Yeah, I agree. I have been enjoying that, too. But I also definitely am looking forward to working with others on a team, so it's kind of fun having to get to experience both ways of operating. On that note, shall we wrap up? JOËL: Let's wrap up. STEPHANIE: Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeeeeeeee!!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions.

Giant Robots Smashing Into Other Giant Robots
499: Infinite Red with Jamon Holmgren

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Nov 9, 2023 47:46


Jamon Holmgren is the founder of Infinite Red, a consultancy specializing in React Native. He discusses his journey and insights into technology and leadership and highlights how Infinite Red stands as a testament that businesses can be run ethically while still achieving success. The conversation shifts to leadership styles and the principle of "one-minute praise" from the book "One Minute Manager." Both Jamon and Will agree that acknowledging others' efforts openly can make a significant difference, enhancing leadership skills and building stronger relationships. Will points out how this simple principle has been a game-changer for him in various aspects of life, including his personal relationships. Towards the end, the focus turns to motivation and long-term strategy. Jamon is driven by his enthusiasm for learning and the thrill of tackling diverse challenges in his consultancy work. He also shares his philosophy of keeping the company "10 degrees above the horizon," emphasizing steady, sustainable growth rather than erratic leaps and bounds. Infinite Red (https://infinite.red/) Follow Infinite Red on LinkedIn (https://www.linkedin.com/company/infinitered/), X (https://twitter.com/infinite_red), YouTube (https://www.youtube.com/channel/UCwpSzVt7QpLDbCnPXqR97-g), GitHub (https://github.com/infinitered), Facebook (https://www.facebook.com/infiniteredinc/), or Instagram (https://www.instagram.com/infinitered_designers/). Follow Jamon Holmgren on LinkedIn (https://www.linkedin.com/in/jamonholmgren/) or X (https://twitter.com/jamonholmgren). Visit his website at jamon.dev (https://jamon.dev/). Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: WILL: 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, Will Larry. And with me today is Jamon Holmgren, Co-Founder and CTO of Infinite Red, a software consulting agency that specializes in React Native. Jamon, thank you for joining me. JAMON: Yeah. Thanks for having me. I really appreciate it. WILL: So, Jamon, what's going on in your life? How's everything going? JAMON: You know, things have been obviously very busy, like, I guess, pretty much everybody. You know, school has started. I have four kids, so that keeps me quite busy, going to various school events, going to volleyball, you know, bringing kids here and there, running the company. I have some side projects I'm doing. I am playing hockey. So, it just seems like every waking hour is filled with something. [laughter] WILL: I totally understand that. I have three kids of my own. So, they're a little bit younger than yours, so mine is 4, 3, and, like, 17 months, so... JAMON: Okay. Yeah, so you're just getting started. And you're doing all of the, like, physical labor associated with being a parent. WILL: Yes, yes, yes. So, I want to start there. Tell me a little bit about your kids. I know their ages are 10 to 18. JAMON: Yeah, so I have a boy, Cedric. He's actually a programmer as well. He's just starting his career. He is the oldest, and then we have three girls. We have a 15-year-old who's a sophomore in high school. And then we have a 12-year-old who's in middle school and a 10-year-old who is in fifth grade in elementary school. And it's a lot. My wife and I both came from very large families, so we're kind of used to it. And it's a lot of fun. A lot of challenges at this age, I mean, teenagers especially, you know, as they kind of all come into that same era, you know, it's more of a challenge. I guess the thing that I think about it is a lot of the skills that I learned as a young kid parent don't really translate super well to being a teenager parent. And I'm having to learn a lot of new skills. And I actually talked to a guy the other day. His kids are, I think, 32 and 28, or something like that. And he said, "Yeah, the learning never stops." [laughs] WILL: So, I'm going to ask you for the secret sauce because I'm still in the temper tantrums and those type of emotions and stuff. So, how is it different in the teenage years from the temper tantrums? JAMON: Well, I think that they can act like adults in a lot of cases, and you start thinking of them as adults, and you start developing a relationship there. But their brains are also not fully developed. And so, they will also do things that are very inexplicable, like, you'll just be like, why? Why would this be a thing? Like, I don't get it. Like, you act like an adult for half the time, and then the other half, you act like a kid. Navigating that, and the fact that they change all the time, and all the other challenges. And they're all different. Like, if we had only had one kid, you know, my boy was pretty easy. He was pretty straightforward. It would have been like, well, shoot, being a parent is pretty easy. Like, I don't know what everybody else is complaining about. Like, he never did tantrums. He was just a really quiet, you know, like, well-behaved kid and kind of went through life like that. But then, obviously, developing a relationship with him is more of the challenge because he's quieter, where with my girls, it's easier to develop the relationship, but then you [laughs] deal with a lot more volatility as well. So, they're all different. Every kid's different. It's hard to really apply that directly. I would say that the thing that I've learned the most in the last few years is just kind of continuing to be, like, even through some of the tougher times, continuing to be there, continuing to develop that relationship. A lot of times, it feels like you're not getting anywhere, but you are. It is actually happening. You just don't see it until later. WILL: I'm writing that down. That's great advice [laughter]. You mentioned hockey. Tell me about it. I've never played hockey. I grew up in the South, so we didn't have that. So, tell me about it. And you're a goalie also, correct? JAMON: Yeah, I play goalie. I didn't discover hockey...I played basketball in high school. I played four years of high school basketball. I even played a little bit at college. And I didn't really discover hockey until I moved to Southwest Washington, about an hour away from where I grew up in the coast of Oregon. When I got there, a lot of my friends that I made were playing hockey. And one friend, in particular, he was a goalie, and he had grown up in Upper Michigan. So, you know, like, he grew up playing hockey. He was a very good skater and things like that. But there was one weekend I was coming to watch him play just rec hockey. And he's like, "You know what? I can't make it. Would you want to jump in and, like, be my sub?" And it was just a pick-up game. So, it wasn't like there was anything on the line. And I was like, "All right, I'll give it a try." You know, put on the gear. He showed me what to do to put on the gear. He kind of gave me some tips. Like, in the living room where we were, he was, like, showing me how to play. We were, like, I would say, 19, I think. Nineteen years old, something like that. Anyway, I show up, and I put on the gear, and I go out there. And I actually had a decent game, considering I barely knew how to skate and barely knew how to do anything. But I'm kind of big; I'm six foot four, almost six foot five. And having all that gear and everything, I filled up a lot of the net. And it wasn't a very high-level game, so I did pretty well. And after that, the team was like, "Well, we'd love to have you back." And then my friend really was not interested in continuing, so he was like, "You can have it, like, just roll with it." I kept playing for about three years, and then, I don't know, I took over a decade off. The team dissolved. It wasn't even a league team. It was just, you know, pick-up hockey. And then a friend called me and was like, "Hey, I'm starting up a game. It's going to be Finnish Americans," because I'm half-Finnish myself. "So, it's going to be all Finnish Americans. We're going to call it the [Foreign language]," which is the Finnish boys in sort of Finnish. It's not exactly supposed to be like that in Finnish. Anybody listening who's Finnish is going to be like, "Yeah, that's bad Finnish." But it kind of means Finnish boys or Finland boys. And we put together the team, and I've been playing for the last three-plus years. It's been kind of, like, a rec league team. We've won the championship four times, which was really fun. This year, I'm actually playing in two leagues. I'm playing in rec league, and I'm also playing the next league up, so a little bit faster, better skaters, better shooters, things like that. And I just love it. It's so much fun. WILL: Wow, that's amazing that you started later and that you're still playing it. Because when I look at hockey, I'm like, that's really hard. I don't know if I could do that. I can skate. I can't stop. JAMON: [laughs] WILL: Like, I can get a lot of speed [laughs]. But it's just something about turning sideways and thinking I'm going to fly over the skates. JAMON: [laughs] WILL: And yeah, it's a whole thing [laughs]. Is goalie harder than playing any of the other positions? JAMON: I would say it's different. Like, I don't have to be as good of a skater, you know, things like hockey stops are still not supernatural for me. I don't skate backwards super-fast. You know, I'm not a fast skater in general. But the difference is, of course, you have to be reading the flow of the game. You have to know the body language of the players that are coming at you. You have to kind of see what's happening. At the end of the day, lots of things can happen, so you try to put yourself in the best position. It's a lot of, like, positional, like, where are you in the net? What does your position look like? And then, once they shoot, how do you react? Are you dropping down, or are you staying up? Are you using your glove? Are you using your blocker? Are you just trying to block with your body using your stick? Then, once the puck hits you, then what do you do? How do you control the rebound? Are you trying to cover it up and ice the puck so they do a face-off? Are you trying to kick it out to one of your skaters? And then, once that happens, you have a little bit of a rest, hopefully, while they're down on the other side. But you're continually alert and watching to see what's going to develop because it could be a breakaway. And then it's just you and the skater and trying to anticipate what they're doing and try to make it so that they have to make a play. Like, just be big, be in position. Don't get out of position. Don't make a mistake. And I've had really great games where I've, you know, had 45 shots on me, and I've only let one in or something like that. And I've had some bad games too. I know there's one game in a championship where they only had six shots on me. But we ended up losing because I let in two, so that was not a fun game. I only had six opportunities, and I failed on two of them. But that happens, and so you just have to be mentally tough. WILL: Wow, that's amazing. The limited knowledge of hockey...I'm going to assume here, so I hope it's right. With you being 6'4, 6'5, I'm guessing that the five-hole, if I'm correct, was probably your toughest position to defend. JAMON: You know, you would think so. And just for the audience, the five-hole is, like, between your legs, you know, the puck going between your legs underneath. But I play a style...a little bit older style of goalie because that's what I watched. You know, in, like, the early 2000s, I watched Patrick Roy of the Colorado Avalanche, one of the greatest goalies of all time, and he played what's called a butterfly style. So, as the play develops, you're standing, but then you go down fairly early, and you're protecting the bottom. You have your stick in front of you protecting the five-hole, and you have your legs, you know, spread out. So, I used my height really more for blocking as I'm down rather than standing because when I'm standing, I'm above the net. It's better for me to get down. And I think that that's worked out pretty well. You know, Patrick Roy was a pretty big goalie as well. Most modern goalies play a more hybrid style. But, you know, we could get into all that. I'm a big kind of hockey nerd in this way. But that's what I do. I play butterfly, so most of the time, people don't beat me five-hole; when they do, it's usually they're picking a corner. WILL: Wow. Now that you've painted the picture, I can see how that's smart because you do have the goal, I mean, the gloves plus the stick and then your height. Yeah, I can see how...that's smart. That's very smart [laughs]. JAMON: Yeah, that's right. Yeah, that's kind of the goal. And also, because I wasn't a great skater, it sort of played into it as well, playing down on the ice where I was just more comfortable that way. It's worked out. I've had a pretty decent record over my career here [laughs]. WILL: That's awesome. Well, let's transition a little bit into consultant agencies. You've been doing it for 18 years. Tell me about that. How did you get started? JAMON: Well, when I started, I was working in construction. I was working for a home builder. And, you know, everybody I knew pretty much worked in construction, including my dad, who owned a business. And I went on my own. I had always dreamed of owning my own business, but I didn't start really thinking about websites. I was coding. I loved coding, and I was coding since I was 12. So, when I got to 23 years old, I thought, I'll start a business, and I'll do home design because that's what I was doing for the builder was, I was drawing homes. I was designing homes and remodels and things like that. And so, I started it doing that. But I also needed a little bit extra work. I didn't have enough work. Like, I had people, you know, sending me work, you know, home design and whatnot, but I didn't have quite enough. So, I would also build websites on the side, PHP and HTML, MySQL, and JavaScript. And I just sort of continued to do that. But in 2008, there was the housing crisis, and all of the design work for homes just dried up. There wasn't much there. In fact, it actually really dried up in 2007 because things kind of started a little early for designers. And so, I was like; I got to do something to stay busy. I've got a wife. I've got a young kid (Actually, at that point, I had two kids.), and I need to make sure that I'm staying busy. And so, I really ramped up trying to find work, you know, as a programmer, as a web developer. And there were plenty of companies at that time that were really trying to drum up business. So, they were putting money into their websites trying to get new projects, and they were all construction companies. And so, that's how I started. And I started doing more things like internal web apps for managing orders and managing sales leads, and that sort of thing. And that led me into web apps and eventually to Ruby on Rails, which became sort of my bread and butter for a while. As I was doing Ruby on Rails, you know, obviously, the iPhone was out, but the iPad came out. And I was more of an Android guy at that point. But I bought an iPad because it looked really cool, and my dad had one. When I started playing around with it, I'm like, I need to build apps for this. This is super cool. So, I took some Stanford courses online, which you could do back in those days, iTunes U, and learned how to use Objective-C. This was previous to Automatic Reference Counting and stuff. So, you had to manage your own memory, and this was a lot of manual work; very different environment than JavaScript, and PHP, and Ruby. But I actually enjoyed it quite a bit and then eventually transitioned into React Native later. But really, getting over to mobile and that sort of thing was...once I found mobile, I really didn't want to do web anymore. Mobile is what I really enjoy doing. WILL: Wow, I love that. If I'm following you correctly, you said in 2007, that's kind of when everything dried up. So, you were almost forced to find something different, correct? JAMON: Yeah, that's right. I mean, I kind of sat around feeling sorry for myself for a while. And then I was like, well, it's my business. I got to figure out what to do. It's not anybody else's fault. Like, you know, it doesn't matter that this is forces out of my control. I do have control. I have the ability to go in there and figure out, okay, what do I do next? Well, I know how to program, and it seems like people want me to program. So, let's lean into that. WILL: Wow. I love that. Because it's funny, that's how I got started in programming. I lost my job. And I was working at Buckle, the clothing store. If you know me, that is not me at all, like, at all [laughter]. I love gym shorts and athletic clothes. Like, fashion is not my thing. It's just not. So [laughs], I got into programming because I was just struggling. And it was a very pivotal moment in my life. And I'm thankful that I lost my job. Losing your job is just hard, and I think it makes you rethink things. JAMON: Yeah, absolutely. It was a growth moment for me as well, one of many. But that was definitely a point that I look back on and say, I mean because I can actually point at almost the day when it all dried up. It was, like, April 2007. And my uncle had been sending me a lot of work, you know, he had extra work. He didn't have barely enough for himself anymore at that point. And I finished up my last project, and he's like, "I don't have anything else." And I had some other clients as well and called them up, and they were like, "No, we don't have anything. Like, nobody is buying right now." And it just kept going like that. And it was weird because 2005, 2006, most of 2007, it felt like things were really rolling, but it just dried up all at once. And so, I was really lucky that I did end up getting a bunch of web work to do in 2008. I was still doing home design till probably late 2008, 2009. But then I eventually just hung that up and was like, okay, this is over. I'm definitely focusing on programming. WILL: Wow, how was the initial traction when you moved into ramping up the web development? JAMON: It was really good because it didn't take much to keep me busy. And I ended up getting some big contracts from, like, a cabinet manufacturer was a big one. I did some other things as well. And I ended up hiring my first employees in 2009. So, really, less than two years later, I was starting to hire employees. And I just hired, like, junior developers who had barely learned to code and taught them to code. So, I hired probably, over the years, next few years, like, ten programmers, many of whom are actually still with me today, and I taught them to code back in the day. And as time went on, they became senior and really high-level programmers who are now leading projects for big companies that you've heard of. But they started with me building, you know, PHP and MySQL and whatnot for small, like, regional construction companies. And we learned together. So, it was definitely a progression you can go look back and see. WILL: Yeah, I saw a tweet that you tweeted, and I loved it because I totally understand. JAMON: [laughs] WILL: And so, I'm glad you mentioned the junior devs and stuff. The tweet that I'm talking about was, "I got into this industry to code; ended up becoming a founder because I was the only person who would hire me." JAMON: [laughs] WILL: I want to ask you about that. [laughter] JAMON: Yeah, it's really that I grew up in a small logging town, like, very tiny logging town in Northwest Oregon. I didn't know...I knew one programmer, and the guy was, like, an incredible genius. And I just thought that that was the only way that you could professionally be a programmer was to be an incredible genius. I was coding, but I was, like, coding games, you know, in QBasic. And so, for me, every time I looked around, it was just, like, construction, or logging or, you know, blue collar, like, working at a mill. Like, these were the things that I saw around me. And so, that was the path I went. And I didn't really think of using this passion that I had for coding to turn it into, like, actual money. And when I did start thinking about it, I was like, I don't know anybody who does software. Like, even when I moved to Southwest Washington, I was closer to Portland. But I thought you had to have a CS degree, and I didn't have a CS degree. So, I was like, okay, well, I'll start my own business then, and that will be the thing that kind of leads me into tech. And that's what ended up happening. And it's kind of funny because I did go to, you know, one semester of community college for basketball and for...until I got cut. And then I studied some things there. But I never finished for the community college. What's kind of cool, though, is today, I'm actually on their, like, tech advisory committee. Like, they actually have me advising their professors on the current state of tech, which is kind of cool. WILL: Wow, that is really cool. It is interesting because I remember when I first started out and that feeling of probably over 300 applications just trying to get a job. And it was just hard. And my first job, to be honest, I think it was because of networking is why I got the job. If I didn't know the person that introduced me to the company, I probably wouldn't have gotten the job, if I'm being honest. But I am very sympathetic for junior devs anytime. If a junior dev asks me a question, I will take time, help them out. Because I remember...it's very hard as a junior dev trying to get that first job. So, when you said that, I was like, yeah, I can see your heart towards junior devs. JAMON: Absolutely. That's where I started. You know, the first developers that I hired were all juniors. We don't hire juniors anymore because of the style of business that we are. But I miss that. I miss that to some degree. We really can't. And we've looked at it from just about every angle. But I did my time [laughs]. I spent a lot of hours teaching junior developers when I could have done it quicker myself. WILL: Definitely. Like, you end up losing some money when you do a junior dev and you're hiring for the future. So, like, in a consultant agency, I totally understand that, yeah. JAMON: Yeah, absolutely. MID-ROLL AD: Now that you have funding, it's time to design, build, and ship the most impactful MVP that wows customers now and can scale in the future. thoughtbot Liftoff brings you the most reliable cross-functional team of product experts to mitigate risk and set you up for long-term success. As your trusted, experienced technical partner, we'll help launch your new product and guide you into a future-forward business that takes advantage of today's new technologies and agile best practices. Make the right decisions for tomorrow today. Get in touch at thoughtbot.com/liftoff. WILL: So, I want to ask you about the transition from ClearSight Studio to Infinite Red. How did that happen? JAMON: ClearSight was my first company. And it sort of evolved from being a, you know, a home design/website company to just a website and web app company, and then mobile apps. And, at a certain time, we had, I think, around 12 employees, something like that. I had a design department. We were building websites and whatnot. And I was really interested in iOS development. That was really my passion. And so I actually ended up working on some open source with iOS developers across the globe and then got invited to a conference down in San Francisco in 2014. And I went and gave a talk there. It was my first tech conference that I'd ever been to, much less given a talk, and I was the first talk [laughs]. So, that was kind of an interesting little anecdote there. And as I did it, I got to know some other developers. I had one in particular, Todd Werth, who I really hit it off with, and we ended up chatting a lot after the conference. And it felt like he and I had a very similar outlook. And he had an iOS agency. That's all they did. Well, 2015 rolls around, and I had had some rough times toward the end of 2014 in terms of the business, and I was kind of complaining to Todd. He had had some issues as well, and we started commiserating. And he's like, you know, he just started joking. I still have this conversation in Slack way back if I go look. And he's like, "Well, maybe we should just merge our businesses together," because it felt like we had maybe complementary skills. And we had a similar outlook on what we wanted from our businesses. And so, we ended up eventually solidifying that. I flew down there, talked to him and his business partner, Ken, at the time. We ended up making that happen later that year. So, just a few days ago, October 1st was our eighth anniversary running the companies, running the new company, the merged company, which is Infinite Red. So, that was kind of how that all came together. Eventually, Ken left, and we had a new business partner who was our top employee buy-in; that's Gant Laborde. And so, there are still three owners. We have three directors and then the rest of the team. We're about 30 people altogether, and we focus entirely on React Native. WILL: Wow, congratulations on eight years. That's a lot. That's amazing. JAMON: Yeah, thank you. I was just thinking the other day that I ran ClearSight for ten years. Infinite Red is getting close to how long I ran my first business. And, like, my youngest is, like I said, 10. So she was only two years old when I merged the company. She does not remember my old company, which is weird to me. [laughter] WILL: Wow. So, can you walk me through your decision to go here with React Native and specialize in that? Because it sounds like right around the time when React Native was created, and people started using it in production. JAMON: That's right. The iOS technology that we had sort of bonded over at that conference was called RubyMotion. But in 2015, the founder ended up going to work for Microsoft for a while and then went back to Apple. He had been from Apple before. So, it was sort of going down. And we were looking for a different technology, both of our companies were, and then, of course, the merged company. React Native looked interesting, but it didn't have an Android version yet. But then, in September of 2015, Android came out, so it was iOS and Android. So, we were able to take a look at that one month before we ended up solidifying the actual merger. So, basically, day one, October 1st, 2015, we were, like, we are now doing React Native for mobile, but we kept doing web. We kept doing Ruby on Rails. We did some Elixir. We did some Elm. We did some...I think we had some old Ember stuff going on. We had all kinds of things going on. But over time, we got more and more traction with React Native because that's really where our interest was. And so, we ended up saying, okay, well, this is where we really want to be. It took us a few years. It took us probably five years, six years, something like that, to really develop the confidence to say, "Hey, this is all we want to do," because it's a risk. Like, you put yourself on one technology. We had that before with the other technology that went down. But we had the confidence that we knew we could step off of a sinking ship onto another one if we needed to. So, we said, "You know what? Let's do this." And I got to give my co-founder, Todd, a lot of credit because he was the first one to say, "Let's go all React Native. Anywhere that React Native is, React Native is on a lot of different platforms. You can do tvOS. You can do Mac. You can do Windows. You can do web with React Native web, all kinds of things. So, let's just focus on React Native. Our team will just focus on that. We will only hire React Native developers. All of our marketing is going to be around React Native. Let's just focus on that." And it ended up being a great call. We did that. We made that happen. And for probably the last, I would say, three, four years, something like that, that's all we've been doing. WILL: So, what's your opinion on, I guess, the argument that's being held right now with native iOS and Android, even the Flutter, and I think Ionic is the other one that I've heard of, versus React Native? What's your pitch on React Native over those? JAMON: There's definitely reasons to use any of those. But I wrote this article a while back. It was specifically about Flutter, but I think it applies to a lot of the other competitors as well. The title of the article was provocatively titled, "Flutter Is Better Than React Native in All the Ways That Don't Matter." And the idea behind this is that, yes, Flutter gets a lot of things very right. A lot of their developer experience is actually better than React Native; some is worse, but, you know, some is better. But really, when it comes down to it, the things that matter are more business level. React Native is good enough. It's like native views. So, you have the native performance. With Hermes, you have really good performance in JavaScript. So, you know that you can get really high-level JavaScript performance. You can ship JavaScript, which really helps because then you can bring in JavaScript developers, and specifically React developers. So, a lot of companies already use React. It's a no-brainer to then use React Native if you're already using React Web. It doesn't really make sense to go to Flutter. It makes maybe some sense to write it in native, but then you have to write it twice. And you have three teams. You have a web team. You have an iOS team, and you have an Android team. And you also have three codebases, and one's always lagging behind. That's always what's happening. Marketing is like, "Okay, when can we announce this?" "Well, iOS isn't done," or "Android is not done," or "Web is not done." Where if you can combine all of those things and combine just the culture of your team, then it becomes more tight-knit because everybody's working on all aspects at one time. You can take a feature, and you can build it in web, and you can build it in iOS, and you can build it Android with all the same skills. Now, there are some deeper parts of React Native. It goes really deep. But in terms of just being productive out of the gate, a React developer can be productive in week one, and that's, I think, a huge deal. So, it really comes down to is the performance and developer experience good enough? And the answer is absolutely yes. And then, secondly, like, what's the business case for React Native? Well, you can have the same developers doing iOS, Android, and web, and even if you don't, you can share techniques. You can be like, "Hey, here's this cool JavaScript thing," and the Kotlin developers aren't just like, "Ugh, you know, JavaScript." Or you can be like, "Hey, here's our TypeScript configuration across the whole codebase." You can even have a monorepo with everything in it. It just makes a lot of sense that way. And especially now with Expo, it makes it even more that way because Expo removes a lot of the barriers for web developers that they would have coming into native. So, with that in mind, I still see React Native dominating the apps that are at the top of the App Store. One of the Expo developers, Evan Bacon, has put out a bunch of tweets about, you know, like, 24 out of the top 100 food and drink apps are written in React Native, as opposed to 8 in all the other options combined other than native, you know. So, it gives a good sense that React Native is still growing and continuing to. It has a lot of steam behind it. WILL: Yeah, I totally agree with you. I'm a big React Native fan, and I do a lot of React Native work here. So, yes, totally agree with you. And one of the most frustrating things that I've come across is, I'm a big researcher, and so I'll research things, and I'm like, oh, there's an app for this. And I'm a big Android fan, so when I go to them, it's like, oh yes, I can use this app. And then it's like, no, I can't. It's only for iOS. Okay, like, you lost me as a customer. JAMON: [laughs] WILL: I was willing to pay whatever on this because I've been looking for it. So yeah, I like how you said that. JAMON: Yeah. It treats all of the platforms as first-class citizens. WILL: Yes. Yes, yes, yes. Totally agree. How does your company handle the backend? Do y'all do any of the backend, or how is that handled at Infinite Red? JAMON: We used to do that, like I mentioned. But a few years ago...we had a very, very small back-end team by then. Most of the time, and now pretty much 100% of the time, when someone comes to us, they already have a back-end team, so we work directly with them. A lot of our developers were back-end developers, and so they understand the backend really well, but they're obviously React Native specialists now. So, you know, I came from that. I did PHP. I did Ruby, Ruby on Rails, Elixir, Node, all kinds of back-end technology. So, I understand it really well as well. But yeah, we lean on our clients for that. We might partner with an agency like you folks over there at thoughtbot and have them do the backend, or just have the client, you know, come up with their own solution. WILL: Yeah, I love that, yeah. And we've done that with numerous agencies, so yeah, that's awesome. What does success look like for Infinite Red now versus, you know, six months or five years from now? Do y'all have any goals in mind that you're trying to hit? JAMON: In the Infinite Red leadership, we are currently reading John Maxwell's 21 indisputable Laws of Leadership, which is a good book. And we had this really great conversation at our first book club meeting in leadership, which John Maxwell defines success in a very different way than we do. You know, he measured it as, like, McDonald's, or Starbucks, or something like that, like, giant, becoming huge, becoming big, making tons of money. And it was sort of just implicit in the book that that was the case. We had this great talk internally. Why didn't this resonate with us? And that's because we don't really measure success that way. So, I love that question, Will, because measuring success is you really have to start there. Like, you have to start there and say, "What do we want from this?" So, ultimately, we want to build cool things with our friends. I'm a coding nerd. I want to code. I want to be in the code. That's why we're an agency. Like, if we were a product company, if we were building, I don't know, podcasting software or something, we'd have to become experts in podcasting rather than experts in React Native, or experts in TypeScript, or whatever we want to do. So, we really love code. We want to build that. We want to have an amazing family-first environment. We want to treat everybody super well. We want to have really low turnover, which we've been able to achieve. Hardly anybody leaves Infinite Red. Maybe every other year, we might lose one person. And even with those people, they tend to come back [laughs], which is a great sign. They go out and find out that, yeah, actually, Infinite Red is pretty awesome, and they come back. So, we really look for that. We really focus on that. We want that to happen. And it's really less about making the most money we can. Obviously, everybody wants to be well paid. And so, we're going to try to make sure we have a successful business in that way and that we want to be around for a long time. But, really, measuring success is less about business success and it's more about life success. It's really more about family success, being with my four kids, being there for them when they need me to be. That's why we're remote, you know, as another example. So, everything really hinges off of that. It's around happiness. It's around fulfillment. It's not around financial success. WILL: I'm a huge John Maxwell fan, by the way. JAMON: [laughs] There you go. WILL: So, yes, I love it. And I love how you explained, you know, because one of my questions I was going to ask you is about the core values, but I'm going to switch it up a little bit. So, I'm just going to say, in my opinion, I feel like there's almost leadership talk void at times, especially in the tech space. Like, we don't talk about leadership a lot. But it plays a huge part in what we do day to day. Like, you named a couple of core values and principles that you're following because of the leadership. So, for you, why is the leadership so important and I guess you can say have a seat at the table at Infinite Red? JAMON: I'm a strong believer, and I've become more of a strong believer over time, that it all starts at the top. If you don't have buy-in from your top leadership, it does not really matter what happens otherwise because they will continually undermine, and they have the power to continually undermine that. So, these core values have to apply to the top leaders. They have to be held accountable to that. And these leaders also need to be developed. So, we have three owners. We have three directors. And the three directors who are underneath us were not directors when we hired them; you know, they started out as developers. They started out as designers. They started out as project managers. But they became Director of Operations, Director of Engineering, Director of Communications. And we developed them. We poured a lot of time into them, and we continue to do that. In fact, even reading this book with them and going through that exercise is continuing to invest in them. Not that we as owners don't have growth to do; we also do. And so, we learn from them, and we learn from our team. So, you have to start there. And on that same vein, we do have some core values. We call them our foundation and our pillars. We have three foundational things, and we have four pillars. So, the three foundations are: one, we control our own destiny. We are not going to be beholden to some other company. We're not going to ride someone else's coattails. We're not going to be in a situation where someone else can kill us. And it can be easily done that way where we're in a position where, you know, we're too reliant on one whale client or something like that. We just won't do it. The second foundational thing is that we have...it's a word bonitas, which means kindness, friendliness, benevolence, blamelessness. And it's basically just being a good person to everybody and doing the right thing. And the third one is having a significant positive impact. That's why we do so much media. That's why we try to have an impact outside. And we're only 30 people, but people think we're way bigger because of how we kind of present ourselves in the world. And then our pillars all support those things, so high personal support. We support each other. We have high expectations, but we also support each other not just at work but also as a whole person. Long-term viewpoint, we think way beyond this year. We think about what is Infinite Red going to be when I retire? You know, I'm 41; that's a ways out, hopefully. But what's that going to look like? The next one is collaborative creativity. Creativity by yourself is just a solo thing. We're a team, so it has to be collaborative. We have to do it together. All our creative work, whether it's our conference, Chain React, or our work, it's all collaborative, and we love being creative. And the last thing is being pioneers, pioneering spirit. We like to be pioneers in technology. We put out a lot of open source. And we try to bring that pioneering spirit everywhere we go. And then, there's a lot of different things that kind of come out of that. For example, we have this internal saying, which is, "Don't do hard things alone." So, you have a hard thing coming up? And it could be hard in various ways. It could be a technically challenging thing. It could just be hard because of the mood you're in that day. But don't do it alone. Ask someone to help you, you know, jump in with you, pair with you. Do it together. And we love that. That's part of the high personal support and the bonitas. So, all these things come out of the foundation and pillars that we have. WILL: Wow, I love all those. I want to pick one of them out and ask you a question around it. So, you're talking about having an impact. I'm loving this conversation just talking to you. It's just been amazing. So, for you, what do you want the impact on the world to be from your perspective? JAMON: That's a hard question to answer, and it tends to be something that I think about a lot. I'm more of an opportunistic person. I react more than I plan ahead, that sort of thing. But with that said, I think that we have had significant positive impact through a lot of different ways. So, on Twitter, for example, I try to present a...and this is authentically who I am. But I try to present a positive force out there, someone who's excited and enthusiastic about the technology, who supports other people, even who you might consider competitors, for example. I just retweeted recently a Callstack thing. I mean, you might consider them a competitor. They're another React Native agency. But I love Callstack. They're great people. And I retweeted one of their really amazing resources, which is the ultimate guide to React Native performance, which, by the way, is really good. And if you do React Native, you should check it out. So, I think what goes around comes around, and I really want to have that positive impact out there. I want to give talks that inspire people. You know, I'm a nerd, and I'm going to nerd out about stuff. And I feel like that has an impact all of its own. So, that's kind of my personal side of it. And then Infinite Red is a showcase that you can run a company the right way. You can treat people the right way. And the company can be successful along our own metrics of success. WILL: So, one of my biggest principles that I've learned in life that's changed my leadership 100,000% is from this book called One Minute Manager. And I think it's called one-minute praise. And, essentially, the background behind it is, if you think something, just tell the person because so many times...and I get in my head, and I think amazing things about people, but I never say it. JAMON: [laughs] WILL: So, I want to just tell you, like, you said, the impact that you're making. You are doing that. Like, one of the reasons why I invited you on the show was because of your impact that I see that you're having on Twitter and LinkedIn and just everything that you're doing at Infinite Red. So, keep going. I want you to know that you are making a difference. I see you, and it's making a big difference in my life. JAMON: I love that, and it makes me feel great. And I appreciate you sharing that one-minute praise there. It is something that sometimes you put it out there, and you don't really know what the impact is, you know, it's sort of hidden in maybe the likes, or the replies, or whatever. As an example, I just reached out to my friend Aaron Francis last night, and I told him, "Hey, I love your videos." I don't even do the tech that he does. But I watch his videos on YouTube because I just love the vibe that he has. And I told him that. I was like, "You're doing a great job. You're being a very good advocate for your company." And I agree with you; I think that just taking the moment to reach out and say, "Hey, I think you're doing good work," it encourages people to do more of it. So, I appreciate it a lot, Will. That's really nice of you to say. WILL: Yeah, definitely. If you can go back, what is some advice that you would give yourself? We could do both at the beginning when you did ClearSight and whenever you merged and did Infinite Red. Was there any advice that you're like, wow, I learned these lessons, and they were game changers for me? JAMON: [laughs] Boy, this could be a whole nother podcast, to be honest. There are so many different things that I've kind of learned over the years. I feel like, you know, there's value in, you know, there was actually...I forget exactly where I heard this, but it was about Cloudflare, the company. And a long time ago, as they were sort of launching, one of the people that worked on the...I think it was their founder, actually. One of their investors told him, "Hey, running a company is sort of like flying an airplane. You want to make sure that it's well-maintained at all times. And then, when you're flying, you keep the wheel steady and the nose 10 degrees above the horizon so you continue to rise. And you don't need to shoot for the moon. We're not a rocket here. Just continue to execute well, make sure that it's well maintained, make sure that you're continually rising." And Cloudflare is a good example of this, and I think that Infinite Red is as well. Every year, we try to do something where we're continuing to keep that nose 10% above the horizon. That doesn't always mean growing. Like, we don't hire all that often. We don't grow in terms of headcount, but we grow in other ways. And you can see that looking back over the years. Every year, there was something that we continued to, you know, improve, keeping that nose 10 degrees above the horizon. And so, that's a big one. And you can just go do all the little things really well and continue to think long term and where are you headed. And if you do the right things long enough, good things happen. WILL: I love that because, especially when I'm working out, I try to shoot for the moon. JAMON: [laughs] WILL: I go all out. So, that was some amazing advice. I don't even remember who told me, but when I first started programming, I tried to shoot for the moon. And, oh, I crashed and burned so many times [laughs] because it's just something you can't just master it, and just like, I got it, da da da. And I love that advice. That's amazing advice. So, that's perfect. JAMON: Yeah, it really stuck with me, and I have so many more lessons. I have actually kept a notebook of profound things that I've heard over the years, and I actually really enjoy that minute praising you said. And I'm going to look up the quote after this, and I'm going to put it in my notebook. [laughter] WILL: Yeah, yeah. It's been a game-changer because I'm a very straightforward person. And so, a lot of times, like, I don't mind addressing an issue just head-on. But what I found is I'm just always doing that. And I never had equity in the bank at times. This is when I was a very young leader. I didn't have equity. And so, it was just hard to tell people, "Hey, can we tweak this? Can we do that?" And then I had to sit back and say, okay, what can I change to be a better leader? And it's like, I can connect better. And I see so many things. Like, I'm very observant, I think. To be honest, it's helped me in every area, even with my spouse, with my kids, with friends. It's just saying, "Hey, I see what you did. I see that you made breakfast." Or "My kids, I see that you made this beautiful mud pie for me. And it's amazing. So, thank you. Thank you." And so, yeah, it's been a game changer for me. JAMON: Yeah, one of my friends, his goal was...and he's a leader. And he said that his goal with everyone on one was to give them one thing to change and highlight one thing they did well like you said, equity in the bank. He was talking about when he was a leader of, like, a call bank. And he said, "No matter how bad the call was, I wouldn't give them more than two things to improve because there was no way that they could take ten critiques and improve. They would just be defeated." And then, he would review and see if they could improve one more thing, avoided negative language, things like that. So, that's a really interesting concept. WILL: Yeah, definitely, definitely. So, I have one other question for you. What motivates you? What's your wind in your sails? What keeps you going? Because I know running a consultant agency is not easy. What keeps you going? JAMON: For me, motivation tends to be enthusiasm for learning, really more than anything, like going into something new and, like, exploring. I see it more as exploring even than learning. With a consultancy, there's always so many different...it's never the same, you know, there's always some other challenge. And that's one of the reasons I've loved being, you know, a consultancy owner for so many years. You're never dealing with just the same stuff over and over. So, I would say it's really about the exploration that happens, and just loving code, and talking shop, and being around great people. To me, that continues to motivate me. WILL: I love that. Do you have anything that you would like to promote — personally, Infinite Red, anything? JAMON: Well, Infinite Red, of course. If you're looking for React Native, we are all senior-level React Native developers. We've been working together for a long time. So, big companies, the biggest ones you can think of, many of them have hired us to, you know, be the experts with their team. We usually put 2 or 3 people on a project, and then the client will come in with 2 to 10 people or whatever they have on their side. And we work with them side by side, teaching them as well as delivering code. So, that's really our bread and butter. We also put on the biggest and, I think, only U.S.-based React Native conference, and it's called Chain React. It's in Portland. Next year, it's going to be in July. So, go check it out: chainreactconf.com. We'd love to see you all there. I'd love to see you there, Will. And network with all these different React Native developers. There's people from Meta, and Microsoft, Amazon, all over the world, really. And they're some of the best React Native programmers you're going to ever meet, and some great talks, and great food, and a great city. WILL: Yeah, I would love to be there. Let me ask you this: how is Portland in July? JAMON: Portland is amazing in July. Sometimes, it can get hot, but for the most part, it's just beautiful. It'll be like 85 degrees, not really any humidity, nice, little breeze. It's just a beautiful weather pattern around Julyish. That's why we chose that time of year. So, definitely, if you're going to be coming to Oregon, Portland, you know, West Coast, July is a great time to come. It's not going to be super, super hot, usually. Sometimes, I mean, we get over 100 sometimes, but no worries, you know, there's AC as well. But for the most part, it's beautiful. WILL: You sold me already. JAMON: [laughs] WILL: So, I live in South Florida, so...[laughs] JAMON: Yeah, it's going to be different in South Florida in July. [laughter] WILL: Awesome. Well, this has been an amazing chat, and just great getting to know you and learning more about Infinite Red. Thank you for being a part of the podcast. JAMON: Yeah. Thanks for inviting me, Will. It was a lot of fun, and you're a great host. I appreciate it. WILL: I appreciate it. JAMON: You can subscribe to the show and find notes along with a complete transcript for this episode at giantrobots.fm. If you have questions or comments, email us at hosts@giantrobots.fm. You can find me on Twitter @will23larry. This podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. Thanks for listening. See you next time. Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions. Special Guest: Jamon Holmgren.

Name 3 Songs
Louis Tomlinson / Zayn Malik Updates + Revisiting: Exploitative Men in Music w/ Troy McEady

Name 3 Songs

Play Episode Listen Later Nov 8, 2023 101:36


This week on Name 3 Songs... ⚡️Fangirl Nonsense: Nicholas Galitzine is the new It Boy of the Month. Louis Tomlinson called out Larries over a recipe for chicken parmesan. Zayn Malik cosplays as Voldemort for halloween.  ⚡ Then we have a replay! The Most Exploitative Men In Music featuring Troy McEady from Bind the Blinds and Dunzo podcasts. If you thought Justin Timberlake ruining Janet Jackson's or Britney Spears' career was bad, just wait till you hear this! Sadly, men taking advantage of young pop stars is a repeating theme throughout pop culture history. What are some examples of relationships the most exploitative men in music have been in you ask? This week we're covering; Phil and Ronnie Spector, Mariah Carey and Tommy Mottola, Mandy Moore and Ryan Adams. We're joined by pop culture expert Troy McEady from Dunzo Podcast to take a closer look at the men who have exploited pop stars in their relationships. From glass coffins to security cameras to revenge music videos, it's a wild ride!  Enjoy this episode? Join our Patreon community or leave us a tip on PayPal!  Want to talk more? Find us: @name3songs | @sara_feigin | @jenna_million Check out all the sources for this episode at name3songs.com Learn more about your ad choices. Visit megaphone.fm/adchoices

The Bike Shed
405: Retro: Sandi Metz Rules

The Bike Shed

Play Episode Listen Later Nov 7, 2023 31:58


Stephanie discovered a new book: The Staff Engineer's Path! Joël's got some D&D goodness. Together, they revisit a decade-old blog post initially published in 2013, which discussed the application of Sandi Metz's coding guidelines and whether these rules remain relevant and practiced among developers today. Transcript: JOËL: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. STEPHANIE: And I'm Stephanie Minn. And together, we're here to share a bit of what we've learned along the way. JOËL: So, Stephanie, what's new in your world? STEPHANIE: So, I picked up a new book from the library [laughs], which that in itself is not very new. That is [laughs] a common occurrence in my world. But it was kind of a fun coincidence that I was just walking around the aisles of what's new in nonfiction, and staring me right in the face was an O'Reilly book, The Staff Engineer's Path. And I think in the past, I've plugged The Manager's Path by Camille Fournier on the show. And in recent years, this one was published, and it's by Tanya Reilly. And it is kind of, like, the other half of a career path for software engineers moving up in seniority at those higher levels. And it has been a really interesting companion to The Manager's Path, which I had read even though I wasn't really sure I wanted to be manager [laughs]. And now I think I get that, like, accompaniment of like, okay, like, instead of walking that path, like, what does a staff plus engineer look like? And kind of learning a little bit more about that because I know it can be really vague or ambiguous or look very different at a lot of different companies. And that has been really helpful for me, kind of looking ahead a bit. I'm not too far into it yet. But I'm looking forward to reading more and bringing back some of those learnings to the show. JOËL: I feel like at the end of the year, Stephanie, you and I are probably going to have to sit down and talk through maybe your reading list for the year and, you know, maybe shout out some favorites. I think your reading list is probably significantly longer than mine. But you're constantly referencing cool books. I think that would probably be a fun, either end-of-year episode or a beginning-of-year episode for 2024. One thing that's really interesting, though, about the contrast of these two particular books you're talking about is how it really lines up with this, like, fork in the road that a lot of us have in our careers as we get more senior. You either move into more of a management role, which can be a pretty significant departure from what you have to do as a developer, or you kind of go into this, like, ultra-senior individual contributor path. But how that looks day to day can be very different from your sort of just traditional sitting down and banging out tickets. So, it's really cool there's two books looking at both of those paths. STEPHANIE: Yeah, absolutely. And I think the mission that they were going for with these books was to kind of illuminate a little bit more about that fork and that decision because, you know, it can be easy for people to maybe just default into one or the other based on what their organization wants for them without, like, fully knowing what that means. And the more senior you get, the more vague and, like, figure it out yourself [laughs] the work becomes. And it can be very daunting to kind of just be thrown into that and be like, well, I'm in this leadership position now. People are looking to me, and I have all this responsibility, but, like, what do I do? Yeah, so I'm kind of enjoying this book, that is...it's not a technical book, which is actually kind of what I like about it. It's actually more of a leadership book, which is really important for that kind of role. Even though, you know, they are still in that IC track, but it does come with a lot of leadership responsibility. JOËL: Yes, leadership in a very different way than management. But—and this may be counterintuitive for some people, especially earlier on in their careers—going further up that individual contributor track doesn't just mean getting more intense technically. It often means you've got to focus on things more like leadership, like being a bit more strategic, aligning technical initiatives with strategic goals. STEPHANIE: Yeah, and having a bigger impact and being a force multiplier, even in both the manager and, like, the staff plus role, like, that, you know, is the thing that ties the rising level. JOËL: Yeah, in many ways, maybe the individual contributor track is slightly misnamed because while, yes, you're not managing a sort of sub-organization within the company, it's still about being a force multiplier. STEPHANIE: Yeah, that's a really great point [laughs]. Maybe we'll be able to come up with a better [laughs] name for that. JOËL: I've mentioned several times on this podcast that I've been enjoying playing Dungeons & Dragons, D&D, with some friends and some colleagues. And something that was particularly fun that some friends and I did this summer is we hired a professional DM to run one shot for us. And that was just an absolutely lovely experience. Well, as a result of that, I am now subscribed to this guy's newsletter. And he'll do, like, various D&D events at different times. One thing that was really cool that I found out recently...as we're recording this, it's the week before election day in the U.S. And because a lot of voting happens in schools, typically, schools have the day off. And so, this guy sent out an email saying he was offering to run a, like, all day...effectively, a little mini-D&D camp for school-age kids on election day so that you can do your work. You can go vote, and you don't have to...basically, he'll watch your kids for you and, like, get them introduced to playing D&D, which I think is just a really cool thing to do. STEPHANIE: I love that. It's so heartwarming [laughs]. And it's such a great idea because, oftentimes, people are still working, and so they need childcare, like, on those kinds of days. And yeah, I think D&D is such a fun thing for kids to get into, too. You know, it requires so much, like, imagination, and I can imagine it's such a blast. JOËL: I got that email, and I was like, that is such a perfect idea. I love it so much. STEPHANIE: I wanted to plug my D&D recommendation. I'm pretty sure I have mentioned it on the show before. But there is a podcast that I listen to called Not Another D&D Podcast, which is, you know, a live play Dungeons & Dragons podcast campaign that's hosted by these comedians, formerly of CollegeHumor, and it's very fun. I always laugh. They have this, like, a kind of offshoot of the main show that they do called D&D Court, which is very fun. Because, as you were saying, like, you know, you hired a DM to run your game. And I know that...I'm sure lots of people have fun stories about their home games and, like, the drama that happens [laughs] with their friends. JOËL: Absolutely. Absolutely. STEPHANIE: And so, with D&D Court, listeners can write in with their drama or their conflicts and get an official ruling from the hosts about who was right [laughs] in the situation that they write in about. JOËL: So, you get to bring your best rules lawyering to the D&D Court. STEPHANIE: Yeah, exactly [laughs]. JOËL: That sounds kind of amazing. Recently, I had someone reach out to me asking about an older blog post that we'd written about the Sandi Metz Rules. This blog post was initially published in 2013, so ten years ago, and was talking about some guidelines that Sandi Metz at the time was talking about that she was using in some of her code. And we talked about how our experience was applying those to some of our work as well. And so, the question was, you know, ten years later, is that still something that thoughtbot developers like to follow in their code? We'll link to the article in the show notes. But I'll just read out the rules here real quick. So, there's four of them. The first one is a class can be no longer than 100 lines of code. The second is a method can be no longer than five lines of code. The third is pass no more than four parameters into a method, and hash options count, so no getting clever with those. And then, finally, controllers can only instantiate one object. You only get one instance variable. And views can only talk to that one instance variable. Had you or are you familiar with these rules? Is that something that you think about or use in your daily writing of code? STEPHANIE: Yeah. So, when you proposed this topic, I had to revisit these rules. And I can't recall if I had seen them before. They seemed familiar. And I've read, you know, a couple of Sandi Metz's books, so maybe those were places where she had mentioned them. But the one thing that really struck me when I was first reading the rules was how declarative they were in terms of, like, kind of just telling you what the results should be without really saying how. So, for example, the one where you said, you know, a method should not be more than five lines [laughs], I had the silly thought of, like, well, you could just, you know, stuff everything into a single line [laughs] and just completely disregard line limit if you wanted, and it would technically still follow the rule. JOËL: If they didn't want us to do that, they wouldn't give us semicolons in Ruby. STEPHANIE: Exactly [laughs]. So, that is kind of what struck me at first. Is that something you noticed? JOËL: I think what is interesting with them is that there's not always a ton of rationale given behind them. Our article talks a little bit about some of the why that might be helpful and how that might look like in practice. I'm not sure what Sandi's original...I don't know if it was one of her books or maybe on a...it might have been on a podcast appearance she talked about them, so she might go more in-depth there. But yeah, they are a little bit declarative. It's just like, hey, here's...it's almost basically the kind of thing that can be enforced by a linter, which is perhaps the point. STEPHANIE: Ooh, that's really interesting. It's like, on one hand, I like how simple they are, right? It's like, they're very obvious. If you're not following them, you can tell. But on the other hand, they seem to be more of a supplement to the gained knowledge and experience that you kind of get from knowing how to implement those rules. I think you and I will both agree that we don't want to stuff everything [laughs] into a single line with semicolons. But if someone who maybe is newer to development and is coming to these rules, I think they might be wondering, like, how do I do this? JOËL: Do you follow these rules in your own code? STEPHANIE: I think the ones that are easier to follow, for me, and that I think I've come to do more instinctually, are the rules about class line length and method line length just because I'm kind of looking out for opportunities to pull out a method or, you know, make sure that this class is just doing one thing. And if it's starting to seem to cover a couple of different responsibilities, I'm a little bit more on the lookout. But I do like these rules as like, you know, like, hey, once you hit, you know, 100 lines in a class, like, maybe that's your cue to start thinking about opportunities for extraction. JOËL: Do you sort of consciously follow these rules or have them maybe even encoded in a linter? Or is it more you're following other things, and somehow, it just lines up with these principles? STEPHANIE: I would say that, like, I'm not thinking about them very actively. But that could be a very interesting exercise, and I think, you know, that's what folks did in the blog post. They were like, hey, we took these rules, and we really kept them in mind as we were developing. But I think kind of what we were talking about earlier about, like, what we've learned or the strategies we've learned to implement kind of converge on these rules. And the rules actually are more of the result of other ideas or heuristics that we follow. JOËL: I mean, you dropped the keyword heuristics there. And I think that brings me back to an earlier episode we did where we talked about heuristics. And one of the things that came up on that episode was the idea that, oftentimes, we use heuristics as a way to sort of flatten a lot of experience and knowledge into sort of one, like, short rule, or short phrase, or something, one guideline, even though it's sort of trying to just summarize a mountain of wisdom. And so, oftentimes, you can look at something like these rules and be like, okay, well, what's the point? Or maybe you even just follow it to the letter without really thinking about the why behind it, and that can sometimes be problematic. And on the other hand, you might know all of the ideas that go behind them. And without necessarily knowing the rule itself, you just kind of happen to follow it because you're intimately familiar with all of these other software principles that converge on those same ideas. STEPHANIE: Yeah, agreed. I think that the more interesting ones to me are the no more than four method arguments and only one instance variable per controller. JOËL: Interesting. STEPHANIE: I'm curious if those are sparking anything for you [laughs]. JOËL: I think the no more than four method arguments, to me, is probably the least controversial. It's generally accepted that having many arguments to a method is a code smell. And there's a few different code smells that are related to that. There's forms of coupling incandescence; there are data clumps, things like that. I've often heard a sort of rule of three. And so, if you're going more than three, then you might want to revisit the structure of what you're building. Four is a bit of an arbitrary cut-off, I'll agree. Most of these are arbitrary cut-offs. But I think the idea to maybe keep your method to fewer arguments is generally a good thing to do. STEPHANIE: I liked that the rule points out that hash options account because I think that's maybe where people get a little more hand-wavy, or you have your ops hash [laughs] that can be just a catch-all for anything. You know, it's like, once you start putting stuff in there, I don't know, I feel like it's a like a law of the universe. It's like, oh, people will just stuff more things in there [laughs]. And it takes obviously more effort or, like, specific energy to, like, think through what those things might represent, or some alternative ways of handling those arguments. We definitely do have, I think, a couple of episodes on value objects. But that's something that we have talked a lot about before in terms of, you know, how can we take some kind of primitive data, hashes included, and turn them into a richer object that can then be passed on its own? JOËL: Right. And an options hash is generally...it's too much of a catch-all to really have an identity as its own sort of value object. It doesn't really represent any single thing. It's just everything else bag of data. One thing that's interesting that the article notes is that a lot of the helpers in Rails take a lot of arguments and that it is absolutely not worth trying to fight the framework to try to follow these rules. So, the article does take a very pragmatic approach, I think, to the idea of these rules. STEPHANIE: Yeah. And I think there is even a caveat to the rules where it's like, you can break them if you have a good reason, or if you're working with someone else and they give you the thumbs up [laughs], which I really like a lot because it almost kind of compels you to stop and be like, do I have a good reason of doing this? Just making sure, or I'll run it by a friend. And shifting that, I guess, that focus from kind of just coding from, like, your default mode of thinking to a more active one. JOËL: Right. There is a rule zero, which says you can break any of the other rules as long as you convince either your pair or your reviewer to give you a thumbs up on breaking the rule. So, you'd mentioned the fourth rule about a single instance variable in a controller kind of was one of the ones that stood out to you. What is particularly striking about that rule? STEPHANIE: I think this one is hard to follow, and I think the blog post mentions that as well. Because at least I've seen our web applications grow more and more complex. And it can be really challenging to just be like, what is this page doing? Like, what, you know, data does it need to know? And have that be the single thing. Because really, a lot of our web apps have a lot of things [laughs] that they're doing, and sometimes it feels like you have to capture more than one object or at least, like, a responsibility in this way. I think that's the one that I, you know, in my ideal world, I'm like, yeah, like, we have all these, like, perfectly RESTful routes. And, you know, we're only dealing with, you know, a single resource. But once you start to have some more complexity, I think that can be a little more challenging. JOËL: I think it's interesting that you mentioned RESTful routing because I think that is maybe one of the bigger things that does trigger having more instance variables in your controller actions. If you're following sort of the traditional Rails RESTful routes, every page is generally focused on a singular resource. Now, that may not necessarily line up with a table in your database, and that's fine. But you're dealing with a singular thing or perhaps, you know, in the case of an index page, a singular collection of things, which can be represented with a single instance variable. Once you start adding custom routes that may not be necessarily tied to a particular resource, now you can very easily kind of have a proliferation of all sorts of different things that interact with each other because you're no longer centered on a single thing. STEPHANIE: Yeah, that's true, which actually reminds me of something we've talked about before, too, when we were both reading Sustainable Rails. The author talks about custom routes and actually advocates for making all routes RESTful. And if you need a vanity URL or something like that, you can always alias it. That I liked, right? It's like, okay, even if, you know, your resource is not something that's like, ActiveRecord-backed, is there some abstraction or concept of a resource in there? And I actually did really like in the blog post in the example; that is one that I've used before, too. They were dealing with this idea of a dashboard, which I would, you know, say is pretty common in a lot of web applications these days. And it's funny because a dashboard can hold so much data, right? It's really, like, a composite of a lot of different things, you know, what is most, like, useful for the user to see in one place. But they were in the blog post. And this, again, this is kind of something that I've done before. They were able to capture that with the idea of, like, a dashboard as an object and that being codified using a presenter or a facade. JOËL: Right. So, instead of having a group, and a status, and a user, and all these, like, separate things that your page that you're showing is a sort of collection of all these different types of objects, you wrap them together in a dashboard object that's kind of a facade. And I guess that really does line up with the idea of RESTful routing because you're likely going to have a dashboard's controller show action that's showing the user's dashboard. So, it makes sense, you know, that show page is rendering a dashboard object. STEPHANIE: Can we talk a little bit about things not to do, or maybe things that might be a little more questionable [laughs], and if you've seen them and how you felt about them? JOËL: I think it is sometimes tricky to define your boundaries right in that sometimes you create a facade object that really is just...it doesn't really represent anything. It's just there to wrap around some other things. And sometimes that can be awkward. I think the dashboard works partly because it lines up so neatly with the sort of RESTful routing and thinking in terms of resources that you want to do at the controller layer. But drawing boundaries incorrectly or just trying to throw everything in some kind of grab bag object can...it's not a magic bullet, right? You've got to put some thought into the data modeling, even when you are pulling the facade pattern. STEPHANIE: Yeah, I think other things that I've seen before that could theoretically follow this rule maybe [laughs], you know, I'd love to hear your thoughts about it. When you start, you're like, oh, like, my controller action method does just, you know, set one instance variable. But it turns out that there's all these other instance variables that either through a hook or, like, in the parent controller or even in the view I've seen before, too [laughs]. And I'm just kind of curious if that kind of raises your eyebrow at all or if you've seen any good reasons for doing so. JOËL: I think setting instance variables in a view would absolutely cause me to raise an eyebrow. STEPHANIE: [laughs] Agreed. JOËL: Generally, don't put logic in the view. I think that we definitely have in parent controllers; we'll set other instance variables for things like maybe a current user, right? That's how we store that state. And I think that is totally fine to have around. Typically, we don't access that instance variable directly. We're referencing some kind of helper method. But yeah, I would not consider that a violation of the rule. I think another common one that might come up is when you have some kind of nested resource. And so, in your URL, you might have a nested resource where you're saying, "Oh, I'm looking at specifically this comment under this article or something like that." And then, you want to have access to both objects in the controller. So, I think that's a pretty common scenario where you might want to have both instance variables. Something that I'm thinking about...this is not a fully formed thought, so I'm curious about your opinions here. Is there an interesting distinction between variables in code that you want to use within a controller versus variables that you want to be accessible from a view? Because instance variables in a controller are kind of overloaded. They're a way of having state in a controller, but they're also a way of passing data into a view. And so, that sort of dual purpose there maybe causes them to be a little bit trickier to reason about than instance variables in a random Ruby object. What do you think? STEPHANIE: Yeah, I was actually having the same thought as you were going there, which is that it is kind of interesting that the view, you know, is that level of what you want to display to your user. But it can have access to, like, whatever you put in the controller [laughs], and that is...and, you know, in some ways, it's like, that connection needs to happen somewhere, right? And it's here. But I think that can definitely be abused sometimes, too. So, this, you know, fourth rule that we're talking about really has to do with a more traditional Rails app. But, again, with the complexity of web apps in 2023 [chuckles], you know, we also see Rails used just as an API a lot with a separate front-end framework. And your controller is rendering some JSON, which I think has that harder boundary between what is the data that the server is involved with and what we want to send to our client. And I'm curious if you have any thoughts about how this rule applies in that situation. JOËL: I think I tend to see not really any difference there. If I'm building an API, typically, I'm trying to do so in a pretty RESTful manner. Maybe I'm doing a GraphQL API, and things might be different for that. But for a traditional REST API, yeah, typically, you're fetching one resource or some sort of compound resource, in which case, you're representing that with a facade object. And yep, you can generally get away, I think, with a single instance variable with, you know, a few exceptions around maybe some extra context about maybe something like the current user, or a parent object, or something like that. I guess the view is really you're using a different mechanism for rendering JSON, and there are a bunch out there that the community uses. I think I don't really see a difference between rendering to HTML versus rendering to JSON, or XML, or whatever. How about you? STEPHANIE: That's a good point. I think I'm with you where the rule still applies. But I have also seen things get really loosey-goosey [laughs] when we decide we're rendering JSON, and now we're suddenly putting the instance variables into a hash along with other stuff. But what you said was interesting about, like, sometimes you do need that extra context, right? And, like, figuring out what the best way to package that requires a bit of, like, sustained thought, I think, because it can, you know, be really easy to be like, oh well, this is the one interface that I have to get data from the server. So, if I just sneak this in here [laughs], what's the matter? But yeah, I think, you know, that's probably why rules like this exist [laughs] to help provide some guardrails and make us think a little deeper about it. JOËL: I think sometimes, as a community, we maybe exaggerate the differences between, like, RESTful HTML view and a RESTful JSON API. I tend to think of them as more or less the same. We just have, you know, a different representation the V layer of our MVC framework. Everything else still kind of lines up. STEPHANIE: Yeah, that's a really good point. I actually hadn't thought about it that way. Because I think maybe I have been influenced by the world of GraphQL [laughs] a little bit, or it's kind of hard to have a foot in both worlds, where you maybe have to context switch a little bit about, like, the paradigms, and then you find them influencing you in different ways. Because I have seen sometimes, like, what maybe initially were meant to be traditional more, like, RESTful JSON APIs kind of start to turn into that, like, how do we get what we need from this endpoint? JOËL: I'm curious how you feel in general about the facade pattern. Is that something that you've used, something that you like? STEPHANIE: I think I would say that I don't actually reach for it, like, upfront, right? Usually, I'm still trying to maybe put some things in my models [laughs]. But I have used it before once; it kind of became clear that, like, a lot of the methods on the model had to do with more really server-side concerns. And I was, like, wanting to just pull out some presentational pieces. I think the hardest part with the facade pattern is naming. I have really struggled sometimes to think of, like, it's not quite the component that makes it up. So, what is it instead? JOËL: Right. Right. I think, for me, sometimes the naming goes the other way around in that I'll start more to kind of, like, routing our resource level and try to think about, okay, this particular view of the data that I want to have, or this particular operation that I want to do, what am I actually dealing with? What is the resource here? So, maybe I'm viewing a dashboard. Or maybe what I'm doing is creating or destroying a subscription, even though those are not necessarily tables in the database. And once I have that underlying concept, then I can start creating an object that represents that, which might be a combination of multiple ActiveRecord models that represent tables. STEPHANIE: Yeah. You're actually pointing out, like, a really great use case that we see a lot, I think, is when you start to have to reach for resources, you know, that are different ActiveRecord classes. And how do you combine them together to represent the idea that you want, you know, for your feature? JOËL: I think it's more of, like, an outside-facing perspective rather than an inside-facing perspective. So, instead of looking at, hey, these are the set of ActiveRecord classes I have because these are my database tables, how can I, like, tack on to them to make this operation work? I'll sort of start almost from, like, a zoomed-out perspective, blank slate to say, "Hey, this is the kind of operation that I'm trying to do. What sort of resource am I dealing with ideally?" And, you know, maybe the idea is, okay, I'm dealing with a dashboard. I'm trying to subscribe to something...a newsletter, so the idea is I'm creating a subscription. Then, from there, I can start looking at, okay, do I have the concept of a subscription in this application? Oh, I don't. There is no subscriptions table because that's not a thing that we track in our data mode. That's fine. But I probably need at least some kind of in-memory object to track the idea of a subscription, and then maybe from there, that grows. So, I'm kind of working from the problem towards the database rather than from the database out. STEPHANIE: Yeah, I like that a lot. The outside-in phrase that you used really triggered something for me, which is being product engineers, right? Like, having a seat at the table when the feature is in that, like, ideation phase, I think is also really important because that's where you really learn what that like, abstraction is at the user level. And also, it could be a really good place to give your input if the feature is being designed in a way that doesn't really support the, you know, kind of quality of code and, like, separation that you would like. That's the part that I'm still working on and still learning how to do. But sometimes, you know, it's, like, really critical to the job to, like, be in that room and be like, these designs; what are some places that we could extract it at that level even? And kind of, like, separate things out from there rather than having to deal with it [laughs] deep in your codebase. JOËL: I think what I'm really kind of hearing and emphasizing in what you just said is the importance of not just writing code but being involved in the product and how that really enriches you because you know the problem domain. And that allows you to then write the code that you need at the different levels of the app to best model the situation you're working with. So, we've kind of gone through all the rules and talked about them. I'm curious, though, for you, are these rules that you follow in your code? How closely do you adhere to this set of rules? Is this still something that's relevant to you in 2023 as much as it was to the authors of that blog post in 2013? STEPHANIE: I have to say they're not ones that I have thought about on a daily basis, but after this conversation, maybe they will be. And I am kind of excited to maybe, like, bring this up to other people on my team and be like, "What do you think about these rules?" Just, like, revisiting them as a group or just, like, having that conversation. Because I think that's, you know, where I am most interested in is, like, is wondering how other people incorporate them into their work and hearing different opinions from the team. And I think there's a lot of, like, generative discussion that ultimately leads to better code as a result. JOËL: I think for myself, I'm not following the rules directly. But a lot of my code ends up approximating those rules anyway because of other principles that I follow. So, in practice, while my code doesn't strictly follow those rules, it does look pretty close to that anyway. STEPHANIE: I almost think this could be a great, you know, discussion for your team, too, like, if any listeners want to...not quite a book club but kind of an article club, if you will [laughs], and see how other people on your team feel about it. Because I think that's kind of where there is, like, a really sweet spot in terms of learning and development. JOËL: On that note, shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions.

Crazy Stupid Podcast
Crossroads

Crazy Stupid Podcast

Play Episode Listen Later Nov 2, 2023 115:55


Chimes, chismes, chismes! Leímos el libro de Britney y con todo el hype teníamos que regresar a 2002 y revisar el debut en la actuación de la princesa del pop. No se pierdan un completo analices a la vida de la cantante a través de su película "Crossroads" y su best seller literario, Britney Spears: La mujer que soy". Además Divas del Corazón revisaremos la incursion en la actuación de otras Divas Musicales como Madonna, Lady Gaga, Jlo, Christina Aguilera y Mandy Moore. --- Send in a voice message: https://podcasters.spotify.com/pod/show/crazystupidpodcast/message

Giant Robots Smashing Into Other Giant Robots
498: RubyConf San Diego with Chelsea Kaufman and Allison McMillan

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Nov 2, 2023 35:07


In this episode, the focus is on RubyConf, the upcoming conference dedicated to the Ruby programming language. They start by talking about the origin and evolution of RubyConf, highlighting its growth in attendance and its impact on the Ruby community. Chelsea details how the conference has adapted to the digital format due to the COVID-19 pandemic but points out the value of in-person connections. They are looking forward to the Community Day event, which will feature various activities to encourage community interaction and an acknowledgment of scholarships that would help more people attend. The event will offer various programming options, workshops, and talks to cater to newcomers and seasoned professionals. There will also be some level of hands-on learning through hacking activities. The conference aims to be inclusive, offering opportunities for mentorship and growth, regardless of one's career stage. Towards the end, the discussion shifts to Ruby Central, the organizing body behind RubyConf and RailsConf. Chelsea and Allison describe multiple avenues for community engagement, ranging from board membership to open-source contributions. They also encourage donations and corporate sponsorships. Don't miss your chance to register for RubyConf and engage with the fantastic Ruby community! RubyConf (https://rubyconf.org/) Follow RubyConf on LinkedIn (https://www.linkedin.com/company/ruby-central-inc/), X (https://twitter.com/rubyconf), YouTube (), or Mastodon (https://ruby.social/@rubyconf). Learn Academy (https://learnacademy.org/) Follow Learn Academy on Facebook (https://www.facebook.com/LEARNSD/), X (https://twitter.com/SDLEARN), LinkedIn (https://www.linkedin.com/school/sd-learn/), or Instagram (https://www.instagram.com/sdlearn/). Follow Chelsea Kaufman on LinkedIn (https://www.linkedin.com/in/chelskaufman/) or X (https://twitter.com/ChelsKaufman). Follow Allison McMillan on LinkedIn (https://www.linkedin.com/in/apmcmillan/) or X (https://twitter.com/allie_p). Visit her website at daydreamsinruby.com (https://daydreamsinruby.com/). Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: 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, Victoria Guido. And with me today is Allison McMillan and Chelsea Kaufman, Board Directors, and RubyConf '23 Co-chairs. Thank you for joining me. ALLISON: Hi, thanks for having us. CHELSEA: Thanks for having us. VICTORIA: Yes, I'm glad that you were able to make time to come on the show today. I understand, Allison, that you've been having very full weeks with family over the last month. Do you want to tell us a little bit more about that? ALLISON: Yeah, it's...we have just ended what I call the gauntlet of Jewish holidays. But, basically, there are four Jewish holidays starting with Rosh Hashanah, which many folks know that's the Jewish New Year. But what a lot of folks don't know is that there are actually four holidays that are all in a row, each about a week apart. And you do different celebratory things for each of them. And so, it's been really amazing and fun, and lots of, like, sharing our home with others and meals and seeing lots of people. But it is also exhausting. And they basically all fell on weekends this year, which was nice from sort of a scheduling perspective but was exhausting in the fact that I basically have not had a weekend in over a month. So, it was wonderful and tiring. And I am, I guess, both happy and sad that they're over now. VICTORIA: Yeah, that does sound like a lot of quality family time, which has its pros and cons [laughs], right? So, after going through that, do you feel more rested? Or what do you feel like you need to do in order to recuperate and return to your normal energy levels after having every weekend full after that? ALLISON: Oh, that's a great question. I've been looking at my calendar to be like, I should take a day off. I should take a break. I'm working for myself and [inaudible 02:02] entrepreneur consultant. So, I do have the flexibility to do so, but it is hard to look at my calendar and be like, yes, I will take this day off because I deserve it. But, ideally, I would take a day or multiple days off. VICTORIA: Yes. And some of us are lucky enough to have a reason to travel for work purposes and to sneak in a little vacation and be productive [laughs] in our companies. So, I'm curious, Chelsea, if you can tell me a little bit about the option for people to come to San Diego in November and take a restful vacation by the beach and learn a little bit more about Ruby. CHELSEA: Yeah, so RubyConf will be in San Diego this year. As a native San-dieagan, I am a bit biased, but November is a beautiful time to be in San Diego. And we're going to be at the Town and Country, which feels a little bit like we're going to be in a, like, Palm Springs resort. They just went through a major renovation. And there's these really awesome, like, lounge areas with fire pits and just places for people to gather, which really kind of aligns itself with some of the stuff that we're planning because we're really trying to focus in on just connecting Rubyists together. So, to me, it feels like the perfect place because I think San Diego is, one, we're a little bit more low key, a little chill. And it's a great place to just gather and connect and share with people that have, you know, similar interests. VICTORIA: Yes, I live in San Diego now, but I was from Washington, D.C., And I would come and visit my family in San Diego once a year. And they would always go on about how great it is and how beautiful, and everyone is so happy and chill. And I was like, sure, whatever. And then we [chuckles] had the opportunity to move here, and now I'm one of those people who says that [laughs]. Like, it's great, especially in November. Everywhere else is getting a little cold and fall. And San Diego has a little bit of fall, but it's still 75 degrees out. I forget what that is in Celsius. But yes, I'm also super excited. CHELSEA: We have, like, fake fall activities that you can go do. Like, Allison, when you're talking about doing all the family activities and things like that, you know, this is when we start thinking about, oh, we need to go to, like, the pumpkin patch and apple picking and do all these things, but it's not cold or, like, fall weather at all. So, you want to get all, like, bundled up in your cute fall clothes or, like, put my kids and bundle them up in cute things. But then they're, like, sweating and trying to do [laughs] all these funny activities. But I think that there's so many beautiful things to do here that we, like, try and do these, like, fall activities. But then we just end up at the beach and play in the sand [laughs]. VICTORIA: Yeah, I will go out in, like, shorts and a T-shirt because it's that kind of weather. And my neighbors will be wearing full puffy jackets and [laughs], like, long pants and a hat. And they're like, "You're not from around here, are you?" [laughs]. It's like, you guys are silly. But it's fun. Yeah, there's seasons, I think, you know, in November...I made a list of suggested activities for my team members since thoughtbot is sponsoring RubyConf this year. And we're going to have a couple of speakers at the event. And we'll have other thoughtboters available at our booth for people to come up and chat with us. So, I'm really thrilled to be hosting everyone. And I made a list of, like, activities, and most of them were about where to see cool animals [laughs]. I was like, of course, there's the zoo, which is the obvious one, but then there's baby leopard sharks, and there's a season for them. I think they will still be around in November; I'm curious if you know, Chelsea, actually. And then there's, like, the safari parks, and whale watching, and the sea lions at La Jolla and, like, just a bunch of cool animals to see that I think it makes San Diego really special. CHELSEA: I agree. The zoo, the safari park are great places to just hang out and see some really cool exhibits. Balboa Park, the museums there are amazing. Liberty Station is one of my favorite places to go; that it's an old historic naval training center that's been converted into an arts and culture area. So, they have, like, little shops. They have...there's museums. There's brew pubs. There's coffee shops. And then there's beautiful, like, grassy areas, and right by the water, it's one of my favorite places to just go and hang out. ALLISON: This is great. I've done zero research on San Diego so far. So, just, like, I'm writing notes of what things to do and see while I'm there. CHELSEA: Yeah, I know the San Diego Ruby group is trying to put together some, like, local events and things that people can gather and do together. I know that there was a talk about doing a taco crawl. I think if I say that on the podcast, it might actually push them to do it because there are some amazing tacos in San Diego to be had. VICTORIA: Yes, I love that taco crawl. I'll reach out to them because I'll help put something like that together. I'm writing a blog post right now about all of these things and about all the other kind of events that are coming up in San Diego this fall. Great location, great time of year to be here. Tell me a little bit more about RubyConf specifically. And what are you all trying to do different this year than in past events? ALLISON: There are a bunch of things that we're doing differently. Our goal this year with this RubyConf is really to sort of focus on more ways to bring the community together. I think in the last little bit so much excitement around Ruby and Ruby Central and just sort of the community in general. It's a hard time in tech. I think people need to be sort of choosier about sort of what they attend and why they're attending something. And so, we really wanted to help folks connect with each other, help folks get to know other people, help folks sort of reconnect to ways that they love Ruby and the Ruby community and being a Ruby programmer. So, one of the things that we're doing differently is we have a three-day conference. And the way that that sort of broken down is the first day is a Community Day. And the first day is comprised of the workshops, as well as sort of this Hack Day, where people can bring their own projects. We're going to have people there that folks can hack with, sort of open-source projects that folks can work on, all sorts of different stuff. So that people can really sort of get to know one another, work with one another, work with people that they might, you know, admire or have followed in the community for a while, and have that sort of really special experience that doesn't feel as conference-y, right? It feels a little bit more sort of organic in terms of the way that the day will flow and, the options that people have, and sort of what that day looks like. And then following that, we have two days of sort of RubConf with talks and speakers, et cetera. And I'll let Chelsea add anything to Community Day and then also jump into some of the sort of new and different things we're doing at RubyConf. CHELSEA: I agree with Allison in that we've really wanted to focus in on the connection side of things. But I think coming out of the last few years, out of even the last year that's been tough in the industry, just finding ways for people to connect, support, lift up each other, I think that that was something we really wanted to do. And we didn't want it to just be about going and seeing speakers. We wanted to find more ways for people to learn from each other, to connect. And so we added in quite a few of these community connection points. So, on that first day, there's a lot of community aspects to it. We have a lot of learning happening with our workshops and also working on projects, hacking together, showing off what you're working on, connecting with people in the community. It's going to be really focused in on everyone's own skills and talents and coming together and supporting each other in where we're at in our careers, in our learning. And then, the next couple of days will look a little bit familiar in the way that it is structured with some new aspects kind of woven in. We'll have our Community Room, where we're bringing different community groups together so that people can learn more about what is going on in the community, how they can support, how they can connect. And in addition to seeing and learning about some of the new things happening in the Ruby community, we'll also have our Career Pathways room again, which will be a place for people to support their own careers. And that room was really set up so that it wasn't just about early career, but also about folks in their mid and senior careers, and finding the advice, finding the resources, finding the mentorship that they might need in whatever stage of their career that they're at, and figuring out how we can together as a community grow as a whole. VICTORIA: I really appreciate the focus on community. And, for me, as managing director at thoughtbot, in deciding to invest in which conferences we want to attend and sponsor, we find more value in groups that are trying to bring people together around a common passion and purpose versus a particular product. But I'd like to hear from each of you if you can tell me, what does the community mean to you? And I'm looking for, like, a personal story on how you've benefited or how you've engaged with the Ruby community in the past. And what makes you motivated as CEOs and founders of your own companies [laughs] to spend all this time organizing a conference? ALLISON: Many, many, many years ago, I did a Rails Girls workshop. It was actually my first introduction into the tech community, into programming in general. And, for me, really, I did Rails Girls. I did not actually expect to like programming. But I was sort of launching a startup, and I wanted to learn more about tech and blah, blah, blah. And at the end of the day, I was, like, so energized and so excited about what I had built and what I had done. The Ruby community in D.C., who I always think is just a group of really special individuals, was so supportive, was so wonderful, was so, like, "Here's where we co-work on Wednesdays. Come to this coffee shop. Here's how you can keep learning," just was so encouraging. You know, I went to the local Ruby meetup sort of really not knowing anything. And they were excited about, you know, newbies being there and asking questions and, you know, really sort of getting to know folks who are just starting out in their programming journey. And really, through that, I mean, I went to my first RubyConf as a scholar. Was strongly encouraged to do a lightning talk, did a lightning talk. That's how I, you know, sort of ended up having a whole bunch of informational interviews and having conversations with folks. And really, that's how I got my first real job in tech. And so, you know, I want people that are coming into the industry now to have that same support, to have those same opportunities, to have that same encouragement. And, for me, sort of planning RubyConf, planning these conferences, being a part of Ruby Central is really me giving back to the community that has gotten me to where I am today, right? And it's amazing, also, to just...I'm still in touch with the people that were at my table, sort of guiding and mentoring at that first Rails Girls session or the people who I met at the first-ever Ruby meetup that I went to. I still talk to them. I'm still in touch with them. We still get together. I still ask them for, you know, advice and guidance sometimes. And sometimes, they ask me, at this point, for advice and guidance, which is fun. But yeah, it just means so much to me that I have really been able to get to where I'm at because of the support and encouragement of the community. CHELSEA: I have a similar story. I guess over, gosh, over a decade ago, I also went to my first RailsBridge and got introduced to the community there at RailsBridge. And, you know, at the time, I wasn't in tech. I was in the theater. I come from the performing arts. I had spent a very long time executive leadership in the theater. And I got introduced to this community that was so warm and welcoming to people wanting to learn and grow. And I was so interested in how communities are built and how people connect together that I started getting more and more involved in the Ruby community here in San Diego. And just like Allison was saying about the welcoming and warmth that she felt from the D.C. community, I felt the same way here in San Diego. Before that, you know, I had spent so many years being the only woman in a room. I had been in an industry that made me feel like my voice was not always heard. And when I walked into this room, I felt like I mattered. I felt like people wanted to hear what I had to say. And they wanted to learn from my experiences. And in 2014, San Diego hosted RubyConf here. And at that point, my business partner and I launched our business, LEARN Academy, and it's still running strong today. But it was about creating that on-ramp for people and a launchpad into this industry where they could make a difference and they could have their voice heard. And they could be a part of a conversation, even if they hadn't been a part of that community for many, many years, that their background mattered, that their growth mattered. And helping people find their voice at a table is something that is so important to me that I love being able to bring that into the planning of this conference, into a lot of the work that I've done with Ruby Central, with LEARN academy. And really just helping people understand that just because you don't have the traditional background, maybe you didn't start programming at the age of two, you can have a different background and a different path and still provide so much value. And I think that that is the thing that I wanted to continue to be a part of and to make sure was a part of the conversation, that we need so many different types of people at the table. And I want to make sure that our community is responsive to that, that it's inclusive to that, that it's equitable as best we can, and just allows people to share their own experiences. And so, you know, I feel like, for me, we're, you know, almost at our 10-year mark at LEARN academy and that we were launching the company at RubyConf in 2014. To have it here again this year is so special to me. I remember being at the conference many years ago; you know, we spend a lot of time helping companies figure out how to work with early-career developers and to create those pipelines for them so that there's career growth for them. And, you know, I remember sitting around the table and just saying, "Hey, who wants an internship? Who wants to, you know, help these early-career developers?" And everyone raised their hand, and we found some of our very first partners at that conference. And it's always been such a warm and welcoming community that has allowed me to feel like I have a voice and then allows me to help other people find theirs. VICTORIA: Wow, thank you both for sharing that. I totally relate to that feeling of a welcoming community and just getting the sense that, like, wow, everyone who does Ruby is really nice [laughs]. And I think that you know, for me, same as Allison, starting in D.C., there were quite a few people who were involved in Women Who Code who were running Ruby meetups. And that's where I met Valerie Woolard, who I think is also coming to San Diego for RubyConf. I'm excited to see her again. And it's interesting for me coming from that perspective and hearing that from both of you because I've also heard a viewpoint on Ruby community as being highly opinionated and causing certain amounts of consternation. So, I'm curious if you have any comments on that. If not, otherwise, I'm grateful that there are people working to bring that better community in the community that I'm more familiar with more to the forefront and making it more inclusive and open for everyone. So, to, like, bring the question all the way back, it's like [chuckles], do you have any comments on, like, if there's a tendency for Rubyists to be really highly opinionated? Or what else can we do to make it more open and inclusive for people to join the community? CHELSEA: I mean, I think that people are going to be opinionated about something that they care a lot about. And I think that the thing that I've noticed in the Ruby community is people love this language. They love programming in this language, and I think that there's something very powerful about that. And it does, you know, lend itself to people [laughs] having very strong opinions about what they think needs to be out there. And, to me, it's not a matter of, like, whether we have strong opinions or not. It has more to do with whether we're listening or not. But I think it's really important for those of us who are leading to be the listeners, and that we should be there to make sure that there is space for people to be heard, whether their opinion is loud or not. And I think that there are people that are going to be louder than others; that is going to be true no matter where we go. But I think that as long as there is intention around making sure that we are listening to even the quietest voices and that we are creating space for the quietest voices, that's where we're going to find more collaboration. But if we're only going out there and saying, "This is the way it needs to be," and we're not willing to listen to anything else, then I think that growth will stop happening because we need to listen to everyone. We need to be able to create some kind of place for people to come together and share ideas; you know, you don't get the perspectives of all these amazing people in the industry. So, that's why I feel like, you know, I've been on the board at Ruby Central for about a year now, and the biggest thing that I feel like I can contribute is to simply listen. If I can help in any way of filtering ideas or creating connections with people because I've been putting my ear to the ground and saying, "Okay, these people are talking about this, and we're expanding here." And we just want to make sure that we're doing the best we can at being open to all different kinds of ideas and not closing anyone off. Maybe your opinion is really strong. It doesn't mean that we should shut you down. It just means that we need to make sure that there's space for other people, too. And I think that that's the part that, you know, as someone who has always been a bit of an introvert, a bit of a wallflower, I understand how hard it is to get my voice out there. And so, I often fight for the quiet people. I think in every language and any space where it's a craft, it's something that we're creating, people get really passionate about it. And that's going to happen. And I think there's something powerful in that because there's going to be change that happens from that. But if we're not doing our part in the listening and making sure that there isn't just one voice, that there's a collective voice, that's the part that I felt so powerful when I joined the community so many years ago was that, even though I had, you know, months of experience, my questions mattered. And as long as we hold on to that, the community will continue to grow. But those of us at Ruby Central and some of the other organizations, if we're creating space to allow people to question, allow people to speak their opinions and listen, then I think that the industry, the community will just continue to thrive because of that. But we have to be open, and we have to be compassionate when we're doing our listening. ALLISON: Yeah, I agree with all of that. And I would just add in safe places, in a way that we're creating sort of safe structures and safe places for folks to communicate. MID-ROLL AD: Are your engineers spending too much time on DevOps and maintenance issues when you need them on new features? We know maintaining your own servers can be costly and that it's easy for spending creep to sneak in when your team isn't looking. By delegating server management, maintenance, and security to thoughtbot and our network of service partners, you can get 24x7 support from our team of experts, all for less than the cost of one in-house engineer. Save time and money with our DevOps and Maintenance service. Find out more at: tbot.io/devops. VICTORIA: What, if you could tell me, what does Ruby really have going for it? Like what makes Ruby a good choice for tech founders or for new companies would make someone decide they want to build with Ruby? ALLISON: First, it's a little bit about just sort of the ease of the language to jump into and to understand, right? There's a lot that you can get done very quickly with Ruby and Rails. And in addition to sort of individuals being able to work in it, there's a whole community of resources, and support, and podcasts, and tutorials, and all sorts of stuff. I know that as an engineering leader at any company, when engineers are coming to me with, like, the desire to use a new language or try something new, part of what I look at is, if I'm going to hire, like, what would hiring look like? What does it look like for engineers to have to ramp up in this area? How long does that take? What resources are available? What sort of community am I pulling from and looking at? And that's both community in terms of sort of technical experience, expertise, years, et cetera, but also non-technical skills, right? What does the community look like in terms of some of those ideals around communication, collaboration, just sort of general pieces like that? And so, I think that, given sort of the strength of open source, strength of community, community contributions, ways to contribute, etcetera, I think that's one of the reasons that it still makes Ruby a really strong choice for folks to build in and to work with. VICTORIA: What type of people, what personas do you think will be the most interested in attending RubyConf? Is it all just going to be, like, senior or super Ruby developers, or what? CHELSEA: Oh, I don't think so. I mean, this RubyConf, in particular, is great for anyone on a learning journey. We've worked really hard to make sure there's a good breadth of programming for different folks in different stages of their careers. I think that, you know, those of you that are maybe earlier on there, this is a great opportunity to meet people who are maybe even a step or two ahead of you. I think that the best mentorship that you can find is someone who is only maybe a year ahead of you because they're going to recognize where you're at and help you along the way. And I think that there's a lot of opportunities here for that. I think that with our Community Day, the hacking that's going to be involved, like, maybe, as a new developer, you wouldn't be able to come in and, like, get your hands really dirty. But you'll get to sit next to somebody who has been through all the different stages and get to watch, and explore, and learn. I think that making those connections could be really great for anyone's career. I think that our mid-level developers, folks that are our management, there's great resources for them to connect with other developers in similar stages. There's great workshops. Because of our focus on the community, I think that it's going to be a place where you can really connect with other Rubyists. And so, if you are at a stage in your career that you want to figure out what that next spring is, where that next ladder step is, this is a good place to see all the different options because you're going to be surrounded by people in all different stages of their careers. And what we've, I think, said now quite a few times is so many people there are just so excited to help people continue that growth. And so, I think that no matter what stage you're in, you're going to find people there that are excited to help you along the way. That being said, I think for our more senior, more advanced, our executive leadership, this is going to be a great place to, one, meet some really great talent, and, two, I think, learn from other folks in the industry of, like, where people are at, what we're struggling with, and how we're changing and doing things differently. So, I really do think there's going to be a little bit of everything for people. And what I love about that is really that it gets to the core and heart of the Ruby community because we're so excited about new folks coming in that that growth continues, that you have folks like Allison who started out as a scholar and want to give back. And then because we have folks at all those different stages, you can find people that are, you know, maybe a step or two ahead of you that are going to be able to help bring you up to that next level. So, I think it's an exciting opportunity for people to really meet new people, learn some new things, maybe find a little bit of encouragement, empowerment on where you're going to go next on your career. VICTORIA: Yeah, absolutely. And it reminds me of an article I read while I was at RailsConf earlier this year about why we do conferences and what's the whole point. And, you know, for me, all of those things are true, like, all those values. As an executive, I'm going to meet a lot of great talent. I'm going to connect with other companies. I'm just going to get to show up and say hi to people and ask them questions in a way that's very informal. And that's so valuable to have that. I think where I was going to go next with this was with Ruby Central, which I believe organizes both RailsConf and RubyConf. (And you can correct me if I'm wrong on that.) I'm curious if there are anything else you want to talk about with, like how the community can engage in support and how other companies could get involved with the community and show their support. CHELSEA: I think that there's quite a few different ways for folks to get involved. We are currently recruiting board members. We just finished a round just now. But I know that in our planning, that we're likely going to bring on at least one, maybe two more, in the next six months. So, I definitely...for folks in the community that want to get involved, that is a really great place to really get involved with Ruby Central. We also have a really strong open-source community. And we're working, oh gosh, with quite a few different companies now that are really helping to support our open-source efforts. And those are also good ways to get involved. You know, we do plan both RailsConf and RubyConf. RailsConf will be in the spring again. And, you know, it takes a village to put on a conference like this and that, you know, we also look for programming committee members to help us shape the program of the conferences. So, if you are interested in any of that, that's also another great way to get involved in the community. We have an amazing programming committee that's helped us with RubyConf. And I'm excited to see what we do next with RailsConf. And I think that you know if you're one that's going to the conference and are saying, "Man, I wish that they would do this," or "I wish I could see that," come and talk to us because that's the best way for us to learn, that we want to hear all of those pieces. But don't be surprised if we then send you an email and say, "Hey, you want to be on our programming committee with us?" ALLISON: I'll add that we also, through our website, we take donations. So, if you want to help monetarily, there's the option to do that on the website. And if you're a company, I mean, we're always looking for conference sponsorships. But if your company also is interested in getting involved in sort of more of a corporate sense of sponsoring or supporting Ruby Central, we are always open to those conversations. You can send an email to contact@rubycentral.org. VICTORIA: That's great. I have a fun question about the conference because I'm leading the event with thoughtbot since I live here. And I'm thinking about some fun swag to give away. Rank your preferences on what kind of swag you'd like to see at the thoughtbot sponsor booth: a thoughtbot-branded surfboard or, a boogie board, a bucket hat, or a pickleball paddle. Any of those interesting for you? ALLISON: Wait, when you say surfboard, like, how am I going to get a surfboard back to D.C.? [laughter] VICTORIA: Okay. I think it's, like, kind of funny because if you win it, it's like, well, what do you do? [laughter] You got to shake it back. That sounds like maybe a boogie board. CHELSEA: Yeah, I'm down for a boogie board. VICTORIA: Thank you so [laughs] much for entertaining me on that one. Is there anything else that you would like to promote today? ALLISON: We would love to see everybody at RubyConf. You can register. Check out the program speakers, et cetera, at rubyconf.org. You can learn more about Ruby Central at rubycentral.org. Those are, I think, the two things that we'd love to make sure everybody knows about. CHELSEA: And if you're here in San Diego, come say hello. VICTORIA: Yes, I have met up with a few random people from the internet [laughs] who have said like, "I'm in San Diego. Who should I say hi [inaudible 34:02]?" I was like, "Me, me, me," [laughter]. So, yes, I'm very happy to meet up for drinks. Chelsea, you and I will have to get together sometime soon before the conference. And I'm super excited for RubyConf. And thank you both so much for being here today. ALLISON: Thanks for having us. CHELSEA: Thank you. VICTORIA: You can subscribe to the show and find notes along with a complete transcript for this episode at giantrobots.fm. If you have questions or comments, email us at hosts@giantsrobots.fm. And you can find me on Twitter @victori_ousg. This podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. Thanks for listening. See you next time. AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions. Special Guests: Allison McMillan and Chelsea Kaufman.

The TMZ Podcast
Taylor Swift & Brittany Mahomes' Cringe BFF Handshake

The TMZ Podcast

Play Episode Listen Later Oct 23, 2023 17:45


Taylor Swift attended her fourth Kansas City Chiefs game on Sunday night. Taylor cheered on her new beau alongside her new game bestie Brittany Mahomes, and the two even had a secret handshake for touchdowns. The romance between Tom Brady and Irina Shayk has reportedly fizzled out. Ryan Reynolds and Mandy Moore are calling out SAG-AFTRA for their ridiculous Halloween rules this year. Plus, a con man in Spain avoided paying his bill at several restaurants by faking heart attacks. Hosts: Charlie Cotton & Edward Lewis Learn more about your ad choices. Visit megaphone.fm/adchoices

Gary and Shannon
(10/23) GAS Hour 2 - SAG AFTRA

Gary and Shannon

Play Episode Listen Later Oct 23, 2023 26:43 Transcription Available


Ryan Reynolds and Mandy Moore make fun of SAG-AFTRA after the union issue 'strike-friendly' Halloween costume rules. A man has been found dead and women is missing in a California State Park. Governor Gavin Newsom visited Irael over the weekend before heading to China to discuss climate change.

Giant Robots Smashing Into Other Giant Robots
497: Axiom with Seif Lotfy

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Oct 19, 2023 39:13


Victoria is joined by guest co-host Joe Ferris, CTO at thoughtbot, and Seif Lotfy, the CTO and Co-Founder of Axiom. Seif discusses the journey, challenges, and strategies behind his data analytics and observability platform. Seif, who has a background in robotics and was a 2008 Sony AIBO robotic soccer world champion, shares that Axiom pivoted from being a Datadog competitor to focusing on logs and event data. The company even built its own logs database to provide a cost-effective solution for large-scale analytics. Seif is driven by his passion for his team and the invaluable feedback from the community, emphasizing that sales validate the effectiveness of a product. The conversation also delves into Axiom's shift in focus towards developers to address their need for better and more affordable observability tools. On the business front, Seif reveals the company's challenges in scaling across multiple domains without compromising its core offerings. He discusses the importance of internal values like moving with urgency and high velocity to guide the company's future. Furthermore, he touches on the challenges and strategies of open-sourcing projects and advises avoiding platforms like Reddit and Hacker News to maintain focus. Axiom (https://axiom.co/) Follow Axiom on LinkedIn (https://www.linkedin.com/company/axiomhq/), X (https://twitter.com/AxiomFM), GitHub (https://github.com/axiomhq), or Discord (https://discord.com/invite/axiom-co). Follow Seif Lotfy on LinkedIn (https://www.linkedin.com/in/seiflotfy/) or X (https://twitter.com/seiflotfy). Visit his website at seif.codes (https://seif.codes/). Follow thoughtbot on X (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: 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, Victoria Guido, and with me today is Seif Lotfy, CTO and Co-Founder of Axiom, the best home for your event data. Seif, thank you for joining me. SEIF: Hey, everybody. Thanks for having me. This is awesome. I love the name of the podcast, given that I used to compete in robotics. VICTORIA: What? All right, we're going to have to talk about that. And I also want to introduce a guest co-host today. Since we're talking about cloud, and observability, and data, I invited Joe Ferris, thoughtbot CTO and Director of Development of our platform engineering team, Mission Control. Welcome, Joe. How are you? JOE: Good, thanks. Good to be back again. VICTORIA: Okay. I am excited to talk to you all about observability. But I need to go back to Seif's comment on competing with robots. Can you tell me a little bit more about what robots you've built in the past? SEIF: I didn't build robots; I used to program them. Remember the Sony AIBOs, where Sony made these dog robots? And we would make them compete. There was an international competition where we made them play soccer, and they had to be completely autonomous. They only communicate via Bluetooth or via wireless protocols. And you only have the camera as your sensor as well as...a chest sensor throws the ball near you, and then yeah, you make them play football against each other, four versus four with a goalkeeper and everything. Just look it up: RoboCup AIBO. Look it up on YouTube. And I...2008 world champion with the German team. VICTORIA: That sounds incredible. What kind of crowds are you drawing out for a robot soccer match? Is that a lot of people involved with that? SEIF: You would be surprised how big the RoboCup competition is. It's ridiculous. VICTORIA: I want to go. I'm ready. I want to, like, I'll look it up and find out when the next one is. SEIF: No more Sony robots but other robots. Now, there's two-legged robots. So, they make them play as two-legged robots, much slower than four-legged robots, but works. VICTORIA: Wait. So, the robots you were playing soccer with had four legs they were running around on? SEIF: Yeah, they were dogs [laughter]. VICTORIA: That's awesome. SEIF: We all get the same robot. It's just a competition on software, right? On a software level. And some other competitions within the RoboCup actually use...you build your own robot and stuff like that. But this one was...it's called the Standard League, where we all have a robot, and we have to program it. JOE: And the standard robot was a dog. SEIF: Yeah, I think back then...we're talking...it's been a long time. I think it started in 2001 or something. I think the competition started in 2001 or 2002. And I compete from 2006 to 2008. Robots back then were just, you know, simple. VICTORIA: Robots today are way too complicated [laughs]. SEIF: Even AI is more complicated. VICTORIA: That's right. Yeah, everything has gotten a lot more complicated [laughs]. I'm so curious how you went from being a world-champion robot dog soccer player [laughs] programmer [laughs] to where you are today with Axiom. Can you tell me a little bit more about your journey? SEIF: The journey is interesting because it came from open source. I used to do open source on the side a lot–part of the GNOME Project. That's where I met Neil and the rest of my team, Mikkel Kamstrup, the whole crowd, basically. We worked on GNOME. We worked on Ubuntu. Like, most of them were working professionally on it. I was working for another company, but we worked on the same project. We ended up at Xamarin, which was bought by Microsoft. And then we ended up doing Axiom. But we've been around each other professionally since 2009, most of us. It's like a little family. But how we ended up exactly in observability, I think it's just trying to fix pain points in my life. VICTORIA: Yeah, I was reading through the docs on Axiom. And there's an interesting point you make about organizations having to choose between how much data they have and how much they want to spend on it. So, maybe you can tell me a little bit more about that pain point and what you really found in the early stages that you wanted to solve. SEIF: So, the early stages of what we wanted to solve we were mainly dealing with...so, the early, early stage, we were actually trying to be a Datadog competitor, where we were going to be self-hosted. Eventually, we focused on logs because we found out that's what was a big problem for most people, just event data, not just metric but generally event data, so logs, traces, et cetera. We built out our own logs database completely from scratch. And one of the things we stumbled upon was; basically, you have three things when it comes to logging, which is low cost, low latency, and large scale. That's what everybody wants. But you can't get all three of them; you can only get two of them. And we opted...like, we chose large scale and low cost. And when it comes to latency, we say it should be just fast enough, right? And that's where we focused on, and this is how we started building it. And with that, this is how we managed to stand out by just having way lower cost than anybody else in the industry and dealing with large scale. VICTORIA: That's really interesting. And how did you approach making the ingestion pipeline for masses amount of data more efficient? SEIF: Just make it coordination-free as possible, right? And get rid of Kafka because Kafka just, you know, drains your...it's where you throw in money. Like maintaining Kafka...it's like back then Elasticsearch, right? Elasticsearch was the biggest part of your infrastructure that would cost money. Now, it's also Kafka. So, we found a way to have our own internal way of queueing things without having to rely on Kafka. As I said, we wrote everything from scratch to make it work. Like, every now and then, I think that we can spin this out of the company and make it a new product. But now, eyes on the prize, right? JOE: It's interesting to hear that somebody who spent so much time in the open-source community ended up rolling their own solution to so many problems. Do you feel like you had some lessons learned from open source that led you to reject solutions like Kafka, or how did that journey go? SEIF: I don't think I'm rejecting Kafka. The problem is how Kafka is built, right? Kafka is still...you have to set up all these servers. They have to communicate, et cetera, etcetera. They didn't build it in a way where it's stateless, and that's what we're trying to go to. We're trying to make things as stateless as possible. So, Kafka was never built for the cloud-native era. And you can't really rely on SQS or something like that because it won't deal with this high throughput. So, that's why I said, like, we will sacrifice some latency, but at least the cost is low. So, if messages show after half a second or a second, I'm good. It doesn't have to be real-time for me. So, I had to write a couple of these things. But also, it doesn't mean that we reject open source. Like, we actually do like open source. We open-source a couple of libraries. We contribute back to open source, right? We needed a solution back then for that problem, and we couldn't find any. And maybe one day, open source will have, right? JOE: Yeah. I was going to ask if you considered open-sourcing any of your high latency, high throughput solutions. SEIF: Not high latency. You make it sound bad. JOE: [laughs] SEIF: You make it sound bad. It's, like, fast enough, right? I'm not going to compete on milliseconds because, also, I'm competing with ClickHouse. I don't want to compete with ClickHouse. ClickHouse is low latency and large scale, right? But then the cost is, you know, off the charts a bit sometimes. I'm going the other route. Like, you know, it's fast enough. Like, how, you know, if it's under two, three seconds, everybody's happy, right? If the results come within two, three seconds, everybody is happy. If you're going to build a real-time trading system on top of it, I'll strongly advise against that. But if you're building, you know, you're looking at dashboards, you're more in the observability field, yeah, we're good. VICTORIA: Yeah, I'm curious what you found, like, which customer personas that market really resonated with. Like, is there a particular, like, industry type where you're noticing they really want to lower their cost, and they're okay with this just fast enough latency? SEIF: Honestly, with the current recession, everybody is okay with giving up some of the speed to reduce the money because I think it's not linear reduction. It's more exponential reduction at this point, right? You give up a second, and you're saving 30%. You give up two seconds, all of a sudden, you're saving 80%. So, I'd say in the beginning, everybody thought they need everything to be very, very fast. And now they're realizing, you know, with limitations you have around your budget and spending, you're like, okay, I'm okay with the speed. And, again, we're not slow. I'm just saying people realize they don't need everything under a second. They're okay with waiting for two seconds. VICTORIA: That totally resonates with me. And I'm curious if you can add maybe a non-technical or a real-life example of, like, how this impacts the operations of a company or organization, like, if you can give us, like, a business-y example of how this impacts how people work. SEIF: I don't know how, like, how do people work on that? Nothing changed, really. They're still doing the, like...really nothing because...and that aspect is you run a query, and, again, as I said, you're not getting the result in a second. You're just waiting two seconds or three seconds, and it's there. So, nothing really changed. I think people can wait three seconds. And we're still like–when I say this, we're still faster than most others. We're just not as fast as people who are trying to compete on a millisecond level. VICTORIA: Yeah, that's okay. Maybe I'll take it back even, like, a step further, right? Like, our audience is really sometimes just founders who almost have no formal technical training or background. So, when we talk about observability, sometimes people who work in DevOps and operations all understand it and kind of know why it's important [laughs] and what we're talking about. So, maybe you could, like, go back to -- SEIF: Oh, if you're asking about new types of people who've been using it -- VICTORIA: Yeah. Like, if you're going to explain to, like, a non-technical founder, like, why your product is important, or, like, how people in their organization might use it, what would you say? SEIF: Oh, okay, if you put it like that. It's more of if you have data, timestamp data, and you want to run analytics on top of it, so that could be transactions, that could be web vitals, rather than count every time somebody visits, you have a timestamp. So, you can count, like, how many visitors visited the website and what, you know, all these kinds of things. That's where you want to use something like Axiom. That's outside the DevOps space, of course. And in DevOps space, there's so many other things you use Axiom for, but that's outside the DevOps space. And we actually...we implemented as zero-config integration with Vercel that kind of went viral. And we were, for a while, the number one enterprise for self-integration because so many people were using it. So, Vercel users are usually not necessarily writing the most complex backends, but a lot of things are happening on the front-end side of things. And we would be giving them dashboards, automated dashboards about, you know, latencies, and how long a request took, and how long the response took, and the content type, and the status codes, et cetera, et cetera. And there's a huge user base around that. VICTORIA: I like that. And it's something, for me, you know, as a managing director of our platform engineering team, I want to talk more to founders about. It's great that you put this product and this app out into the world. But how do you know that people are actually using it? How do you know that people, like, maybe, are they all quitting after the first day and not coming back to your app? Or maybe, like, the page isn't loading or, like, it's not working as they expected it to. And, like, if you don't have anything observing what users are doing in your app, then it's going to be hard to show that you're getting any traction and know where you need to go in and make corrections and adjust. SEIF: We have two ways of doing this. Right now, internally, we use our own tools to see, like, who is sending us data. We have a deployment that's monitoring production deployment. And we're just, you know, seeing how people are using it, how much data they're sending every day, who stopped sending data, who spiked in sending data sets, et cetera. But we're using Mixpanel, and Dominic, our Head of Product, implemented a couple of key metrics to that for that specifically. So, we know, like, what's the average time until somebody starts going from building its own queries with the builder to writing APL, or how long it takes them from, you know, running two queries to five queries. And, you know, we just start measuring these things now. And it's been going...we've been growing healthy around that. So, we tend to measure user interaction, but also, we tend to measure how much data is being sent. Because let's keep in mind, usually, people go in and check for things if there's a problem. So, if there's no problem, the user won't interact with us much unless there's a notification that kicks off. We also just check, like, how much data is being sent to us the whole time. VICTORIA: That makes sense. Like, you can't just rely on, like, well, if it was broken, they would write a [chuckles], like, a question or something. So, how do you get those metrics and that data around their interactions? So, that's really interesting. So, I wonder if we can go back and talk about, you know, we already mentioned a little bit about, like, the early days of Axiom and how you got started. Was there anything that you found in the early discovery process that was surprising and made you pivot strategy? SEIF: A couple of things. Basically, people don't really care about the tech as much as they care [inaudible 12:51] and the packaging, so that's something that we had to learn. And number two, continuous feedback. Continuous feedback changed the way we worked completely, right? And, you know, after that, we had a Slack channel, then we opened a Discord channel. And, like, this continuous feedback coming in just helps with iterating, helps us with prioritizing, et cetera. And that changed the way we actually developed product. VICTORIA: You use Slack and Discord? SEIF: No. No Slack anymore. We had a community Slack. We had a community [inaudible 13:19] Slack. Now, there's no community Slack. We only have a community Discord. And the community Slack is...sorry, internally, we use Slack, but there's a community Discord for the community. JOE: But how do you keep that staffed? Is it, like, everybody is in the Discord during working hours? Is it somebody's job to watch out for community questions? SEIF: I think everybody gets involved now just...and you can see it. If you go on our Discord, you will just see it. Just everyone just gets involved. I think just people are passionate about what they're doing. At least most people are involved on Discord, right? Because there's, like, Discord the help sections, and people are just asking questions and other people answering. And now, we reached a point where people in the community start answering the questions for other people in the community. So, that's how we see it's starting to become a healthy community, et cetera. But that is one of my favorite things: when I see somebody from the community answering somebody else, that's a highlight for me. Actually, we hired somebody from that community because they were so active. JOE: Yeah, I think one of the biggest signs that a product is healthy is when there's a healthy ecosystem building up around it. SEIF: Yeah, and Discord reminds me of the old days of open sources like IRC, just with memes now. But because all of us come from the old IRC days, being on Discord and chatting around, et cetera, et cetera, just gives us this momentum back, gave us this momentum back, whereas Slack always felt a bit too businessy to me. JOE: Slack is like IRC with emoji. Discord is IRC with memes. SEIF: I would say Slack reminds me somehow of MSN Messenger, right? JOE: I feel like there's a huge slam on MSN Messenger here. SEIF: [laughs] What do you guys use internally, Slack or? I think you're using Slack, right? Or Teams. Don't tell me you're using Teams. JOE: No, we're using Slack. SEIF: Okay, good, because I shit talk. Like, there is this, I'll sh*t talk here–when I start talking about Teams, so...I remember that one thing Google did once, and that failed miserably. JOE: Google still has, like, seven active chat products. SEIF: Like, I think every department or every, like, group of engineers just uses one of them internally. I'm not sure. Never got to that point. But hey, who am I to judge? VICTORIA: I just feel like I end up using all of them, and then I'm just rotating between different tabs all day long. You maybe talked me into using Discord. I feel like I've been resisting it, but you got me with the memes. SEIF: Yeah, it's definitely worth it. It's more entertaining. More noise, but more entertaining. You feel it's alive, whereas Slack is...also because there's no, like, history is forever. So, you always go back, and you're like, oh my God, what the hell is this? VICTORIA: Yeah, I have, like, all of them. I'll do anything. SEIF: They should be using Axiom in the background. Just send data to Axiom; we can keep your chat history. VICTORIA: Yeah, maybe. I'm so curious because, you know, you mentioned something about how you realized that it didn't matter really how cool the tech was if the product packaging wasn't also appealing to people. Because you seem really excited about what you've built. So, I'm curious, so just tell us a little bit more about how you went about trying to, like, promote this thing you built. Or was, like, the continuous feedback really early on, or how did that all kind of come together? SEIF: The continuous feedback helped us with performance, but actually getting people to sign up and pay money it started early on. But with Vercel, it kind of skyrocketed, right? And that's mostly because we went with the whole zero-config approach where it's just literally two clicks. And all of a sudden, Vercel is sending your data to Axiom, and that's it. We will create [inaudible 16:33]. And we worked very closely with Vercel to do this, to make this happen, which was awesome. Like, yeah, hats off to them. They were fantastic. And just two clicks, three clicks away, and all of a sudden, we created Axiom organization for you, the data set for you. And then we're sending it...and the data from Vercel is being forwarded to it. I think that packaging was so simple that it made people try it out quickly. And then, the experience of actually using Axiom was sticky, so they continued using it. And then the price was so low because we give 500 gigs for free, right? You send us 500 gigs a month of logs for free, and we don't care. And you can start off here with one terabyte for 25 bucks. So, people just start signing up. Now, before that, it was five terabytes a month for $99, and then we changed the plan. But yeah, it was cheap enough, so people just start sending us more and more and more data eventually. They weren't thinking...we changed the way people start thinking of “what am I going to send to Axiom” or “what am I going to send to my logs provider or log storage?” To how much more can I send? And I think that's what we wanted to reach. We wanted people to think, how much more can I send? JOE: You mentioned latency and cost. I'm curious about...the other big challenge we've seen with observability platforms, including logs, is cardinality of labels. Was there anything you had to sacrifice upfront in terms of cardinality to manage either cost or volume? SEIF: No, not really. Because the way we designed it was that we should be able to deal with high cardinality from scratch, right? I mean, there's open-source ways of doing, like, if you look at how, like, a column store, if you look at a column store and every dimension is its own column, it's just that becomes, like, you can limit on the amount of columns you're creating, but you should never limit on the amount of different values in a column could be. So, if you're having something like stat tags, right? Let's say hosting, like, hostname should be a column, but then the different hostnames you have, we never limit that. So, the cardinality on a value is something that is unlimited for us, and we don't really see it in cost. It doesn't really hit us on cost. It reflects a bit on compression if you get into technical details of that because, you know, high cardinality means a lot of different data. So, compression is harder, but it's not repetitive. But then if you look at, you know, oh, I want to send a lot of different types of fields, not values with fields, so you have hostname, and latency, and whatnot, et cetera, et cetera, yeah, that's where limitation starts because then they have...it's like you're going to a wide range of...and a wider dimension. But even that, we, yeah, we can deal with thousands at this point. And we realize, like, most people will not need more than three or four. It's like a Postgres table. You don't need more than 3,000 to 4000 columns; else, you know, you're doing a lot. JOE: I think it's actually pretty compelling in terms of cost, though. Like, that's one of the things we've had to be most careful about in terms of containing cost for metrics and logs is, a lot of providers will...they'll either charge you based on the number of unique metric combinations or the performance suffers greatly. Like, we've used a lot of Prometheus-based solutions. And so, when we're working with developers, even though they don't need more than, you know, a few dozen metric combinations most of the time, it's hard for people to think of what they need upfront. It's much easier after you deploy it to be able to query your data and slice it retroactively based on what you're seeing. SEIF: That's the detail. When you say we're using Prometheus, a lot of the metrics tools out there are using, just like Prometheus, are using the Gorilla data structure. And the real data structure was never designed to deal with high cardinality labels. So, basically, to put it in a simple way, every combination of tags you send for metrics is its own file on disk. That's, like, the very simple way of explaining this. And then, when you're trying to search through everything, right? And you have a lot of these combinations. I actually have to get all these files from this conversion back together, you know, and then they're chunked, et cetera. So, it's a problem. Generally, how metrics are doing it...most metrics products are using it, even VictoriaMetrics, et cetera. What they're doing is they're using either the Prometheus TSDB data structure, which is based on Gorilla. Influx was doing the same thing. They pivoted to using more and more like the ones we use, and Honeycomb uses, right? So, we might not be as fast on metrics side as these highly optimized. But then when it comes to high [inaudible 20:49], once we start dealing with high cardinality, we will be faster than those solutions. And that's on a very technical level. JOE: That's pretty cool. I realize we're getting pretty technical here. Maybe it's worth defining cardinality for the audience. SEIF: Defining cardinality to the...I mean, we just did that, right? JOE: What do you think, Victoria? Do you know what cardinality is now? [laughs] VICTORIA: All right. Now I'm like, do I know? I was like, I think I know what it means. Cardinality is, like, let's say you have a piece of data like an event or a transaction. SEIF: It's like the distinct count on a property that gives you the cardinality of a property. VICTORIA: Right. It's like how many pieces of information you have about that one event, basically, yeah. JOE: But with some traditional metrics stores, it's easy to make mistakes. For example, you could have unbounded cardinality by including response time as one of the labels -- SEIF: Tags. JOE: And then it's just going to -- SEIF: Oh, no, no. Let me give you a better one. I put in timestamp at some point in my life. JOE: Yeah, I feel like everybody has done that one. [laughter] SEIF: I've put a system timestamp at some point in my life. There was the actual timestamp, and there was a system timestamp that I would put because I wanted to know when the...because I couldn't control the timestamp, and the only timestamp I had was a system timestamp. I would always add the actual timestamp of when that event actually happened into a metric, and yeah, that did not scale. MID-ROLL AD: Are you an entrepreneur or start-up founder looking to gain confidence in the way forward for your idea? At thoughtbot, we know you're tight on time and investment, which is why we've created targeted 1-hour remote workshops to help you develop a concrete plan for your product's next steps. Over four interactive sessions, we work with you on research, product design sprint, critical path, and presentation prep so that you and your team are better equipped with the skills and knowledge for success. Find out how we can help you move the needle at tbot.io/entrepreneurs. VICTORIA: Yeah. I wonder if you could maybe share, like, a story about when it's gone wrong, and you've suddenly charged a lot of money [laughs] just to get information about what's happening in the system. Any, like, personal experiences with observability that kind of informed what you did with Axiom? SEIF: Oof, I have a very bad one, like, a very, very bad one. I used to work for a company. We had to deploy Elasticsearch on Windows Servers, and it was US-East-1. So, just a combination of Elasticsearch back in 2013, 2014 together with Azure and Windows Server was not a good idea. So, you see where this is going, right? JOE: I see where it's going. SEIF: Eventually, we had, like, we get all these problems because we used Elasticsearch and Kibana as our, you know, observability platform to measure everything around the product we were building. And funny enough, it cost us more than actually maintaining the infrastructure of the product. But not just that, it also kept me up longer because most of the downtimes I would get were not because of the product going down. It's because my Elasticsearch cluster started going down, and there's reasons for that. Because back then, Microsoft Azure thought that it's okay for any VM to lose connection with the rest of the VMs for 30 seconds per day. And then, all of a sudden, you have Elasticsearch with a split-brain problem. And there was a phase where I started getting alerted so much that back then, my partner threatened to leave me. So I bought a...what I think was a shock bracelet or a shock collar via Bluetooth, and I connected it to phone for any notification. And I bought that off Alibaba, by the way. And I would charge it at night, put it on my wrist, and go to sleep. And then, when alert happens, it will fully discharge the battery on me every time. JOE: Okay, I have to admit, I did not see where that was going. SEIF: Yeah, did that for a while; definitely did not save my relationship either. But eventually, that was the point where, you know, we started looking into other observability tools like Datadog, et cetera, et cetera, et cetera. And that's where the actual journey began, where we moved away from Elasticsearch and Kibana to look for something, okay, that we don't have to maintain ourselves and we can use, et cetera. So, it's not about the costs as much; it was just pain. VICTORIA: Yeah, pain is a real pain point, actual physical [chuckles] and emotional pain point [laughter]. What, like, motivates you to keep going with Axiom and to keep, like, the wind in your sails to keep working on it? SEIF: There's a couple of things. I love working with my team. So, honestly, I just wake up, and I compliment my team. I just love working with them. They're a lot of fun to work with. And they challenge me, and I challenge them back. And I upset them a lot. And they can't upset me, but I upset them. But I love working with them, and I love working with that team. And the other thing is getting, like, having this constant feedback from customers just makes you want to do more and, you know, close sales, et cetera. It's interesting, like, how I'm a very technical person, and I'm more interested in sales because sales means your product works, the product, the technical parts, et cetera. Because if technically it's not working, you can't build a product on top of it. And if you're not selling it, then what's the point? You only sell when the product is good, more or less, unless you're Oracle. VICTORIA: I had someone ask me about Oracle recently, actually. They're like, "Are you considering going back to it?" And I'm maybe a little allergic to it from having a federal consulting background [laughs]. But maybe they'll come back around. I don't know. We'll see. SEIF: Did you sell your soul back then? VICTORIA: You know, I feel like I just grew up in a place where that's what everyone did was all. SEIF: It was Oracle, IBM, or HP back in the day. VICTORIA: Yeah. Well, basically, when you're working on applications that were built in, like, the '80s, Oracle was, like, this hot, new database technology [laughs] that they just got five years ago. So, that's just, yeah, interesting. SEIF: Although, from a database perspective, they did a lot of the innovations. A lot of first innovations could have come from Oracle. From a technical perspective, they're ridiculous. I'm not sure from a product perspective how good they are. But I know their sales team is so big, so huge. They don't care about the product anymore. They can still sell. VICTORIA: I think, you know, everything in tech is cyclical. So, you know, if they have the right strategy and they're making some interesting changes over there, there's always a chance [laughs]. Certain use cases, I mean, I think that's the interesting point about working in technology is that you know, every company is a tech company. And so, there's just a lot of different types of people, personas, and use cases for different types of products. So, I wonder, you know, you kind of mentioned earlier that, like, everyone is interested in Axiom. But, you know, I don't know, are you narrowing the market? Or, like, how are you trying to kind of focus your messaging and your sales for Axiom? SEIF: I'm trying to focus on developers. So, we're really trying to focus on developers because the experience around observability is crap. It's stupid expensive. Sorry for being straightforward, right? And that's what we're trying to change. And we're targeting developers mainly. We want developers to like us. And we'll find all these different types of developers who are using it, and that's the interesting thing. And because of them, we start adding more and more features, like, you know, we added tracing, and now that enables, like, billions of events pushed through for, you know, again, for almost no money, again, $25 a month for a terabyte of data. And we're doing this with metrics next. And that's just to address the developers who have been giving us feedback and the market demand. I will sum it up, again, like, the experience is crap, and it's stupid expensive. I think that's the [inaudible 28:07] of observability is just that's how I would sum it up. VICTORIA: If you could go back in time and talk to yourself when you were still a developer, now that you're CTO, what advice would you give yourself? JOE: Besides avoiding shock collars. VICTORIA: [laughs] Yes. SEIF: Get people's feedback quickly so you know you're on the right track. I think that's very, very, very, very important. Don't just work in the dark, or don't go too long into stealth mode because, eventually, people catch up. Also, ship when you're 80% ready because 100% is too late. I think it's the same thing here. JOE: Ship often and early. SEIF: Yeah, even if it's not fully ready, it's still feedback. VICTORIA: Ship often and early and talk to people [laughs]. Just, do you feel like, as a developer, did you have the skills you needed to be able to get the most out of those feedback and out of those conversations you were having with people around your product? SEIF: I still don't think I'm good enough. You're just constantly learning, right? I just accepted I'm part of a team, and I have my contributions. But as an individual, I still don't think I know enough. I think there's more I need to learn at this point. VICTORIA: I wonder, what questions do you have for me or Joe? SEIF: How did you start your podcast, and why the name? VICTORIA: Oh, man, I hope I can answer. So, the podcast was started...I think it's, like, we're actually about to be at our 500th Episode. So, I've only been a host for the last year. Maybe Joe even knows more than I do. But what I recall is that one person at thoughtbot thought it would be a great idea to start a podcast, and then they did it. And it seems like the whole company is obsessed with robots. I'm not really sure where that came from. There used to be a tiny robot in the office, is what I remember. And people started using that as, like, the mascot. And then, yeah, that's it, that's the whole thing. SEIF: Was the robot doing anything useful or just being cute? JOE: It was just cute, and it's hard to make a robot cute. SEIF: Was it a real robot, or was it like a -- JOE: No, there was, at one point, a toy robot. The name...I actually forget the origin–origin of the name, but the name Giant Robots comes from our blog. So, we named the podcast the same as the blog: Giant Robots Smashing Into Other Giant Robots. SEIF: Yes, it's called transformers. VICTORIA: Yeah, I like it. It's, I mean, now I feel like -- SEIF: [laughs] VICTORIA: We got to get more, like, robot dogs involved [laughs] in the podcast. SEIF: Like, I wanted to add one thing when we talked about, you know, what gets me going. And I want to mention that I have a six-month-old son now. He definitely adds a lot of motivation for me to wake up in the morning and work. But he also makes me wake up regardless if I want to or not. VICTORIA: Yeah, you said you had invented an alarm clock that never turns off. Never snoozes [laughs]. SEIF: Yes, absolutely. VICTORIA: I have the same thing, but it's my dog. But he does snooze, actually. He'll just, like, get tired and go back to sleep [laughs]. SEIF: Oh, I have a question. Do dogs have a Tamagotchi phase? Because, like, my son, the first three months was like a Tamagotchi. It was easy to read him. VICTORIA: Oh yeah, uh-huh. SEIF: Noisy but easy. VICTORIA: Yes, yes. SEIF: Now, it's just like, yeah, I don't know, like, the last month he has opinions at six months. I think it's because I raised him in Europe. I should take him back to the Middle East [laughs]. No opinions. VICTORIA: No, dogs totally have, like, a communication style, you know, I pretty much know what he, I mean, I can read his mind, obviously [laughs]. SEIF: Sure, but that's when they grow a bit. But what when they were very...when the dog was very young? VICTORIA: Yeah, they, I mean, they also learn, like, your stuff, too. So, they, like, learn how to get you to do stuff or, like, I know she'll feed me if I'm sitting here [laughs]. SEIF: And how much is one dog year, seven years? VICTORIA: Seven years. SEIF: Seven years? VICTORIA: Yeah, seven years? SEIF: Yeah. So, basically, in one year, like, three months, he's already...in one month, he's, you know, seven months old. He's like, yeah. VICTORIA: Yeah. In a year, they're, like, teenagers. And then, in two years, they're, like, full adults. SEIF: Yeah. So, the first month is basically going through the first six months of a human being. So yeah, you pass...the first two days or three days are the Tamagotchi phase that I'm talking about. VICTORIA: [chuckles] I read this book, and it was, like, to understand dogs, it's like, they're just like humans that are trying to, like, maximize the number of positive experiences that they have. So, like, if you think about that framing around all your interactions about, like, maybe you're trying to get your son to do something, you can be like, okay, how do I, like, I don't know, train him that good things happen when he does the things I want him to do? [laughs] That's kind of maybe manipulative but effective. So, you're not learning baby sign language? You're just, like, going off facial expressions? SEIF: I started. I know how Mama looks like. I know how Dada looks like. I know how more looks like, slowly. And he already does this thing that I know that when he's uncomfortable, he starts opening and closing his hands. And when he's completely uncomfortable and basically that he needs to go sleep, he starts pulling his own hair. VICTORIA: [laughs] I do the same thing [laughs]. SEIF: You pull your own hair when you go to sleep? I don't have that. I don't have hair. VICTORIA: I think I do start, like, touching my head though, yeah [inaudible 33:04]. SEIF: Azure took the last bit of hair I had! Went away with Azure, Elasticsearch, and the shock collar. VICTORIA: [laughs] SEIF: I have none of them left. Absolutely nothing. I should sue Elasticsearch for this shit. VICTORIA: [laughs] Let me know how that goes. Maybe there's more people who could join your lawsuit, you know, with a class action. SEIF: [laughs] Yeah. Well, one thing I wanted to also just highlight is, right now, one of the things that also makes the company move forward is we realized that in a single domain, we proved ourselves very valuable to specific companies, right? So, that was a big, big thing, milestone for us. And now we're trying to move into a handful of domains and see which one of those work out the best for us. Does that make sense? VICTORIA: Yeah. And I'm curious: what are the biggest challenges or hurdles that you associate with that? SEIF: At this point, you don't want just feedback. You want constructive criticism. Like, you want to work with people who will criticize the applic...and you iterate with them based on this criticism, right? They're just not happy about you and trying to create design partners. So, for us, it was very important to have these small design partners who can work with us to actually prove ourselves as valuable in a single domain. Right now, we need to find a way to scale this across several domains. And how do you do that without sacrificing? Like, how do you open into other domains without sacrificing the original domain you came from? So, there's a lot of things [inaudible 34:28]. And we are in the middle of this. Honestly, I Forrest Gumped my way through half of this, right? Like, I didn't know what I was doing. I had ideas. I think it's more of luck at this point. And I had luck. No, we did work. We did work a lot. We did sleepless nights and everything. But I think, in the last three years, we became more mature and started thinking more about product. And as I said, like, our CEO, Neil, and Dominic, our head of product, are putting everything behind being a product-led organization, not just a tech-led organization. VICTORIA: That's super interesting. I love to hear that that's the way you're thinking about it. JOE: I was just curious what other domains you're looking at pushing into if you can say. SEIF: So, we are going to start moving into ETL a bit more. We're trying to see how we can fit in specific ML scenarios. I can't say more about the other, though. JOE: Do you think you'll take the same approaches in terms of value proposition, like, low cost, good enough latency? SEIF: Yes, that's definitely one thing. But there's also...so, this is the values we're bringing to the customer. But also, now, our internal values are different. Now it's more of move with urgency and high velocity, as we said before, right? Think big, work small. The values in terms of values we're going to take to the customers it's the same ones. And maybe we'll add some more, but it's still going to be low-cost and large-scale. And, internally, we're just becoming more, excuse my French, agile. I hate that word so much. Should be good with Scrum. VICTORIA: It's painful, but everyone knows what you're talking about [laughs], you know, like -- SEIF: See, I have opinions here about Scrum. I think Scrum should be only used in terms of iceScrum [inaudible 36:04], or something like that. VICTORIA: Oh no [laughter]. Well, it's a Rugby term, right? Like, that's where it should probably stay. SEIF: I did not know it's a rugby term. VICTORIA: Yeah, so it should stay there, but -- SEIF: Yes [laughs]. VICTORIA: Yeah, I think it's interesting. Yeah, I like the being flexible. I like the just, like, continuous feedback and how you all have set up to, like, talk with your customers. Because you mentioned earlier that, like, you might open source some of your projects. And I'm just curious, like, what goes into that decision for you when you're going to do that? Like, what makes you think this project would be good for open source or when you think, actually, we need to, like, keep it? SEIF: So, we open source libraries, right? We actually do that already. And some other big organizations use our libraries; even our competitors use our libraries, that we do. The whole product itself or at least a big part of the product, like database, I'm not sure we're going to open source that, at least not anytime soon. And if we open source, it's going to be at a point where the value-add it brings is nothing compared to how well our product is, right? So, if we can replace whatever's at the back with...the storage engine we have in the back with something else and the product doesn't get affected, that's when we open source it. VICTORIA: That's interesting. That makes sense to me. But yeah, thank you for clarifying that. I just wanted to make sure to circle back. Since you have this big history in open source, yeah, I'm curious if you see... SEIF: Burning me out? VICTORIA: Burning you out, yeah [laughter]. Oh, that's a good question. Yeah, like, because, you know, we're about to be in October here. Do you have any advice or strategies as a maintainer for not getting burned out during the next couple of weeks besides, like, hide in a cave and without internet access [laughs]? SEIF: Stay away from Reddit and Hacker News. That's my goal for October now because I'm always afraid of getting too attached to an idea, or too motivated, or excited by an idea that I drift away from what I am actually supposed to be doing. VICTORIA: Last question is, is there anything else you would like to promote? SEIF: Yeah, check out our website; I think it's at axiom.co. Check it out. Sign up. And comment on Discord and talk to me. I don't bite, sometimes grumpy, but that's just because of lack of sleep in the morning. But, you know, around midday, I'm good. And if you're ever in Berlin and you want to hang out, I'm more than willing to hang out. VICTORIA: Whoo, that's awesome. Yeah, Berlin is great. I was there a couple of years ago but no plans to go back anytime soon, but maybe I'll keep that in mind. You can subscribe to the show and find notes along with a complete transcript for this episode at giantrobots.fm. If you have questions or comments, email us at hosts@giantrobots.fm. And you could find me on Twitter @victori_ousg. And this podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. Thanks for listening. See you next time. Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions. Special Guests: Joe Ferris and Seif Lotfy.

The Bike Shed
404: Estimation

The Bike Shed

Play Episode Listen Later Oct 17, 2023 22:49


Joël was selected to speak at RubyConf in San Diego! After spending a month testing out living in Upstate New York, Stephanie is back in Chicago. Stephanie reflects on a recent experience where she had to provide an estimate for a project, even though she didn't have enough information to do so accurately. In this episode, Stephanie and Joël explore the challenges of providing estimates, the importance of acknowledging uncertainty, and the need for clear communication and transparency when dealing with project timelines and scope. RubyConf 2023 (https://rubyconf.org/) How to estimate well (https://thoughtbot.com/blog/how-to-estimate-feature-development-time-maybe-don-t) XKCD hard problems (https://xkcd.com/1425/) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. JOËL: And I'm Joël Quenneville. And together, we're here to share a bit of what we've learned along the way. STEPHANIE: So, Joël, what's new in your world? JOËL: Big piece of news in my world: I recently got accepted to speak at RubyConf in San Diego next month in November. I'm really excited. I'm going to be talking about the concept of time and how that's actually multiple different things and the types of interactions that do and do not make sense when working with time. STEPHANIE: Yay. That's so exciting. Congratulations. I am very excited about this topic. I'm wondering, is this something that you've been thinking about doing for a while now, or was it just an idea that was sparked recently? JOËL: It's definitely a topic I've been thinking about for a long time. STEPHANIE: Time? [laughs] JOËL: Haha. STEPHANIE: Sorry, that was an easy one [laughs]. JOËL: The idea that we often use the English word time to refer to a bunch of, like, fundamentally different quantities and that, oftentimes, that can sort of blur into one another. So, the idea that a particular point in time might be different from a duration, might be different from a time of day, might be different to various other quantities that we refer to generically as time is something that's been in the back of my mind for quite a while. But I think turning that into a conference talk was a more recent idea. STEPHANIE: Yeah, I'm curious, I guess, like, what was it that made you feel like, oh, like, this would be beneficial for other people? Did everything just come together, and you're like, oh, I finally have figured out time [laughs]; now I have this very clear mental model of it that I want to share with the world? JOËL: I think it was sparked by a conversation I had with another member of the thoughtbot team. And it was just one of those where it's like, hey, I just had this really interesting conversation pulling on this idea that's been in the back of my mind for years. You know, it's conference season, and why not make that into a talk proposal? As often, you know, the best talk proposals are, at least for me, I don't always think ahead of time, oh, this would be a great topic. But then, all of a sudden, it comes up in a conversation with a colleague or a client, or it becomes really relevant in some work that I'm doing. It happens to be conference season, and like, oh, that's something I want to talk about now. STEPHANIE: Yeah, I like that a lot. I was just thinking about something I read recently. It was about creativity and art and how long a piece of work takes. And someone basically said it really just takes your whole life sometimes, right? It's like all of your experiences accumulated together that becomes whatever the body of work is. Like, all of that time spent maybe turning the idea in your head or just kind of, like, sitting with it or having those conversations, all the bugs you've probably encountered [laughs] involving date times, and all of that coalescing into something you want to create. JOËL: And you build this sort of big web of ideas, not all that makes sense to talk about in a conference talk. So, one of the classic sources of bugs when dealing with time are time zone and daylight savings. I've chosen not to include those as part of this talk. I think other people have talked about them. I think it's less interesting or less connected to the core idea that I have that, like, there are different types of time. Let's dig into what that means for us. So, I purposefully left that out. But there's definitely a lot that could be said for those. STEPHANIE: Awesome. Well, I really look forward to watching your talk when it is released to the public. JOËL: So, our listeners won't be able to tell, but we're on a video call right now. And I can see from your background that you are back at home in Chicago. It's been a few weeks since we've recorded together. And, in the last episode we did, you were trying out living somewhere in Upstate New York. How was that experience? And what has the transition back to Chicago been for you? STEPHANIE: Yeah, thanks for asking. I was in Upstate New York for the whole month of September. And then I took the last two weeks off of work to, you know, just really enjoy being there and make sure I got to do everything that I wanted to do out there before I came home to, you know, figure out, like, is this a place where I want to move? And yeah, this is my first, like, real full week back at work, back at home. And I have to say it's kind of bittersweet. I think we really enjoyed our time out there, my partner and I. And coming back home, especially, you know, when you're in a stage of life where you're wanting to make a change, it can be a little tough to be like, uh, okay, like, now I have to go back [laughs] to what my life was like before. But we've been very intentional about trying to bring back some of the things that we enjoyed being out there, like, back into just our regular day-to-day lives. So, over the weekend, we were making sure that we wanted to spend some time in nature because that's something that we were able to do a lot of during our time in New York. And, yeah, I think just bringing a bit of that, like, vacation energy into day-to-day life so the grind of kind of work doesn't become too much. JOËL: Anything in particular that you've tried to bring back from that experience to your daily life in Chicago? STEPHANIE: Yeah. I think, you know, when you're in a new place, everything is very exciting and, like, novel. Before work or, like, during my breaks, I would go out into the world and take a little walk and, like, look at the houses on the street that I was staying at. Or there's just a sense of wonder, I suppose, where everywhere you look, you're like, oh, like, this is all new. And I felt very, like, present when I was doing that. And over time, when you've been somewhere for a long time, you lose a little bit of that sense of, like, willingness to be open to new things, or just, like, yeah, that sense of like, oh, like, curiosity, because you feel like you know somewhere and, like, you kind of start to expect oh, like, this street will be exactly like how I've walked a million times [laughs]. But trying to look around a little more, right? Like, be a little aware and be like, oh, like, Halloween is coming around the corner. And so, enjoying that as, like, the thing that I notice around me, even if I am still on the same block, you know, in my same neighborhood, and, yeah, wanting to really appreciate, like, my time here before we leave. Like, I don't want to just spend it kind of waiting for the next thing to happen. Because I'm sure there will also be a time where I miss [laughs] Chicago here once we do decide to move. JOËL: I don't know about you, but I feel like a sense of change, even if it is cyclical, is really helpful for me to kind of maintain a little bit of that wonder, even though I've lived in one place for a decade. So, I live in New England in the Northeast U.S. We have pretty marked seasons that change. And so, seeing that happen, you know, kind of a warm summer, and now we're transitioning into fall, and the weather is getting colder. The trees are turning all these colors. So, there's always kind of within, like, a few weeks or a few months something to look forward to, something that's changing. Life never feels stagnant, even though it is cyclical. And I don't know if that's been a similar experience for you. STEPHANIE: Yeah, I like that a lot because I think one of the issues around feeling kind of stuck here in Chicago was that things were starting to feel stagnant, right? Like, we're wanting to make a big change in our life. That's still on the table, and that's still our plan. But noticing change, even when you think like, ugh, like, this again? [laughs] I think that could really shift your perspective a little bit or at least change how you feel about being somewhere. And that's definitely what I'm trying to do, kind of even when I am in a place of, like, waiting to figure out what the next step is. Speaking of change, I had a recent lesson learned or, I suppose, a story to share with you about a new insight or perspective I had about how I show up at work that I'd like to share. JOËL: What is this new perspective? STEPHANIE: Well, I guess, [chuckles], first of all, I'm curious to get your reaction on this. Have you ever heard anyone tell you estimates are lies? JOËL: Yes, a lot. It's maybe cynical, but there are a lot of cynics in our industry. STEPHANIE: That's true. Part of this story is me giving an estimate that was a lie. So, in some ways, there is a grain of truth to it [laughs]. But I wanted to share with you this experience I had a few weeks ago where I was in kind of a like, project status update meeting. And I was coming to this meeting for the first time actually. And so, it was with a group of people who I hadn't really met before. It was kind of a large meeting. So, there were a handful of people that I wasn't super familiar with. And I was coming in to share with this bigger group, like, how the work I had been doing was going. And during that time, we had gotten some new information that was kind of making us reassess a few things about the work, trying to figure out, like, where to go next and how to meet our ultimate goal for delivering this feature. With that new information in mind, one of the project managers was asking me how long I thought it might take. And I did not have enough information to feel particularly confident about an answer, you know, I just didn't know. And I mentioned that this was kind of my first time in this meeting. There were a lot of people I didn't know, including the person who was asking the question. And they were saying, "Oh, well, you can just guess or, like, you know, it doesn't have to be perfect. But could you give us a date?" And I felt really hard-pressed to give them an answer in that moment because, you know, I kind of was stalling a little bit. And there was still this, like, air of expectancy. I eventually, I have to say, I made something up [laughs]. I was like, "Well, I don't know, like, three weeks," you know, just really pulling it out of thin air. And, you know, that's what they put down on the spreadsheet, and then they moved on [laughs] to the next item. And then, I sat there in the rest of the meeting. And afterwards, I felt really bad. I, like, really regretted it, I think, because I knew that the answer I gave was mostly BS, right? Like, I can't even say how I came up with that. Just that I, like, wanted to maybe give us some extra time, in case the task ends up being complicated, or, you know, there are all these unknowns. But yeah, it really didn't feel good. JOËL: I'm curious why that felt bad. Was it the uncertainty around that number or the fact that the number maybe you felt like you'd given, like, a ridiculously large number? Typically, I feel like when estimates are for a story, it's, like, in the order of a few days, not a few weeks. Or is it something else, the fact that you felt like you made it up? STEPHANIE: I think both, where it was such a big task. The larger and higher level the task is, the harder it is to come up with an answer, let alone an accurate one. But it was knowing that, like, I didn't have the information. And even though I was doing as they asked of me [chuckles], it was almost like I lost a little bit of my own integrity, right? In terms of kind of based on my experience doing software development, like, I know when I don't know, and I wasn't able to say it. At least in that moment, didn't feel comfortable saying it. JOËL: Because they're not taking no for an answer. STEPHANIE: Yeah, yeah, or at least that was my interpretation of the conversation. But the insight or the learning that I took away from it was that I actually don't want to feel that way again [laughs], that I don't want to give a lie as an estimate because it didn't feel good for me. And the experience that I have knowing that I don't have an answer now, but there are, like, ways to get the answer, right? What I wish I had said in that meeting was that I didn't know, but I could find out, or, like, I would let them know as soon as I did have more information. Or, like, here is the information that I do need to come up with something that is more useful to them, honestly, and could make it, like, a win for all of us. But yeah, I've been reflecting on [chuckles] that a lot. Because, in a sense, like, I really needed to trust myself and, like, trust my gut to have been able to do my best work. JOËL: I wonder if there's maybe also a sense in which, you know, generally, you're a very kind of earnest person. And maybe by giving a ridiculous number there just to, like, check a box, maybe felt like you gave way to a certain level of cynicism that wasn't, like, true to who you are as a person. STEPHANIE: Yeah, yeah, that feels real [laughs]. JOËL: Have you ever done estimation sessions where you put error bars on your number? So, you say, hey, this is my estimate, but plus or minus. And, like, the more uncertainty there is around a number, the larger those plus or minus values are to the point where I could imagine something as ridiculous as like, oh, this is going to take three weeks, plus or minus three weeks. STEPHANIE: I like that. That's funny. No, I have not ever done that before or even heard of that. That is a really interesting technique because that seems just more real to me, where, again, people have different opinions about estimation and how effective or useful it is. But for organizations where, like, it is somewhat valuable, or it is just part of the process, I like the idea of at least acknowledging the uncertainty or the ambiguity or, like, the level of confidence, right? That seems like an important piece of context to that information. JOËL: And that can probably lead to some really interesting conversations as well because just getting a big number by itself, you might have a pretty high certainty. I mean, three weeks is big enough that you might say, okay, there's definitely going to be some fuzziness around that. But getting a sense of the certainty can, in certain contexts, I find, drive really interesting conversations about why things are uncertain. And then, that can lead to some really good conversations around scoping about, okay, so we have this larger story. What are the elements of it that are uncertain that you might even talk in terms of risk? What are the risky elements of this story or maybe even a project? And how do we de-risk those? Is there a way that we could remove maybe a small part of the story and then, all of a sudden, those error bars of plus or minus three weeks drop down to plus or minus three days? Because that might be possible by having that conversation. STEPHANIE: Yeah, I like what you said about scope because the way that it was presented as this really big chunk of work that was very critical to this deadline, there was no room to do scope, right? Because we weren't even talking about what makes up this feature task. We hadn't really broken it down. In some ways, I think it was very, like, wishful, right? To be like, oh yeah, we want this feature. We're not going to talk too much about, like, the specific details [laughs], as opposed to the idea of it, right? And that, I think, is, you know, was part of what led to that ambiguity of, like, I can't even begin to estimate this because, like, it could mean so many different things. JOËL: Right. And software problems, often, a slight change in the scope can make a massive change in complexity. I always think of a classic xkcd comic where two people are talking about a task, and somebody starts by describing something that kind of sounds complex. But the person implementing it is like, "Oh yeah, no, that's, you know, it's super easy. I can do that in half a day." And then, like, the person making the ask is like, "Oh, and, by the way, one small detail," and they add, like, one small thing that seems inconsequential, and the person is just like, "Okay, sorry, I'm going to need a research team and a couple of PhDs. And it's going to take us five years." STEPHANIE: That's really funny. I haven't seen this comic before, but I need to [laughs] because I feel that so much where it's like, you just have different expectations about how long things will take. And I think maybe that is where, like, I felt really disappointed afterwards. Because in my inability to, like, just really speak up and say, like, "In my experience, like, this is kind of what happens when we don't have this information or when we aren't sure," yeah, I just wasn't able to bring that to the table in that, you know, meeting. And I really am glad we're having this conversation now because I've been thinking about, like, okay, when I find myself in this position again, how would I like to respond differently? And even just that comic feels really validating [laughs] in terms of like, oh yeah, like, other people have experienced this before, where when we don't have that shared understanding or, like, if we're not being super transparent about how long does a thing really take, and why does it make it complex, or, like, what is challenging about it, it can be, like, speaking in [chuckles] two different languages sometimes. JOËL: I think what I'm hearing almost is that in a situation like what you found yourself in, you're almost sort of wishing that you'd picked one extreme or the other, either sort of, like, standing up to—I assume this is a project manager or someone...to say, "Look, there's no number I can give you that's going to make sense. I'm not going to play this game. I have no number I can give you," and kind of ending it there. Or, on the other hand, leaning into, say, "Okay, let's have a nuanced conversation, and we'll try to understand this. And we'll try to maybe scope it and maybe put some error bars on this or something and try to come up with a number that's a little bit more realistic." But by kind of, like, trying to maybe do a middle path where you just kind of give a ridiculously large number that's meaningless, maybe everybody feels unfulfilled, and that feels, like, maybe the worst of the paths you could have taken. STEPHANIE: Yeah, I agree. I like that everyone [laughs] feels slightly unfulfilled point. Because, you know, my estimate is likely wrong. And, like, what impact will that have on other folks and, you know, their work? While you were saying, like, oh yeah, here were the kind of two different options I could have chosen, I was thinking about the idea of, like, yeah, like, there are different strategies depending on the audience and depending who you're working with. And that is something I want to keep in mind, too, of, like, is this the right group to even have the, like, okay, let's figure this out conversation? Because it's not always the case, right? And sometimes you do need to just really stand firm and say, like, "I can't give you an answer. And I will go and find the people [laughs] who I can work this out with so that I can come back with what you need." JOËL: And sometimes there may be a place for some sort of, like, placeholder data that is obviously wrong, but you need to put a value there, as long as everybody's clear on that's more or less what's happening. I had to do something kind of like that today. I'm connecting with a third-party SAML for authentication using the service Auth0. And this third party I'm talking to...so there's data that they need from me, and there's data that I need from them. They're not going to give me data until I give them our data first, so this is, like, you know, callback URLs, and entity IDs, and things like that you need to pass. In order to have those, I need to stand up a SAML connection on the Auth0 side of things. In order to create that, Auth0 has a bunch of required fields, including some of the data that the third party would have given me. So, we've got a weird thing where, like, I need to give them data so they can stand up their end. But I can't really stand up my end until they give me some data. STEPHANIE: Sounds like a circular dependency, if I've ever heard one [laughs]. JOËL: It kind of is, right? And so, I wanted to get this rolling. I put in a bunch of fake values for these callback URLs and things like that in the places where it would not affect the data that I'm giving to the third party. And so, it will generate as a metadata file that gets generated and stuff like that. And so, I was able to get that data and send it over. But I did have to put a callback URL whose domain may or may not be example.com. STEPHANIE: [laughs] Right. JOËL: So, it is a placeholder. I have to remember to go and change it later on. But that was a situation where I felt better about doing that than about asking the third party, "Hey, can I get your information first?" STEPHANIE: Yeah, I like that as sometimes, like, you recognize that in order to move forward, you need to put something or fill in that gap. And I think that, you know, there was always an opportunity afterwards to fix it or, like, to reassess and revisit it. JOËL: With the caveat that, in software, there's nothing quite so permanent as a temporary fix. STEPHANIE: Oof, yeah [laughs]. That's real. JOËL: So, you know, caution advised, but yes. Don't always feel bad about placeholders if it allows you to unblock yourself. STEPHANIE: So, I'm really glad I got to bring up this topic and tell you this story because it really got me thinking about what estimates mean to me. I'm curious if any of our listeners if you all have any input. Do you love estimates? Do you hate them? Did our conversation make you think about them differently? Feel free to write to us at hosts@bikeshed.fm. JOËL: On that note, shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeeeeeeee!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/referral. Or you can email us at referrals@thoughtbot.com with any questions.