POPULARITY
This week, Steph and Joël discuss investment time and keeping track of things they want to learn. How do you, dear listener, keep track of things you want to learn? When investment time rolls around, what do you reach for, or how do you prioritize that list? Are there things you actively decide not to focus on when choosing where to develop deep expertise? Are there things you wish you could spend time on if you could? This episode is brought to you by Airbrake (https://airbrake.io/?utm_campaign=Q3_2022%3A%20Bike%20Shed%20Podcast%20Ad&utm_source=Bike%20Shed&utm_medium=website). Visit Frictionless error monitoring and performance insight for your app stack. Bloom's Taxonomy (https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/) thoughtbot's interview (https://thoughtbot.com/playbook/our-company/hiring#interviewing) 3 categories of learning (https://thoughtbot.com/blog/what-technologies-should-i-learn) Four Thousand Weeks: Time Management for Mortals (https://www.amazon.com/Four-Thousand-Weeks-Management-Mortals/dp/B08XZY5ZF7/ref=sr_1_1?gclid=CjwKCAiA9qKbBhAzEiwAS4yeDZvBGi9yS1YkifUNcf0j8jx3s-NKc1pw5itLKSjI1vOfzlYJCuRNFRoC7ioQAvD_BwE&hvadid=599682518804&hvdev=c&hvlocphy=9006718&hvnetw=g&hvqmt=e&hvrand=3741098155096216457&hvtargid=kwd-1661352592925&hydadcr=28547_10703911&keywords=the+four+thousand+weeks&qid=1667835268&sr=8-1) 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 little bit of what we've learned along the way. STEPHANIE: So, Joël, what's new in your world? JOËL: I was recently having a conversation with another colleague at thoughtbot, and they brought up Bloom's Taxonomy, which is a taxonomy of different phases of learning. It's often visualized as a pyramid with a broad base that starts with remembering facts and then expands up to understanding and then up to applying, and then analyzing, evaluating, and then finally creating. So it's a way to kind of quantify progression of someone who is trying to master a topic. And what really struck me when I saw this diagram was I immediately thought about how the tech industry interviews and a lot of our interviews are focused on the base of that pyramid. It's all about did you memorize certain facts, or APIs, or things like that? But a lot of the value that we create as developers...but to be good at our jobs, we have to actually be active much higher up in that pyramid in the analyze, evaluate, and create layers. But unfortunately, I feel like interviews often don't go that far; they're really just focused on the base. So that was a really interesting realization. We were not talking about interviewing, but this colleague shared the diagram. I looked at it, and the first thing I thought was like, oh, this is the problem with a lot of tech interviews these days. STEPHANIE: Yeah, I think a lot about how in interviews, we want to be showing off our best selves in a sense. Like, we want our interviewers to see the version of ourselves that we bring to work, which is usually like you were saying, at that top layer and isn't recalling particular facts about how our framework works or things we might have learned in computer science class in college. And one thing I actually really like about thoughtbot's interview...even in the job application, I think it says, "We want to see your strengths and see you at your best self." And it asks what can we, as thoughtbot, interview you on in a way that gives you the opportunity to display those skills? And so I really like that. I think I remember when I submitted that application, I might have said something along the lines of debugging a problem because I think that's where I personally shine. I don't know if it ended up being a conscious thing. But I do remember when I was doing the pairing interview, there was an aspect of debugging, and I was like, yes, this is where I can show off what I would normally do in a real-life work situation. So that really resonates with me. JOËL: Debugging is such a core developer skill, and yet I feel it's not often something that we dig into in a process like an interview. Sometimes you have almost like a code review style where you've got, oh, there is one bug hidden in here, find it, and it's almost like a gotcha sort of thing. I don't like those. But a real situation where you could show off your problem-solving and debugging skills sounds like a really good way to play to your strengths. STEPHANIE: Yeah. Where else do you think that higher level of critical analysis and creative output shows up in your day-to-day work? JOËL: I think it has to pervade the day-to-day work. The majority of my job is not remembering what method from enumerable is used to sort an array; it's trying to find a way to translate a problem that the business has into code or a code solution that will satisfy quite a lot of different constraints. This might be something that is doable in one or two days because that's all we have to allocate to this problem. So a lot of that work could be scoping down a problem. There might be some performance-related constraints where it needs to be faster than X. There are certainly some correctness constraints as well that you're trying to work within. So all of that, I think, is much more at that analysis, evaluation, and creation layers of the pyramid. STEPHANIE: Yeah, that's a really good point. I think sometimes I've seen interviews try to replicate that or recreate it in an interview question, even though they may be genuinely based off of real-life experiences that companies might have had. But most often, it's really hard to be evaluated on that situation until you're really just doing that work. JOËL: It is really hard to translate that into an interview format. I think one aspect that I do appreciate, and maybe that's just the consultant in me but having a conversation about trade-offs in a situation where there isn't a single correct answer. And so, maybe the interviewer and the candidate have different conclusions. But as long as they can show their reasoning down that path of why they came to the conclusion that they did, I think that's the important part of that. The hard thing is if the interviewer has their preferred solution, and they're just like, "No, you didn't come to my conclusion," then that's not a good interview. But a situation where a candidate gets to demonstrate their critical thinking skills, their analysis skills, their ability to make difficult decisions to balance trade-offs, I think that's a great way to show off some of those high-level skills that honestly we use on a daily basis. STEPHANIE: Yeah, I agree 100%. JOËL: So that's what I've been kind of excited about recently, just seeing this diagram and having that moment of clarity about interviewing. What's something new in your world, Stephanie? STEPHANIE: That's really interesting that you brought that up because it's kind of related to what I was going to say about what I've been working on on my client project, which is the ambiguity of the rewrite. So I mentioned last week that I've been rewriting some Rails views. And we're working on a pretty old legacy application, so there are a lot of things that, as we're rewriting, we need to figure out whether or not we want to include it in the new version. So it's been a little more challenging than just copying over the functionality that you want because there are a lot of things in this legacy app that were written 10-12 years ago that we don't have any context on, especially as consultants and even the people we're working with on this team, the code might even predate them. So we do our best to ask them questions about, hey, is this still necessary? Do you think we want it in this rewrite? And they don't always know the answers. And so we have to make our best judgment and make a lot of micro-level decisions about what we think is important to bring into this rewrite without a ton of that historical context. So when you were talking about those analytical, critical thinking skills, that seemed like a very relevant experience that I would say has been utilizing those aspects of learning. JOËL: Definitely, especially for a codebase that is that old. I feel like ten years is almost like a generation in software developer terms. Ten years ago would be what? 2012. That's Rails 3 still. I forget when Rails 4 came out. But yeah, that's a long time ago when you talk about technology. And at a company, even the odds of someone sticking around for that long are very low. STEPHANIE: Absolutely. And so sometimes we just choose to leave the code as it is, and we will just copy and paste it. But other times, we might try to rewrite it in a more modern way. One thing that we did recently was migrate a hand-rolled form builder to use Simple Form. And we did our best to retain most of the original functionality. But there were aspects of it, things like browser validation and stuff like that, that had to change because we made the conscious decision to use a more modern form builder. But then there were always going to be some differences, and so we had to reconcile those with the product team, have a lot of communication around what was important to keep and what wasn't. And yeah, really, just try to get the code in a better spot if we can while also acknowledging that some things have been working for ten years, and that's okay too. JOËL: So you're talking about a lot of old code that you're working with and seeing how much things have changed over ten years. And I feel like, as software developers, we're constantly having to learn and hone our skills, but it can really be overwhelming because there's so much to learn. How do you prioritize what you want to learn next? STEPHANIE: At thoughtbot, we're lucky enough to have investment times. So typically, on Fridays, most of us will not be working on client work, but we'll be working on things to improve thoughtbot internally or improve ourselves professionally. So I'm really grateful that I have dedicated learning time, and figuring out how to spend it has been both fun and also fraught in a way because like you were saying, there are so many things I want to learn about, and we internally have so much lively discussion about really cool technical things. But I've kind of accepted that I'm not going to be able to learn it all. And so when Friday does roll around, I do have to figure out, okay, how do I want to spend my precious investment time today? For me, it honestly feels really dependent on how I'm doing that Friday. So I do have a bit of a backlog of talks and articles that I've collected along the way or bookmarked that I might come back to if that is the mode I'm in. I also have bigger themes, I think, around frameworks and technologies that I want to dig a little more deeply into. I've been trying to work through a TypeScript tutorial for a while now, especially because it's not something that I've gotten a chance to spend a ton of time on in client work. And so in some ways, it's like, well, if I want to work on a client project using TypeScript, then I feel like I should brush up on TypeScript first. So that's kind of in the back of my head is just a more nebulous goal. But I also think that it really changes depending on how I'm feeling throughout the year. It could be very well that the TypeScript thing never comes to fruition and maybe something else will grab my attention. JOËL: I'm sure there are lessons, though, that you would learn from TypeScript that you could then use to improve your day-to day-work on a Rails project, for example. STEPHANIE: Yeah, absolutely. I think that's the really cool thing is that everything I learn in some way can connect to other things that I do know, or experience, or come across during my everyday work. So none of it ever feels like a waste of time. I think the best feeling is when you can make that connection as you are experiencing something in the codebase that reminds you of something you read about in a blog post or something like that. JOËL: Connections are one of the most crucial parts of, I think, knowledge creation. And in a past episode on note-taking, we had a whole deep conversation about how sometimes making connections between some of your notes is almost more valuable than taking a note by itself. STEPHANIE: Joël, how do you prioritize your learning? JOËL: I have three broad categories of technical learning that I like to do. The first is anything related to my core language and framework, and as of right now, that is Ruby, Rails. And maybe a little bit more broadly, anything related to the paradigms related to that, so object-oriented design, patterns related to that, all things that will help me to write better Ruby and Rails code. Then there are evergreen skills that are always great to invest in, things like getting better at Git, learning a little bit of SQL, getting better at doing things on the command line. Those are all things that I look to level up every now and then. And then, finally, just whatever interests me right now. I find that the return on investment for the amount of time you put in versus the amount of knowledge you get out is much higher when I'm personally interested. So it might be something completely unrelated to maybe more strategic elements of tech that I'm trying to get, but if I'm interested, it's worth putting a little bit of time into that. And so, for me, several years ago, that was functional programming types. Elm, I went really deep into that. And I think that really unlocked a whole other way of thinking about software for me and helped me...like we were saying earlier, I was able to bring that back to the way I think about Rails applications, the way I think about test-driven development. And that really rounded out my thinking, I think. STEPHANIE: Yeah, I think focusing your energy into where you're interested in makes it easier, for sure. It makes it more fun. I think like you're saying, your learning gets accelerated. And I think it's also really cool that people have different interests that they do like to go deep on. So maybe you might be thinking that you should focus your energy on this other aspect of development that you think would be really cool or useful in your work but doesn't necessarily interest you that much. Chances are that there's someone else who loves learning and talking about it, and you can use them as a resource when you want to know more. JOËL: That is a really important aspect because learning is not necessarily a solo activity. So sometimes, maybe I'm not even just prioritizing things that I think are strategically good for me or even things I'm just interested in. It might be things that my colleagues are interested in. So we have a book club that we run at thoughtbot. We've been going through the book Ruby Science, and there have been some great discussions around that. Recently, we've also been doing watch parties for episodes of I know it is RubyTapas by Avdi Grimm, but I think it rebranded recently, and I forget the new name of it, Graceful...I think Graceful.Dev. STEPHANIE: Graceful Devs, I think, yeah. JOËL: So we've been watching some of these together as a team and then having a conversation afterwards, so that's also been great. STEPHANIE: That's really cool. Yeah, I think getting other people involved makes it a lot more fun. And you have an accountability buddy. And you can have those deep, thoughtful conversations about the things you've learned. MID-ROLL AD: Debugging errors can be a developer's worst nightmare...but it doesn't have to be. Airbrake is an award-winning error monitoring, performance, and deployment tracking tool created by developers for developers that can actually help cut your debugging time in half. So why do developers love Airbrake? It has all of the information that web developers need to monitor their application - including error management, performance insights, and deploy tracking! Airbrake's debugging tool catches all of your project errors, intelligently groups them, and points you to the issue in the code so you can quickly fix the bug before customers are impacted. In addition to stellar error monitoring, Airbrake's lightweight APM helps developers to track the performance and availability of their application through metrics like HTTP requests, response times, error occurrences, and user satisfaction. Finally, Airbrake Deploy Tracking helps developers track trends, fix bad deploys, and improve code quality. Since 2008, Airbrake has been a staple in the Ruby community and has grown to cover all major programming languages. Airbrake seamlessly integrates with your favorite apps to include modern features like single sign-on and SDK-based installation. From testing to production, Airbrake notifiers have your back. Your time is valuable, so why waste it combing through logs, waiting for user reports, or retrofitting other tools to monitor your application? You literally have nothing to lose. Head on over to airbrake.io/try/bikeshed to create your FREE developer account today! STEPHANIE: I'm curious, have you ever made a conscious effort to not focus on something super deeply? JOËL: I don't know that I've made a decision to be like, I will not spend time here. But I've definitely made a decision to I will invest here and maybe not care quite as much there. So I've done quite a bit of different front-end technologies, starting with jQuery and Backbone.js and moving through a lot of the frameworks. Somehow I have not yet done much React. It's sort of a big hole in that list of frameworks that I have worked with. It's just not something that I've prioritized. I've done other things. I've learned concepts that I think mirror a lot of what React does, but that's not been something that I've dug into. STEPHANIE: That's really interesting because I think a lot of people think that they need to learn React because it's the popular front-end framework of the time. And so they think that it's something that they should know, or if they do ever have to work on a project with React, that kind of contributes to that feeling. But I like what you were saying earlier about how you have experience with other front-end frameworks. And that can help inform you if you ever do have to work in it. And also, there are so many great expert React devs out there. Like, we don't have to all be that dev. JOËL: Yeah. I think there can definitely be a pressure to feel like you have to know it all. And a lot of these tech stacks are changing so quickly that it becomes overwhelming to try to just keep up with everything. STEPHANIE: For sure. I remember having to write some tests for a React app, and the things that I had learned several years ago using Enzyme or something were no longer as relevant today, and having to pick up on the new best practices for writing Jest tests and React Testing Library. It was a lot, even though I was able to identify aspects of it that lined up with what I knew. It can be overwhelming, for sure. And people spend a lot of time digging deep into this framework and like I said, becoming those experts and accepting that I probably won't be that person [laughs] was also a little bit liberating, I think. JOËL: It's also important, I think, to accept that these sorts of labels of I'm that person, or I'm not that person are not permanent. It's I'm not that person now because that's not where I want to prioritize my time. Maybe in two or three years, it will make sense for me to become that person. And I can become that person if I put in the time, but today is not the day for me to be that person. STEPHANIE: That's a really good way of putting that. I like that a lot. JOËL: One struggle that I have, and I've seen a lot of people too is that it's easy to get very scattered in your learning that you'll have a lot of different things you're trying to learn at the same time or you feel like you want to do a little bit of this and a little bit of that. And then maybe you don't go very deep in any of them and feel like you're not being very effective with your time. Do you ever feel that, and do you have any strategies you like to use to make the most out of your learning time? STEPHANIE: I really relate to that. And I think one resource that helped me reframe that conundrum if you will, was this book called Four Thousand Weeks: Time Management for Mortals by Oliver Burkeman. It was really interesting because it kind of turned productivity culture around a bit on its head because his whole thesis is that you won't achieve at all and that by trying to hack your own productivity, what you're really preventing yourself from doing is accepting the fact that time is finite. And that you have to make hard decisions about where to focus your time in a way that will enrich your life the most. And sacrifice the idea that you will get to do everything on your to-do list, that you will learn every framework that you want to learn. And it's still hard for me to totally accept that. But I think I'm inching towards the idea that if I do drop a ball on something that I have had bookmarked for at this point, you know, a year, I'm probably never going to get around to reading that. And that's okay because I'm still getting by with the things that I am learning and applying them in the aspects of my work that are relevant to me today. JOËL: That sounds like a really refreshing take on productivity culture, maybe with some hard truths in there as well. Is 4,000 weeks the human lifespan? STEPHANIE: [laughs] Yeah, it is. It's really funny because I think he even starts off in the book quizzing one of his friends, like, how many weeks do you think we have to live? And his friend very naively answered, "Oh, must be, you know, 500,000 or so," or something like that. But he used that as an illustration of how we inflate how much time we think that we might have in a day, a week, our lifespan. [laughs] JOËL: I'm a big history nerd in my personal time. You see this theme that comes up a lot in medieval European art and the 1400s after a lot of these big plagues have happened where they feature a lot of death or skeletons or those sorts of motifs that are much more prevalent than maybe an earlier art, and this idea that comes with a Latin phrase Memento Mori (remember death). And I think there's maybe an element of that that comes back into this book at least the way you were describing it, the idea that you only have 4,000 weeks, roughly, in your life, so make the best use of it. STEPHANIE: Yeah, absolutely. It's nothing new, for sure. I think it's just one of those things that we've been grappling with as a species for as long as we've existed. [laughs] So I don't know if anyone out there feels slightly relieved that it's okay for them not to get through their list of bookmarked articles about technical things. I hope that feels slightly better for you. JOËL: We give you permission for you, the audience, to go to your bookmarks and those articles that you've been meaning to read for two years and you haven't got to; it's okay to remove them. You will be okay. STEPHANIE: Agreed. So we've talked about how we spend our investment time. But I'm curious, do you have any strategies for people who do most of their learning in their everyday work? JOËL: You know, I think that applies to me as well. We've been heavily emphasizing investment time, but that's only one day a week. And four days a week, I am doing regular application development for clients. And so the majority of my hours in a week are going to be dedicated to that. I find that being very self-aware for the things that you do and trying to notice when I learn something new or when I interact with something new has really helped me get more out of my day-to-day work. And a way to level that, I think, is to be on the lookout for opportunities to share with others. And that can be as small as just put a today I learned message in a group chat, maybe in thoughtbot's Slack developer channel, and just say, "Hey, today I learned this interesting thing about a particular method." Or "Today I learned this weird thing about time zones." Or "Today I learned this interesting fact about testing." And then that might start a discussion, or it might not. But the fact that I took the time to take it out of my head and write it out, I think, makes that more concrete, and it helps me hold on to it. STEPHANIE: I've noticed you are really good about doing that, about sharing things that you encounter in your everyday work in a very low-stakes kind of way. I am not so good at doing that. I tend to be so steeped in client work, and I have to really intentionally, after a project is over, think about what I learned along the way. And oftentimes, they're not as small, incremental atomic bits of information but bigger picture things about, oh, I learned how to navigate this aspect of ambiguity. And maybe the next time, I can point to a past experience or lean on a little bit more on my gut instinct to guide me towards making the right decision. And I think that's an important aspect of learning too, even if it wasn't necessarily a technical tidbit. It is part of becoming a better developer, just as equally as gaining that more concrete technical knowledge. JOËL: Intuition, I think, is really important as developers, and honing that intuition is something that is really valuable. One way that I found helpful is dialogue, just a conversation with one other person, maybe it's asynchronous over Slack, maybe it's a call in person, and just talking through an idea that I have. A recent one and I think I mentioned this on the previous episode of The Bike Shed, was talking about RSpec matchers. And does your choice of matcher impact the sorts of design that will come out of the code that you write? Does EQ tend to push you in a direction maybe where you're less strongly encapsulating data? And so that's just a thought, and then you have a conversation about it. And then that can help sharpen your intuition so that the next time you're writing a test you're not just thoughtlessly bringing in a matcher because whatever; it's the thing to do. And initially, maybe it's not intuition; it's much more explicit. You're thinking, ooh, do I want EQ, or do I want not? But I imagine that after six months of me being hyperaware of that, I will have built up some intuitions to be like, oh, this is the place where we want a custom matcher, or here's the place where I want EQ. And my hope is that that will eventually come to the point where it's so natural. Someone would almost have to stop me and say, hey, wait, why are you choosing that? And then I have to think a little bit and be like, oh, it's because of these things. But I'll have started with a conversation, which then turned into just hyperawareness thinking about it every time I do that action which then turns into intuition. STEPHANIE: Yeah. I think you can also call that experience. I remember having a conversation with someone, and I told them that I could inject their brain with all of the knowledge and information that I had. But that isn't quite the same as having really experienced the process of gaining that knowledge through more conventional learning methods but also that day-to-day client work that you're doing. So I totally agree with you there. JOËL: You took this whole long thing I had to say and were able to condense it down to one word: experience. STEPHANIE: [laughs] JOËL: Which I think, yeah, exactly describes what I'm trying to say. And with that, shall we wrap up? STEPHANIE: Let's wrap up. JOËL: The show notes for this episode can be found at bikeshed.fm. This show is produced and edited by Mandy Moore. 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. If you have any feedback, you can reach us at @_bikeshed, or reach me at @joelquen on Twitter, or at hosts@bikeshed.fm via email. Thank you so much for listening to The Bike Shed, and we'll see you next week. Byeeeeeeeee!!!!!! ANNOUNCER: This podcast was brought to you by thoughtbot. thoughtbot is your expert design and development partner. Let's make your product and team a success.
This episode is sponsored by Tonic.ai – where your data is modeled from your production data to help you tell an identical story in your testing environments.[00:01 - 07:22] Opening Segment Need to generate fake data that looks, acts, and behaves like production data for your test environments? Check out Tonic.ai!Head over to https://www.tonic.ai/ and sign up today for a free two weeks trial sandbox!From full-time employment to consultancyOn why he calls his business the banana stand“There's always money in the banana stand.”[07:23 - 21:54] Doing His Own Thing and Gaining IndependenceAvdi on the difference between consultancy versus the banana stand modelWriting his e-book and getting into screencastsHow he managed a startup business, consultancy, and being a new father at onceThe reason behind the rebrand: From RubyTapas to Graceful.DevWhy Avdi is done subscribing to the corporate cultureThe unconscious bias in recruitment[21:55 - 31:42] Building on WordPressWhy Avdi chose WordPress as the platform for his businessWhat are the advantages over the other platforms?WordPress plugins: What you need to knowKeeping track of the changes and updates on the platform[31:43 - 41:46] Closing SegmentWhat's next for AvdiHis advice on delegating and building your email listFinal wordsTweetable Quotes“There's always the risk. There are no guarantees in this industry. There are no guaranteed retirement plans.” - Avdi Grimm“I think a lot of people in software are completely focused on either financial scaling or on like user scaling. The kind of scaling you need to plan for is devolving stuff from yourself, removing yourself as a bottleneck” - Avdi Grimm“Anything that I'm thinking of delegating or automating, always do it manually first, and do it manually for a while first and get a really good idea of what it is that I'm either delegating or automating.” - Avdi GrimmResources Mentionedhttps://www.tonic.ai/ - Sign up now for a two-week free trial!Exceptional Ruby by Avdi Grimm - Get a copy of Avdi's e-book at https://store.avdi.codes/l/NWtnkWordPressConvertKitLearnDashMemberPressWooCommerceConnect with Avdi on his site and on Graceful.Dev! Follow him on LinkedIn, too!Let's Connect! You can connect with me, Dr. McKayla on Instagram, Twitter and Youtube to look into engineering software, and learn from experienced developers and thought leaders from around the world about how they develop software!LEAVE A REVIEW + help someone who wants to know more about the engineering software world. Your ratings and reviews help get the podcast in front of new listeners. _______Transcription[00:00:00] Dr. McKayla: Hello, and welcome to the Software Engineering Unlocked podcast. I'm your host, Dr. McKayla and today after pleasure to talk to Avdi Grimm. But before I start, let me introduce you to an amazing startup that's sponsoring today's episode, Tonic.ai, the fake data company. So what does Tonic.ai do? I'm sure you know how complex and cumbersome it is to create quality test data.[00:00:27] Dr. McKayla: It's a never-ending chore that eats into valuable engineering resources. Random data doesn't do it and production data is neither safe nor legal for developers to use. What if you could mimic your entire production database to create a realistic dataset with zero sensitive data? That sounds amazing, right? Tonic.ai does exactly that. [00:00:50] Dr. McKayla: With Tonic.ai, you can generate fake data that looks, acts, and behaves like production data because it's made from production. Yet, Tonic.ai guarantees privacy so your data sets are safe to share with developers, QA, data scientists, heck, even distributed teams around the world. Visit Tonic.ai to sign up today or click the link in the show notes to get a free two weeks trial sandbox.[00:01:14] Dr. McKayla: But now back to Avdi. Avdi has been a developer for over 20 years and runs, similar to me, a training and consulting business. The main difference is that he has been doing this already for over 10 years. So I'm super thrilled to pick his brain today around everything business-related. He's also a consulting pair-programmer and the author of several popular Ruby programming books and has several courses on this subject on his website, Graceful.Dev, formerly RubyTapas.com. So I'm super thrilled that he's here with me today. Avdi, welcome to my show. I'm very excited. [00:01:51] Avdi Grimm: Thank you so much. I'm excited to be here. [00:01:53] Dr. McKayla: Yeah, I'm super excited. So I've been following your journey on Twitter and so on for quite some time. Very inspirational as well. And I have a lot of questions around how you run your business and why you're running the business and what we can learn from you, right, a seasoned entrepreneur and self-employed person to also maybe get a little bit more independence in our life, right? So this is probably the main goal for myself, for everything that I do is flexibility and independence. So why are you running your own business and how does this come about? Why are you not a software developer in a company somewhere?[00:02:32] Avdi Grimm: Right, yeah. I mean, to some degree, I feel like it's almost an inevitable career arc for somebody in software. You know, I know people who have avoided it, but a lot of the people that I kind of looked up to over the years went through, you know, they went through the full-time employment phase and then they gradually kind of moved out to becoming consultants and having various other side businesses.[00:02:55] Avdi Grimm: And, you know, come to think of it, I never really thought about this much before. I had the example of my dad who worked in software and hardware design, and he was an independent consultant I was growing up. So that was kind of normalized to me to, like, have your own thing [00:03:08] Dr. McKayla: Yeah, for me was quite different. Yeah. [00:03:11] Avdi Grimm: I think that I, I saw that on the horizon maybe from earlier than some people do, just because it was, it was normalized for me, you know? And it just seemed like that's what a lot of my heroes did in the industry was eventually they became consultants. [00:03:26] Dr. McKayla: Yeah. Yeah, it's good if you have like role models. For me, it was quite the difference. I always saw it that I will work at the company for a really long time and, you know, climb the career ladder somewhere. Actually, I started a family that I saw, oh, this is not working out as I expected. And as I would like it to work out, right? And so this was a little bit why I changed the thing. So you call it a banana stand. You don't call it like an enterprise or something. Why do you call it the banana stand? And what's your philosophy for your business? How do you run it? [00:04:00] Avdi Grimm: So, yeah., I've started using the term banana stand recently, especially as I've been kind of reflecting back on, you know, over a decade of doing this and, like, my style of, of running the business and writing a little bit more about that. So the, the term banana stand, it comes from, the show Arrested Development in which one of the characters says to another, this character is trying to save the family business and his dad who is in prison keeps telling him there's always money in the banana stand, which he completely misinterprets the message and winds up, burning down a banana stand that's full of literal money in the walls. I apologize if I've spoiled the show for you, but it's been out for a while. But you know, like, that phrase stuck with me. There's always money in the banana stand and that's kind of the way that I look at it.[00:04:48] Avdi Grimm: So there's kind of two sides to this, this independent business for me. There's the consulting side. And then there's the product side, product being kind of a broad term for selling books, selling courses, selling workshops. It's kind of a loose definition of product, but it's definitely distinct from the consulting side of my business, which is more like, you know, hourly consulting on people's projects.[00:05:12] Avdi Grimm: And I definitely look at the product side as a banana stand as like something that I kind of run casually, even if I'm putting most of my time into it now. I still run it kind of like lazily and you know, and it's my own banana stand to putter around in. I'm not, like, beholden to any, like, schedules and I'm not on any kind of like track of, I have to, you know, make this much money.[00:05:35] Avdi Grimm: I have to, like, make sure that my VCs get a payoff and stuff like that. It's just kind of like, you know, I get the putter around in the banana stand and work on whatever I feel like. And, you know, that phrase there's always money in the banana stand is kind of like that has informed the way I think about employment a lot, because, for me, if I'm in between jobs, I used to think of it as in between jobs, I don't think of it that way anymore, but if I'm in between jobs, quote, unquote, that's not like a time to panic and, you know, and, like, do all the interviews and freak out about how I'm unemployed. That's time to just focus on the banana stand.[00:06:12] Avdi Grimm: And until something comes along, that makes sense. And I think that's been helpful to have that. And, yeah, that side of my business, really like, so we talked about consulting, but that side really came from early on, getting into e-book sales, which we can talk about how that story went if you want. [00:06:28] Dr. McKayla: So if I understand that you would say there's the consulting, which is, you know, it's something that you have continuously to invest in and also make some contracts around that.[00:06:37] Dr. McKayla: I'm also doing some consulting, which means like now I'm dedicating, let's say 30 hours for this project for three months, right? And so you are more or less sold out for that time? [00:06:48] Avdi Grimm: It's kind of like a real job.[00:06:49] Dr. McKayla: Yeah. It's like a real job, only that you have all the risks as well, which is even worse.[00:06:58] Avdi Grimm: But there's a lot more, even there there's a lot more independence. And honestly, you know, one of the things that I value on the consulting side is that, I mean, yeah, you have the risk, but there's always the risk. There are no guarantees in this industry. There are no guaranteed retirement plans.[00:07:13] Avdi Grimm: And what I don't have to do is I don't have to buy into a lot of corporate mission and values BS that I don't believe in. [00:07:22] Dr. McKayla: Yeah. So you have your consultancy and then in between those consultancy gigs, right, when there are no consultancy gigs, you're not freaking out, you're working on your banana stand and you grow that, right? And the good thing it's about the products and, you know, this mindset, I think, is that even a little bit of work on them pays off, right? So it's a little bit like an investment. So you create another free course, maybe, and you have like a, you know, a good lead magnet, have people that are interested in your work.[00:07:53] Dr. McKayla: Then you create a paid course when you have time and so on. And it stays, right? It's something that's there for longer, whereby the consulting, it comes, it brings normally quite good money, from my experience, right? In a very short amount of time, but then it goes away as well. While the banana stand, maybe it's a little bit, it's not this boom, now we have like all this money. But it's also not going away, right? Yeah, exactly. It's a snowball. It's a flywheel somehow, right? Yeah. [00:08:20] Avdi Grimm: Yeah. I mean, you know, a consulting gig is one big blizzard that, you know, that melts the next week and a banana stand is a snowball that you just kind of gradually roll over the years.[00:08:32] Dr. McKayla: And so how long did it take for you to have this banana stand where you could say, well, I have some predictable income that, you know, makes me sleep at night? . [00:08:43] Avdi Grimm: So actually I think, you know, my trajectory there probably was a little different from a lot of people's. I kind of, you know, I put along having the book, the e-book business on the side for a few years, and that really just fell out of speaking.[00:08:58] Avdi Grimm: It happened because I was giving talks at software conferences. And I was pouring a ton of time and energy into researching these talks. And I was like, you know, I wonder if there's a way to kind of recoup. You know, I have all this material that I put together. I can't fit it all into a talk.[00:09:14] Avdi Grimm: And I wonder if there's a way to like recoup the energy that I've been putting into this. And that was really the origin of the first book, which was Exceptional Ruby, which is about error handling and failure management and I made a book out of like the, all the extra material that I put together for that.[00:09:29] Avdi Grimm: And that was that kind of launched things. And so that was kind of a side business. It was a nice little side business for a couple of years. And then what changed was I decided to get into screencasting. I've been doing the books, I've been doing some podcasting and this was around, you know, this was like 20, maybe 2010, 2011, 2012.[00:09:52] Avdi Grimm: A lot of programming screencasts started taking off. And I decided to get into that business. And I had a vision of like, what if we did that only much shorter and more focused? And, you know, just do like five minutes or less. You know, get one idea across at a time. And so, unlike most banana stand efforts, that was really like a do or die, not do or die.[00:10:13] Avdi Grimm: I don't like that terminology that was a go big or go home. That's the phrase I'm looking for, go big or go home because I knew how much energy went into video production and it is a lot. And so it was like, okay, this is a project that I'm going to test the waters. If it does well, I'm going to try, you know, the only way this works is if I can make it into my full-time job, otherwise I'll just stop. And yeah, I got really lucky. I was coming in at a good time. People really liked the format. And so within, I think around a year or two, I was able to say, I don't actually need other jobs right now with the RubyTapas screencasts. [00:10:49] Dr. McKayla: Oh, yeah. That's nice. [00:10:51] Avdi Grimm: Yeah. So that was, that was kind of like line goes up. That was less, you know, slowly rolling snowball.[00:10:56] Dr. McKayla: Yeah. And how much time did you spend in this line goes up phase? You know, because somehow when you're focusing on something, like doing the screencasts, you're not having an income, right? And then if you go to consulting, you don't have the time. So you have to switch between those boats of not having time or not having money. So how did you handle that at that time? [00:11:17] Avdi Grimm: I didn't sleep. I had at least one new baby at the time, too. And, like, I was working consulting gigs. I don't know. It's kind of a blur at this point. I don't think that I could do that kind of thing again, unless it was a great need. 'Cause I was also, at that point at the beginning, I was producing three episodes a week. [00:11:41] Dr. McKayla: Wow. Yeah, that's a lot. [00:11:43] Avdi Grimm: Yeah. I was doing a lot at once and it was kind of nuts. [00:11:46] Dr. McKayla: Yeah. And I actually really liked, with the whole style also, when I look through your blog posts and everything, right, you have your own style. You didn't call it like Professional Ruby screencast, you call it RubyTapas, right? And the tapas probably transport the message of it's small pieces of very digestible, tasty things, right? [00:12:09] Avdi Grimm: And I feel like some of that probably also fell out of just like the Ruby, like, the community has always been super whimsical and kind of silly. And so, you know, I can't take full credit for that approach. [00:12:22] Dr. McKayla: Yeah. But recently, I don't know exactly when, but you rebranded your whole RubyTapas into Graceful.Dev, why is that? For me, it seems like it's now broader and there can be more happening, but what's your strategic vision behind, you know, going from RubyTapas to...[00:12:40] Avdi Grimm: I do not do strategic visions. I used to, but, man, I avoid strategy as much as possible now. I mean, that's okay. That's not true. I do a little, I do a little. But I try not... [00:12:54] Dr. McKayla: You definitely have some reasoning behind it, right? [00:12:56] Avdi Grimm: I try not to have five-year goals. Let's put it that way. I don't do goals. There's definitely some reasoning there. There's a direction there. I mean, the direction was one that I've honestly had in the back of my mind for a really long time. A lot of people don't know that, like, the same day in, like, 2011 or whenever it was that I registered RubyTapas.com and associated addresses. I also registered CodeTapas.com.[00:13:20] Dr. McKayla: Okay.[00:13:21] Avdi Grimm: So like, you know, I never wanted to completely limit myself to Ruby, strictly Ruby content. You know, I've worked in, God, like a dozen languages over the course of my career. And Ruby was just an area that I wound up focusing on a lot and wound up making a lot of money in. And enjoying, I really, really enjoy the language still and the community as well.[00:13:42] Avdi Grimm: But I always had in the back of my mind, you know, that I would expand, but, you know, I didn't wound up not using as you'll notice. I wound up not using CodeTapas as the branding 'cause I was really, like, moving in a different direction, broadening not just in, like, in the technologies that I want to cover, but also I just spend a lot more of my time thinking about broader topics like, the sustainability of the development that we do and systems thinking, understanding the systems in which we work and the systems that cause the work that we have to exist. And yeah, so just, for a lot of reasons, it made more sense to me. And in some of my talks, I've been really focusing on the concept of grace.[00:14:21] Avdi Grimm: So it just made more sense to me to move in that, that branding direction. And then recently I had the opportunity to finally, like, do a lot of the heavy lifting of moving content over. And so I took that. [00:14:33] Dr. McKayla: Where did this opportunity come from? [00:14:35] Avdi Grimm: Well, so I had a point a few years back where I was like, okay, you know what? I've been sort of off on my own, doing my own thing for a long time. I would like to get back into, like, the hustle and bustle of being part of a big team that's making something real in the world. And I spent, I don't know, a year or so interviewing pretty seriously at a bunch of different places. And that did not go as expected.[00:15:00] Avdi Grimm: And I finally decided that I, wasn't going to focus on that anymore after all. And I was just going to get back to the banana stand 'cause there's always money in the banana stand. And that has been actually an immensely satisfying experience, kind of coming back to it with a fresh, fresh, like maybe this is my calling perspective.[00:15:18] Dr. McKayla: Yeah, I actually followed this journey a little bit on your Twitter, you were sharing it with us and also the hassle of the whole, you know, getting naked in front of strangers, you know, and really selling yourself. And I mean, you have been in the industry for so long, you have shared your learning.[00:15:38] Dr. McKayla: You know, you have some portfolio online. It's not like somebody comes and has no idea about you, but still, it felt like at least what I got out of the tweets, right. What I read into them was that every interview was a little bit, it wasn't really like keeping your dignity, right? So you had really to get naked in front of them to do all these silly things.[00:16:03] Avdi Grimm: You know, I wouldn't, I actually, I would argue that it's not, it wasn't really about being naked. It wasn't really being, about being transparent. It was about people wanting you to do a very special dance for them that strokes their ego and me being at a point in my career and life where I'm just like, I'm not going to do that. Why would I do that? Looking back I got some actually really nice offers from some, you know, well, large companies anyway, but in the end I was not comfortable taking any of them. And in part, because of what I saw during the interview process.[00:16:39] Dr. McKayla: Okay, what did you see? [00:16:41] Avdi Grimm: Well, you know, so actually, let me tell you about something I just heard recently from a friend of mine, because I hear the same story over and over again. Like my story, what I've realized is my story is not at all unique. So just the other day I heard the story again of like, basically, you know, an extremely senior well-respected brilliant engineer gets asked by a friend that works at a FAANG, you know, works at one of these giant unicorn Silicon valley darlings, gets asked to come interview there. It's like, we'd love, you know, I'd love to work with you here, which is basically what happened to me, a number of different places. And, you know, so they kind of go into the interview silo and then they go through this process where in, you know, in this particular case, like they got interviewed by someone who was totally unrelated to the group that wanted to hire them because this is the way the process works. You know, we don't want bias in the system. There's a lot in these processes that are supposedly about eliminating bias, it's actually creating it.[00:17:42] Avdi Grimm: We can talk about that more in a minute, but, you know, was interviewed by someone totally unrelated to that team. And basically, they were like, you know, show that, you know, by heart, my favorite algorithm,[00:17:55] Avdi Grimm: I happen to have a favorite algorithm. You're going to show me that you can, you can identify that I'm thinking of this algorithm and then you can write it by heart. And like that wasn't an algorithm that this engineer had used before. And so it wasn't one they thought of, you know, I've got a lot of stuff in my background where it's like, I know of algorithms that probably most engineers haven't heard of because they happen to be useful for networking middlewares and I hear this all the time.[00:18:18] Avdi Grimm: Anyway, they got flunked out because they couldn't, you know, reproduce somebody's favorite algorithm from, by heart. And this is somebody with, like, close to my level of experience. It's nuts. And I keep hearing this. It's actually, you know, I've heard this from a lot of people, with my, lot of friends of mine, with my level of experience in the industry, that these systems, they're really tuned to find people that are exactly like the people who designed the system in as many ways as possible. [00:18:47] Dr. McKayla: Yeah. [00:18:48] Avdi Grimm: Like, for me, I don't care. I am a white guy with plenty of opportunities and a banana stand. You know, I can fall out of a process like that and be fine. But what I'm seeing is that these processes are also, I mean, they're very gatekeep-y and they're very clicky. They're very in-crowd, they're very, very, like, we are expecting people that sort of show the secret insignia of a very select group of Silicon Valley insiders, basically. [00:19:18] Dr. McKayla: I think one of the problems is also that they often require a tremendous amount of preparation, right? And if you think you are an experienced engineer, maybe at that point, you have a family, for example, around, right.[00:19:33] Dr. McKayla: And some other commitments, it gets really hard to study some, you know, lead code examples, just to be as fast as, you know, somebody else, right? And I think this is also something that I criticize a lot when I'm thinking, and then you don't even need that, you know, you don't need that knowledge. You could really solve real-world problems.[00:19:51] Dr. McKayla: You have some experience and background, right, that you have worked on. And it's probably also super challenging. So looking really at what that person has already achieved in the last, let's say 15 years would be, you know, and then really let them explain that in-depth, which shows that they probably can learn, you know, whatever problem or solve whatever problem you throw at them. It would be a much better way than, you know, getting back to bubble sort and, you know, and linked list or something, right?[00:20:19] Avdi Grimm: And this, this is a big part of where the bias is in the system, and this is why I get sort of morally outraged by it, you know? I don't do well in these, you know, I might not do well in these because I'm at a point where I just can't be arsed to do that much homework of like learning somebody's arbitrary favorite algorithm.[00:20:36] Avdi Grimm: But what they're implicitly biasing towards is the sort of stereotypical young white dude that has all the time in the world and doesn't have a family to support and doesn't have any disabilities. And, you know, I could list off a lot of, you know, a whole lot of privileges there that go into that sort of their really looking for that person who has nothing else going on in their life.[00:20:59] Dr. McKayla: Exactly. [00:21:00] Avdi Grimm: You know, so that they can then like induct them into the cult of your passion is your software career. And that bugs the heck out of me, you know, and I see this really like, you know, who is really hurting is people that come from backgrounds that aren't like mine and have other stuff. They have people that they're taking care of. They have kids, they have elderly parents, they have families that they're sending money to, and they can't afford a, you know, a break in their income while they spend six months, you know, doing nothing but the interview game. You know, there are so many things, and the people that are, you know, so many minorities in this country already have, in the world or, you know, minoritized people, I shouldn't say have so many other calls on their time because of the way society is already stacked against them. That it makes it impossible to jump through these. [00:21:48] Dr. McKayla: Yeah, I totally agree. I totally agree. Yeah. [00:21:51] Avdi Grimm: Sorry, I get worked up.[00:21:53] Dr. McKayla: No, I want to come back a little bit to your banana stand again because this is the way out for, for you. And it's a little bit the way out for me as well, right? So with Graceful.Dev, I don't know if you had that before. You had RubyTapas and you had like the courses, but Graceful.Dev is now a full-fledged membership site, right? So you have different courses and you build it on top of WordPress. Why did you go this route? I mean, you could have like your courses on some third-party platform, right? From, I don't know, Teachable or whatnot, you know, many, many different PODR and so on. But you host it yourself and then you have the membership site as well. And you do that. Why does choice, like, I'm also thinking about right now, awesomecodereviews.Com for example, runs on, I switched from WordPress to Gatsby. So it's a static side and I'm thinking on how to give it a membership capabilities.[00:22:49] Dr. McKayla: And I looked at SurplusCI and so on, but why did you go for WordPress? And are you happy with it? And what's the philosophy behind it? What do people get from this membership? What do you want to build? Probably there's a community behind, right? And some, some visions that you have for that.[00:23:06] Avdi Grimm: This is an opinion I've kind of come to over years of using many different systems. And there's continuum here because you know, a lot of people running, particularly running education sites for developers have rolled their own system from scratch. They've built their own servers or their own applications.[00:23:26] Avdi Grimm: And so, you know, there's that continuum all the way from roll your own to, you know, use a completely hosted service, like Podia, Thinkific, whatever, you know, and I've, I've tried a lot of these different things. I started Ruby topis out on somebody else's platform.[00:23:39] Avdi Grimm: And it was super limiting. You know, there would be things that people were asking for for years and they just, that feature wasn't a priority for the platform because you're competing, you know, you're competing with all the other people who use the platform. And for, you know, whose feature is most important.[00:23:54] Avdi Grimm: So it was very limiting to use a hosted platform, and I've periodically I try them again and they're always, there's always like something pretty early on, it's like, wow, I really need this feature. And I don't have it. But I've also toyed with building my own. I did that for a few years and you know, what I realized was, if I did that, my show was going to become about building an app to support the show, because that's what I was going to be spending all my time on, because it's a lot of work to build.[00:24:23] Dr. McKayla: It's a lot of work, yeah. [00:24:25] Avdi Grimm: People don't realize, you know, how many features are expected in an application that sells content and serves content and keeps track of people's progress in the content, et cetera, et cetera, et cetera.[00:24:38] Avdi Grimm: And yeah, I just, that was not the show that I wanted to be doing was, you know, I didn't want to be like here's videos about how to build a place that hosts these videos. So WordPress has turned out to be a really happy medium kind of between those two extremes. WordPress is just incredibly mature software.[00:24:56] Avdi Grimm: There's a lot of people in, particularly, the developer world that are kind of biased against WordPress and sadly against like the PHP ecosystem entirely, which I think is really undeserved. There's a lot of really, really good people working in this space. And the ecosystem is just amazing because you can kind of build anything you want and you can get as little or as much support as you want.[00:25:20] Avdi Grimm: You know, it's easy enough to build your own plugins for WordPress to just do a little tweak here, a little tweak there. You know, the architecture of it really supports the idea of exposing everything it does as hooks. And then you can hook your own stuff into those hooks, which is why it has this great plugin ecosystem.[00:25:36] Avdi Grimm: But one of the really cool things about the plugin ecosystem around WordPress is A, there is a plugin for everything, like, anything you might want to do. Somebody has got a plugin for it. And B, usually they have, like, a premium version, which comes with support. And I have had the best experience with premium plugins for WordPress.[00:25:55] Avdi Grimm: Like, you know, people just like being very responsive to the people that are giving them money and coming back and, you know, with bug fixes or like going into the, you know, going into your site and making, figuring out why it's not working. And so it's like, it's one of the rare places I've seen that people are putting out a ton of open-source software, but also getting paid for their work.[00:26:16] Avdi Grimm: Because all these plugins, like the base version at least, is always open source. And then basically you're paying them for maybe some premium features, but mainly for a support contract and, you know, and so people are making their living, creating open-source software. And I think that's pretty cool. And it's also, it also has done really well for my business. [00:26:32] Dr. McKayla: Yeah, and it's true. And so when I'm thinking about your course software, did you get a plugin for that? Or did you have to write it yourself or do you have like a plugin and then extend that on your own? How does that work? You're hosting your videos, but then they're also like, you know, questionnaires, for example, some quizzes, you know, as you said, you see that people, you know, it somehow tracks the progress of the people. It has to know that you're a member that can access that course, the other course. All of that functionality, does it come out of the box with some plugins for WordPress? Or did you have to implement that yourself or was it a mixture that you're actually getting a plugin and then you can, you know, enhance that with your own code?[00:27:15] Avdi Grimm: Great question. So, there are two to three categories of plugins that go into a site like this. I mean, my website has a lot more plugins than that, but there's sort of maybe three basic pieces. And one is learning management system LMS, otherwise known as courseware. So that's a category of plugins I could probably reel off maybe six of them off the top of my head, I'm personally using LearnDash, which is one of the older ones and one of the more, probably the most popular one in WordPress right now. And it's very mature. It's a little clunky for me sometimes because it's really targeting in many ways, it's targeting like serious learning institutions where they have like accreditation concerns and certificates.[00:27:59] Avdi Grimm: And like, you can't take this course until you take this other course, lot of stuff that I don't care about. On the flip side, it's very mature. They handle all the things that I might want to put into it. They just also, also a lot of stuff that I don't care about. And then, so you've got, like, there's learning management, that's one. There's membership, which is like another whole category of plugins, which are generally focused around, given this account, what material does this person have access to? And that includes courses, like what courses does this person have access to. [00:28:28] Dr. McKayla: So they work nice together, LearnDash and the membership thing. [00:28:30] Avdi Grimm: Yeah, so generally what you see, so I'm using LearnDash on the LMS side, I'm currently using MemberPress, which is one of the more popular membership management plugins.[00:28:39] Avdi Grimm: Generally these plugins, they work hard to work with each other, you know, different teams usually, but they work hard to work with each other because that's where a lot of the value comes from. And so they have explicit support for each other. And then the third piece often is like your e-commerce, how you sell the thing.[00:28:56] Avdi Grimm: And that is often a separate plugin as well. Like in the WordPress ecosystem, it's usually WooCommerce. Sometimes it's EDD, Easy Digital Downloads. Now I've reeled these off like they are distinctly separate categories, but actually almost everyone in each of these spaces will happily give you like all of the above kind of in one.[00:29:18] Avdi Grimm: Because they all kind of, they'd grow, all gradually expand out to include each other's features. So like LearnDash, you can do a pretty basic membership management using the groups that are built into LearnDash. You can sell courses directly. Like they have Stripe integration and stuff directly from LearnDash if you want to, it's kind of basic, but it's totally there.[00:29:36] Avdi Grimm: MemberPress recently introduced their own courseware plugin for MemberPress. You can just like stick with that company if you want, as long as you're okay with like a more basic courseware offering. They also have the storefront part built in if you want to use it. So there's a lot of blur between these plugins as well.[00:29:54] Avdi Grimm: Yeah. [00:29:55] Dr. McKayla: Yeah. Okay, cool. And so are you then enhancing that, is that possible, especially if you have like the paid version, could you just write that? And then how do you keep track of your own changes and new updates that are coming from the team? How do you integrate those things? [00:30:09] Avdi Grimm: So one of the marks of a good industrial strength WordPress plugin is that they have well-defined hooks. You know, I was talking about like, WordPress is built on the concept of hooks. They have well-defined hooks that are documented. And so, like the ones that I work with do, they have good documentation sites and they have all these hooks that you can like, here's how you change this, you know, here's how you hook your own thing into this particular part of the interface or this particular process.[00:30:36] Avdi Grimm: And then, so what I have is what they call a site-specific plugin that I keep under version control, and I have a deployment system for that pushes it out to my way. And my site-specific plugin, basically just very selectively has a few, there's a few hooks where I want to customize something in one of those other plugins.[00:30:54] Avdi Grimm: And it just like hooks its own handler into just the, like the very specific hook that is one tiny piece that I care about changing. It's very small. The site-specific plugin is very small. I try to keep it very small and very focused. [00:31:07] Dr. McKayla: Okay. But so it has a valid defined API or hooks that you can really enhance. You're not going in and hacking in their, in their code base, right? So you're on the outside, whatever they allow you to change. [00:31:18] Dr. McKayla: Yeah. And if you're going to really get into this ecosystem, that's one of the things you want to keep your eye out for is like, does it seem like these people are really supporting that kind of external hooks?[00:31:28] Dr. McKayla: Yeah, it sounds very interesting. And I know quite a couple of people that are running WordPress websites and have a lot of, you know, like you said, WooCommerce, or like a membership sites and they're very, very happy with it. Maybe my last question for you is around, you said you are not going to plan for five years and so on, right? But I think everybody has some, some vision you know, some, some reasons why you'd be doing things like transitioning from RubyTapas to Graceful.Dev, right? What do you see yourself, do you want to do, is there a possibility that Graceful.Dev is really your full time thing and that you're not doing any consulting or do you want to keep doing consulting on the side? Or, you know, where are you heading towards, what's your ideal case?[00:32:16] Avdi Grimm: I wish I had a good answer for you. You know, I want to keep being able to do what feels right at the time, which is kind of what I'm doing right now. You know, Graceful.Dev is supporting me pretty decently along, you know, that alongside of my other, you know, other products and things. You know, I take consulting gigs as they look interesting.[00:32:35] Dr. McKayla: Yeah, and are you a solopreneur or do you have, like, a team that really helps you? [00:32:39] Avdi Grimm: Oh yeah. Good question. I don't have any full-time employees for years and years. I've employed people very part-time here and there, only ever like a handful only ever like maybe three to five at most, at any given time. Actually five is probably more than I have, but like I have somebody that's I've worked with for a long time, that handles kind of first line of support.[00:32:59] Avdi Grimm: So support emails first go to them and then they escalate them to me. I have somebody I'm working with now who's doing a lot of, like, helping me with content, like doing video editing or fixing up blog posts that have become, like their formatting has gone wonky or is out of date or something like that. Yeah. So I have a few people that just like very part-time helpers.[00:33:21] Dr. McKayla: Yeah. I'm currently right now in this position of getting people and I find it really difficult finding the right people because, you know, if you're already in this, okay, I need help now. I don't know how you overcame that stuff, but for me, it's like, I need help now, and I can't grow, you know, without this help. But I also can't really make the time to find the right people and to teach them and do onboarding. [00:33:44] Avdi Grimm: And that is, that is the classic catch-22. And there's no easy way out of it. You know, the point where you absolutely don't have, like, you don't have the overhead space to train somebody, but you need to train somebody in order to get the overhead space.[00:34:00] Avdi Grimm: Yeah, I wish I had an easy answer for that one, like that parts of slog. And eventually you kind of pull your head above it, but it's hard because, yeah, like the effort involved in like getting through that catch-22 is exhausting. I will say this about it. And, and this has informed my work for a long time.[00:34:20] Avdi Grimm: This is the most important kind of scaling to plan for. I think a lot of people in software are completely focused on either financial scaling or on like user scaling, you know, the, your user base scaling up like our, will our code base support unicorn scale. That is by far like the least common form of scaling that you have to support.[00:34:42] Avdi Grimm: The kind of scaling you need to plan for is devolving stuff from yourself. Taking, removing yourself as a bottleneck. That is the most urgent and immediate form of scaling that you're going to face. And so one of the reasons, I have a lot of reasons, but one of the reasons that I use WordPress is because it is the dominant player.[00:35:02] Avdi Grimm: Like, it powers like half the web now, and there is this huge ecosystem. And if I need somebody to do like copy editing, I don't need to teach them how to use GitHub and like commit things, you know, I don't need to find a copy editor, but then teach them how to use my special, precious bespoke system.[00:35:20] Avdi Grimm: They know how to use WordPress, whoever they are, they know how to use WordPress. And you know, if I need to get somebody, you know, if I want some help with my site because I don't have time to diagnose one particular bug, it's really easy to find WordPress consultants, and there's just so many things there where it's easy to find people that can do the thing that you need help with.[00:35:44] Avdi Grimm: And that's just as a general kind of policy. That's one of my biggest considerations when choosing anything is not, you know, not is this going to scale up, but can I scale it away from me? Can, you know, can I remove myself as the bottleneck for this in the future? [00:36:00] Dr. McKayla: Yeah. Yeah. That's such a good mindset. And I'm currently learning a lot with it and you know, it takes much more time and much more energy than I thought, but I also see that, you know, if you have already one person, right, so finding this one person, it means that you have to work with six different people. And then you realize, oh, it's, you know, it's, it's making more trouble that what I'm getting out of.[00:36:23] Avdi Grimm: Yeah. And I should say here, like, use my bad example for learning. I hit a crash at one point where I really wasn't like I was, my outgo was bigger than my income. And a big piece of that was that I had, I had tried to devolve too much of myself. You know, I tried to become too big and pay too many people to do too many different things.[00:36:45] Avdi Grimm: And the funny thing about what was happening there was that I was still swamped. I still had too little time. And it was because I had basically, you know, installed myself as a manager and I was spending all of my time helping people get unstuck and managing things. And so, yeah, it's really easy, like once you, once you kind of start going down that delegation road, it's really easy to go too far. [00:37:10] Dr. McKayla: Yeah. Yeah. I think, I think one step at a time and keeping the focus like I really would like to create more content, have more of this really quality time doing what I love to do like teaching, thinking about content, writing blog posts, right?[00:37:25] Dr. McKayla: This is really what gives me energy and less about the administrative stuff. But then, as you say, I have to be real careful not to get people adding to my administrative stuff. So, yeah. But yeah, very, very good.[00:37:38] Avdi Grimm: I think it's important to always know that like you can do the thing. One of my personal policies is like, anything that I'm thinking of delegating or automating, always do it manually first and do it manually for a while first and get a really good idea of what it is that I'm either delegating or automating.[00:37:55] Avdi Grimm: And usually what I discover is that I can automate less of it than I was planning. And it's enough. Or I can delegate less of it than I was planning and it's enough, but yeah, as it's always very tempting to be like, man, there's this one aspect of my business. I just don't want to think about at all. And so I want to delegate, delegate that part of it.[00:38:13] Avdi Grimm: And I think that's really dangerous though, that leads down that road of like now I'm just jammed up managing everyone and paying too much, you know, not balancing my books. [00:38:22] Dr. McKayla: Yeah. I think that's true. [00:38:25] Dr. McKayla: Do the thing the hard way for a while, figure out the smallest piece of it that you can automate or delegate.[00:38:31] Dr. McKayla: Yeah, cool. So Avdi, thank you so much for sharing all your insights. Is there something like, if there are developers out there that think, oh, I would like to have some side hustle, you know, get a little bit more independence or maybe even go full in, what do you think what is a, is a good strategy nowadays?[00:38:50] Dr. McKayla: You know, when there are already so many, screencasts, when they're already, you know, so many other things, so many blog posts, so many podcasts and so on. What do you think? How should people start doing it? Is a blog still a good first outlet? [00:39:04] Avdi Grimm: There's no going wrong with blogging. Honestly, like, it really doesn't matter like what your plan is. Get good at writing about things. Like, practice writing. It's just that I feel like that skill has informed, has improved so many other aspects of my business and of my career. I mean, writing about what you learn is such great practice for even if you just stay a regular developer, you're going to be a better developer because you are better at explaining and documenting your work to other developers. And so like, yeah, there's just no downside to getting in the habit of writing all the time about the work that you're doing. [00:39:46] Dr. McKayla: Yeah, that sounds good. Yeah, I think so too. I think that's a such a good advice. There's I think there's so many positive things that can come, be that job opportunities or maybe you have to jump on, you know, you get better as, as you said, in your communication skills, better at communicating with your colleagues and so on. So yeah, I think this is a great, this is really a great insight. Thank you so much, Avdi. [00:40:09] Avdi Grimm: Oh, I have one other thing on that, on that note that I should include. Start building your, your mailing list now. [00:40:16] Dr. McKayla: Mailing list, yeah. Good idea. Independent mailing list, I would say.[00:40:20] Avdi Grimm: You know, do that blog thing and then slap, you know, go with ConvertKit or something and slap a mailing list, subscribe on that thing, and just start collecting that snowball now, because that, it takes a long time, but oh my gosh, the opportunities that come out of having a good mailing list. There's nothing else like it.[00:40:38] Dr. McKayla: Yeah, that's true. Yeah. I think that's a great add, great addition to what you said before. So Avdi, thank you so much for taking the time and talking with me and sharing everything with my listeners and yeah, have a good day.[00:40:53] Avdi Grimm: Thank you so much for this. I really enjoyed it. [00:40:55] Dr. McKayla: I enjoyed it too. Thank you so much. Bye bye. [00:40:58] Dr. McKayla: This was another episode of the Software Engineering Unlocked podcast. If you enjoyed the episode, please help me spread the word about the podcast, send the episode to a friend via email, Twitter, LinkedIn, well, whatever messaging system you use. Or give it a positive review on your favorite podcasting platforms such as Spotify or iTunes. This would mean really a lot to me. So thank you for listening. Don't forget to subscribe and I will talk to you in two weeks. Bye.
Teaching Testing and Design Guests Betsy Haibel (https://twitter.com/betsythemuffin): CTO at Cohere (https://twitter.com/wecohere). Blogs at betsyhaibel.com (https://betsyhaibel.com/). Avdi Grimm (https://twitter.com/avdi): Head Chef at RubyTapas (https://www.rubytapas.com/). Blogs at avdi.codes (https://avdi.codes/). Penelope Phippen (https://twitter.com/penelope_zone): Works at Google, makes Rubyfmt (https://github.com/samphippen/rubyfmt), helps make RSpec (https://rspec.info/), and is on the board of Ruby Central (https://www.rubycentral.org/). Blog (https://penelope.zone). Summary After the discussions on testing and design in episodes 68 and 69, I had so much I still wanted to talk about in testing, design, and teaching testing and design. So I convened a panel with previous Tech Done Right Guests Avdi Grimm, Betsy Haibel, and Penelope Phippen to help me think through all these topics. I was very happy to have all of them on the show, and I think it's a great conversation. Stay tuned until the very end for an update about the show. Related Episodes with These Guests Avdi: 20 Years of Web Development (https://www.techdoneright.io/46), Ruby Tapas and Avoiding Code (https://www.techdoneright.io/24) Betsy: Diverse Agile Teams (https://www.techdoneright.io/38), How Set Design Can Inform Software Architecture (https://www.techdoneright.io/21) Penelope: Code Style and Community (https://www.techdoneright.io/54), Back in the Testing Weeds (https://www.techdoneright.io/33), In The Testing Weeds (https://www.techdoneright.io/004-testing-with-sam-and-justin) Notes 00:50 - Previously On: Re: Testing * Pragmatic Programmer at 20 with Dave Thomas and Andy Hunt (https://www.techdoneright.io/68) * Teaching and Learning with Sandi Metz (https://www.techdoneright.io/69) 02:53 - Testing and Design * 99 Bottles of OOP (https://www.sandimetz.com/99bottles) 05:43 - TDD Test Driven Development (https://technologyconversations.com/2013/12/20/test-driven-development-tdd-example-walkthrough/) Do We Need Constants (http://www.virtuouscode.com/2011/08/18/do-we-need-constants/) 09:36 - Testing, But Not Developer Testing + Sliming The Test * WikiWikiWeb (http://wiki.c2.com) 13:41 - Why + How Did You Learn TDD? 20:24 - TDD: Not a Robust Process 24:19 - Rails + Unit Testing 27:41 - Is TDD really dead? 35:06 - Keeping Code In Your Head 37:32 - Approaching the Testing and Design of Code 38:59 - What would convince you to stop doing TDD? Special Guests: Avdi Grimm, Betsy Haibel, and Penelope Phippen.
Avdi is a prolific Ruby developer with deep ties to the community. A well-known speaker and educator, he created Ruby Tapas and has led a successful career as a consultant. Avdi shared his experiences with imposter syndrome and talked about the importance of acknowledging privilege where it exists in the software industry. Avdi's internet home: https://avdi.codes
Chris and Brandon talk about some actually good Christmas music, Brandon's upcoming RubyTapas guest episode, building your personal "BRAAAAAND", losing their enthusiasm for programming as a hobby, and graduating from the guilt of not learning and doing programming with every spare moment. Apologies for the audio quality of our backup recording, we're back on track next week! Buffalo Trace Bourbon http://www.buffalotrace.com/ Yuletide Bangerz by Jonwayne https://www.youtube.com/watch?v=kLzC8WDcjsw Sufjan Stephens Songs for Christmas: O Holy Night https://www.youtube.com/watch?v=mZlb-FL1cN0 Sufjan Stephens Songs for Christmas: Christmas in the Room https://www.youtube.com/watch?v=PyGmuxx4wSs Sufjan Stephens Songs for Christmas: Good King Wenceslas https://www.youtube.com/watch?v=h4kDTb3DKJI Avdi Grimm's RubyTapas https://www.rubytapas.com/ RubyTapas Behind the Scenes: Brittani Martin's Topic Meeting (Brandon's not available) https://www.rubytapas.com/2018/12/13/topic-meeting-brittany-martin/ Jennifer Wong https://twitter.com/mybluewristband Adam Keys's Blog https://therealadam.com/ John Cutler on Twitter: @johncutlefish https://twitter.com/johncutlefish Advent of Code https://adventofcode.com/ Eloquent JavaScript (Brandon's last real programming book) https://eloquentjavascript.net/
20 Years of Web Development with Avdi Grimm and Sarah Mei TableXI is offering training for developers and product teams! For more info, visit http://tablexi.com/workshops. Guests Sarah Mei (https://twitter.com/sarahmei): Founder of RailsBridge (http://railsbridge.org/), Director of Ruby Central (http://rubycentral.org/), Software Architect at Salesforce (https://www.salesforce.com/). Avdi Grimm (https://twitter.com/avdi): Creator of the RubyTapas Screencast Series (https://www.rubytapas.com/) and author of Exceptional Ruby (http://exceptionalruby.com/) and Confident Ruby (http://www.confidentruby.com/). avdi.codes (https://avdi.codes/). Summary What has changed in web development in the last 20 years, and what do those changes say about the next 20? I recently realized that Avdi Grimm, the head chef of Ruby Tapas, Sarah Mei, of Ruby Central and Salesforce, and I all began our professional careers within a couple of weeks of each other in August 1998. I wanted to talk to them about what’s changed and what’s stayed the same. I was curious as to whether our different career paths led to similar observations. We talk about open source, agile, dynamic languages, distributed systems and how they’ve all changed or haven’t changed the developer’s experience. Notes 02:19 - First Software Job Education and Experiences 09:25 - What has changed? What is easier/harder? 20:16 - What has changed in Product Management? 27:22 - Processor Speed 32:24 - What has stayed the same? 40:20 - Typed Languages 42:48 - What is going to change over the next 5-10 years? - Code Complete: A Practical Handbook of Software Construction by by Steve McConnell (https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) Related Episodes Rubyists in Other Languages with James Edward Gray II and Steve Klabnik (https://www.techdoneright.io/43) Ruby Tapas and Avoiding Code with Avdi Grimm (https://www.techdoneright.io/24) Livable Code With Sarah Mei (https://www.techdoneright.io/13) Special Guests: Avdi Grimm and Sarah Mei.
Rubyists in Other Languages with James Edward Gray II and Steve Klabnik TableXI is offering training for developers and product teams! For more info, email workshops@tablexi.com. Guests Steve Klabnik (https://twitter.com/steveklabnik): Blog (https://www.steveklabnik.com/) James Edward Gray II (https://twitter.com/JEG2): Blog (http://graysoftinc.com/) Summary Ruby is great. But it's not the best tool for everything. On this episode, I talk to James Edward Gray II and Steve Klabnik. Both James and Steve have made substantial contributions to the Ruby and Rails community, and they now both spend lots of time using other languages. We talk about what makes Rust and Elixir interesting for Ruby developers to learn, what some other interesting languages might be. Notes 01:48 - Moving Towards Other Programming Languages from Ruby: Why? 03:39 - Rust - The Rust Programming Language (https://www.rust-lang.org/en-US/) - The Elm Programming Language (http://elm-lang.org/) - The Rust Programming Language (Book) by Steve Klabnik (https://www.amazon.com/Rust-Programming-Language-Steve-Klabnik/dp/1593278284) 17:54 - Other Cool Programming Languages for Rubyists - Scratch (https://scratch.mit.edu/) - Logo (https://en.wikipedia.org/wiki/Logo_(programming_language)) - GameSalad (https://gamesalad.com/) - GameMaker Studio 2 (https://www.yoyogames.com/gamemaker/features) - Prograph (https://en.wikipedia.org/wiki/Prograph) - Abstract Syntax Tree (https://en.wikipedia.org/wiki/Abstract_syntax_tree) 29:22 - Elixir - The Elixir Programming Language (https://elixir-lang.org/) - Erlang (https://app.workte.am/timeoff/team) - Prolog (https://en.wikipedia.org/wiki/Prolog) - Pattern Matching (https://en.wikipedia.org/wiki/Pattern_matching) Related Episodes Programming Languages and Communication With Kerri Miller (http://www.techdoneright.io/34) React Native with Gant Laborde, Ed LaFoy, and Brent Vatne (http://www.techdoneright.io/32) Ruby Tapas and Avoiding Code with Avdi Grimm (http://www.techdoneright.io/24) The Elm Programming Language With Corey Haines (http://www.techdoneright.io/17) Special Guests: James Edward Gray II and Steve Klabnik.
The creator of the popular series Ruby Tapas and MOOM shares how he determined what to delegate, the importance of taste when creating something, how he determines pricing of a product and how he markets is products.
Programming Languages and Communication With Kerri Miller TableXI is now offering training for developers and products teams! For more info, email workshops@tablexi.com. Get your FREE career growth strategy information and techniques! (https://stickynote.game) Rails 5 Test Prescriptions (https://pragprog.com/book/nrtest3/rails-5-test-prescriptions) is updated, available, and shipping! Guest Kerri Miller (https://twitter.com/kerrizor): Senior Developer at TravisCI (https://travis-ci.org/) and Ruby Community Member. Co-Organizer of the Open Source and Feelings Conference (https://www.osfeels.com/). Blog (http://kerrizor.com/). Summary Why is Smalltalk the Elizabethan English of programming languages? Why has it been so influential, and how does the programming language you use affect the way you think about programming. On this episode, Kerri Miller and I talk about programming languages and communication, and what we've learned from our most recent programming language adventures. Notes 01:56 - Introduction Twitter Stream (https://twitter.com/kerrizor/status/974391130484752385) Creole Languages (https://en.wikipedia.org/wiki/Creole_language) Pidgin (https://en.wikipedia.org/wiki/Pidgin) 06:18 - SmallTalk is to Ruby as Elizabethan English is to Modern Day 08:11 - SmallTalk’s History Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age (https://amzn.to/2JxTtss) Squeak (http://squeak.org/) By the way, I did get the Squeak history partially wrong. The original work was done at Apple, and when they went to Disney after that, they downloaded their Apple work as Open Source to continue. (It is possibly named Squeak because they were being wooed by Disney). The technical details are basically right, though. 17:55 - Thinking About Programming and Software Projects in a Flexible Way Sapir-Whorf Hypothesis (http://www.dictionary.com/browse/sapir-whorf-hypothesis) 22:01 - Object-Oriented Programming, Thinking, and Design The Overton Window (https://en.wikipedia.org/wiki/Overton_window) 28:37 - Learning New Programming Languages, Concepts, and Techniques The Silmarillion by Tolkien (https://en.wikipedia.org/wiki/The_Silmarillion) Nothing is Something by Sandi Metz (https://www.youtube.com/watch?v=OMPfEXIlTVE) Much Ado About Naught by Avdi Grimm (http://www.virtuouscode.com/introduction-to-much-ado-about-naught/) Related Episodes Back in the Testing Weeds with Sam Phippen and Justin Searls (http://www.techdoneright.io/33) Ruby Tapas and Avoiding Code with Avdi Grimm (http://www.techdoneright.io/24) The Elm Programming Language With Corey Haines (http://www.techdoneright.io/17) Special Guest: Kerri Miller.
Ruby Tapas and Avoiding Code with Avdi Grimm Follow us on Twitter @techdoneright (https://twitter.com/tech_done_right), and please leave us a review on Apple Podcasts (https://itunes.apple.com/us/podcast/tech-done-right/id1195695341?mt=2)! Guest Avdi Grimm (https://twitter.com/avdi): Creator of the RubyTapas Screencast Series (https://www.rubytapas.com/) and author of Exceptional Ruby (http://exceptionalruby.com/) and Confident Ruby (http://www.confidentruby.com/). avdi.codes (https://avdi.codes/) Summary Avdi Grimm has been creating the RubyTapas screencast series for five years. In this episode Avdi and I talk about why he decided to do RubyTapas, and what makes a good episode. We also talk about the resources that helped us when we were learning to code. Then Avdi talks about his experience building the RubyTapas web site and explains how sometimes avoiding code can be the best business decision of all. Notes 01:20 - Starting and Sustaining RubyTapas 04:59 - Shorter Episodes Vs Longer Episodes 08:00 - Creating an Example for a Topic 10:49 - Future-proofing Episodes 12:51 - Helpful Resources When Avdi and Noel Were Learning How to Code - Programming Perl (The Camel Book) (https://en.wikipedia.org/wiki/Programming_Perl) - The Pragmatic Programmer (https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) - Code Complete (https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) - Smalltalk Best Practice Patterns (https://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X/ref=sr_1_1?s=books&ie=UTF8&qid=1508781341&sr=1-1&keywords=smalltalk+best+practice+patterns) - Ruby Midwest 2011 Confident Code by Avdi Grimm (https://www.youtube.com/watch?v=T8J0j2xJFgQ) 18:31 - Learning New Things Now; Online Marketing - Copyblogger (https://www.copyblogger.com/) 26:12 - Avoiding Code
This week Ben Orenstein is interviewing guest Avdi Grimm, Founder of RubyTapas, which is a subscription service that provides screencasts of “gourmet” ruby programming. Avdi discusses the topic of his talk at Southeast Ruby in Nashville, which was the value of avoiding code and strategies to bypass the need to write unnecessary coding. Join us as he shares his advice on optimizing workflows and his experiences building RubyTapas. Today’s Topics Include: The value of avoiding code Hidden complexity in building out content platforms Using Wordpress for publishing content Code as a liability Episode production and future of RubyTapas Finding leverage in business and creative work Delegating workflows Views on side-hustling and product development If you’re enjoying the show please give us your ratings and reviews in iTunes. Links and resources: RubyTapas (https://www.rubytapas.com/) WordPress (https://wordpress.com/) Spacemacs (http://spacemacs.org/), Emacs (https://www.gnu.org/software/emacs/), Vim (http://www.vim.org/), Neovim (https://neovim.io/) Side-hustle mindset versus product-business mindset (http://www.virtuouscode.com/2017/02/08/side-hustle-mindset-versus-product-business-mindset/) by Avdi Grimm Avdi.codes (https://avdi.codes/) VirtuousCode.com (http://www.virtuouscode.com/) RefactoringRails.io (http://refactoringrails.io/)
Ben halts the search for a marketer to instead hire a sales consultant and focus on growth himself, and announces a collaboration with Ruby Tapas. Derrick enrolls in a machine learning class, and contemplates Drip team & work structure. Upcase FormKeep What My Calendar Looks Like- Jason Fried Upcase + Tapas Promo Ruby Tapas Mastering Product Launches How We Structure Our Work and Teams at Basecamp Wistia Machine Learning Class Thank you to our sponsor this week Mobile Dev + Test Conference from Techwell
Derrick takes a solo retreat to reflect on new goals for Drip, and draws up preliminary plans for scaling team size / structure, as well as speeding up velocity through parallelism. Ben shares his experience with GrowthHackers Projects, hides the lowest plan and implements an automated annual upgrade reminder, pitches a content partnership for Upcase, considers a thoughtbot products bundle, and realizes a need for a mentor. Upcase FormKeep The Zen Founder Guide to Founder Retreats ZenFounder Podcast Appointed GrowthHackers OmniFocus Ruby Tapas Predictable Revenue- Aaron Ross & Marylou Tyler
New details about Guilds, a free Ruby Tapas episode on Threads, mounds of new Ruby versions and features, a Rails feature diary, and Turbolinks without Rails.
00:16 – Welcome to “The Meta Four!” …we mean, “Greater Than Code!” 01:30 – Chef Avdi Grimm’s Introduction 02:19 – RubyTapas (https://www.rubytapas.com/); Production, Typing, and Editing 10:52 – Real World Programming: Episode #346 (https://www.rubytapas.com/2015/10/01/episode-346-user-model/): User; LiveCoding.tv (https://www.education-ecosystem.com/) 12:24 – Neutralizing Impostor Syndrome (https://en.wikipedia.org/wiki/Impostor_syndrome) 13:32 – Break time and getting to know our new panelist, Astrid Countee! "I've never met a junior who wasn't extremely senior in some area of life I know nothing about" @dbrady @greaterthancode— Jessica Kerr (@jessitron) October 5, 2016 24:15 – Neutralizing Imposter Syndrome (Cont’d) 25:42 – Live Coding 28:29 – What non-Ruby technologies have you been exploring lately? ~ Darin Wilson (https://twitter.com/darinwilson) 29:05 – PHP (https://secure.php.net/) 35:56 – Should a screencast series like RubyTapas also go beyond code? Talk about topics like dealing with frustration when programming, for example? ~Lucas Dohman (https://twitter.com/moonbeamlabs) “Programming can be an incredibly judgmental culture and environments can be really poisonous.” ~ Avdi Grimm Bias in Computer Systems (https://nissenbaum.tech.cornell.edu/) Carina C. Zona: Schemas for the Real World @ SCNA 2013 (https://vimeo.com/80375707) Carina C. Zona: Consequences of an Insightful Algorithm @ JSConf EU 2015 (https://www.youtube.com/watch?v=znwWYR1mzzw) Reflections: Sam: You can use your ego and your attachment to the code, but make it not about yourself. Instead, try to focus on what your code is bringing to other people and maybe that can help you try to figure out how to make it better without getting stuck. Coraline: We got to see a glimpse into the whole person behind a persona. Even heroes are people with vulnerability, human flaws, anxieties, and weaknesses. Astrid: Bring your whole self to everything. Jessica: What we show matters. Jay: Don’t be too quick to compare yourself to others. David: Put your ideas out there and get them in front of other people. That is how you manufacture authority. Avdi: Hidden Figures This episode was brought to you by @therubyrep (https://twitter.com/therubyrep) of DevReps, LLC (http://www.devreps.com/). To pledge your support and to join our awesome Slack community, visit patreon.com/greaterthancode (https://www.patreon.com/greaterthancode). To make a one-time donation so that we can continue to bring you more content and transcripts like this, please do so at paypal.me/devreps (https://www.paypal.me/devreps). You will also get an invitation to our Slack community this way as well. Amazon links may be affiliate links, which means you’re supporting the show when you purchase our recommendations. Thanks!
Concurrency in Ruby 3 with Guilds, wild ideas for The Next Ruby, Ruby Tapas 2.0, Programs that rewrite Ruby programs, and Keep Ruby Weird.
On Upcase, Chris releases the Bourbon course, restructures how new courses are highlighted, and discusses juggling the various factors that contribute to MRR. Ben takes on-boarding notes from a century old dance school to improve activation on Formkeep. Upcase Formkeep Hardcore History Bourbon Smash Course on Upcase Ruby Tapas Arthur Murray Dance Centers Bootstrapped CPC Rule of Thumb- Jason Cohen Dark Age of Camelot
02:10 - Brian Underwood Introduction Twitter GitHub Blog Neo Technology 02:55 - Neo4j Neo4j [GitHub] 04:31 - Graph Databases vs Traditional Databases 06:02 - Relations Have Directions 06:58 - Modeling a Domain as a Graph; How it Works cypher 13:25 - Built-in Query Processor 15:04 - Neo4j.rb => ORM; OGM Mongoid Influence 18:06 - Declarative Schema 21:09 - The Ruby Client vs The Java Client 25:48 - Use Cases 35:53 - Who is using Neo4j? Ashley Sun Lending Club: Managing Microservices with Neo4j @ GraphConnect SF 2015 38:42 - Challenges as an Open Source Maintainer 39:44 - Funding Neo4j 41:00 - Working Abroad 42:16 - Getting Started with Neo4j Getting Started with Neo4j and Ruby Neo4j Screencasts Neo4j.com/developer Neo4j [GitHub] Picks Elle Luna: The Crossroads of Should and Must (Jessica) Lynda Tutorials (Avdi) How to Win Friends & Influence People by Dale Carnegie (Avdi) Marked 2 (Coraline) Fund Club (Coraline) RubyTapas #334: Rspec Compound Matchers (Brian) Pyrosomes (Brian) Americapox: The Missing Plague (Brian)
02:10 - Brian Underwood Introduction Twitter GitHub Blog Neo Technology 02:55 - Neo4j Neo4j [GitHub] 04:31 - Graph Databases vs Traditional Databases 06:02 - Relations Have Directions 06:58 - Modeling a Domain as a Graph; How it Works cypher 13:25 - Built-in Query Processor 15:04 - Neo4j.rb => ORM; OGM Mongoid Influence 18:06 - Declarative Schema 21:09 - The Ruby Client vs The Java Client 25:48 - Use Cases 35:53 - Who is using Neo4j? Ashley Sun Lending Club: Managing Microservices with Neo4j @ GraphConnect SF 2015 38:42 - Challenges as an Open Source Maintainer 39:44 - Funding Neo4j 41:00 - Working Abroad 42:16 - Getting Started with Neo4j Getting Started with Neo4j and Ruby Neo4j Screencasts Neo4j.com/developer Neo4j [GitHub] Picks Elle Luna: The Crossroads of Should and Must (Jessica) Lynda Tutorials (Avdi) How to Win Friends & Influence People by Dale Carnegie (Avdi) Marked 2 (Coraline) Fund Club (Coraline) RubyTapas #334: Rspec Compound Matchers (Brian) Pyrosomes (Brian) Americapox: The Missing Plague (Brian)
02:10 - Brian Underwood Introduction Twitter GitHub Blog Neo Technology 02:55 - Neo4j Neo4j [GitHub] 04:31 - Graph Databases vs Traditional Databases 06:02 - Relations Have Directions 06:58 - Modeling a Domain as a Graph; How it Works cypher 13:25 - Built-in Query Processor 15:04 - Neo4j.rb => ORM; OGM Mongoid Influence 18:06 - Declarative Schema 21:09 - The Ruby Client vs The Java Client 25:48 - Use Cases 35:53 - Who is using Neo4j? Ashley Sun Lending Club: Managing Microservices with Neo4j @ GraphConnect SF 2015 38:42 - Challenges as an Open Source Maintainer 39:44 - Funding Neo4j 41:00 - Working Abroad 42:16 - Getting Started with Neo4j Getting Started with Neo4j and Ruby Neo4j Screencasts Neo4j.com/developer Neo4j [GitHub] Picks Elle Luna: The Crossroads of Should and Must (Jessica) Lynda Tutorials (Avdi) How to Win Friends & Influence People by Dale Carnegie (Avdi) Marked 2 (Coraline) Fund Club (Coraline) RubyTapas #334: Rspec Compound Matchers (Brian) Pyrosomes (Brian) Americapox: The Missing Plague (Brian)
02:36 - Responsibility and Communication Slack “Ask Anything” 12:10 - Onboarding Experience for Remote Employees 15:55 - Measuring New Employee Metrics 17:41 - Onboarding Onto a Team vs Onboarding Onto a Project 20:51 - What it Means to be a Senior Developer 29:20 - First Impressions and Team Member Categories 33:26 - How do you decide what you spend time learning? 40:57 - Code Reading The Web Platform Podcast Picks Private Internet Access (Avdi) Darkest Dungeon (Avdi) imprint (Coraline) The surprising truth about which personality traits do and don't correlate with computer programming skills (Coraline) TALON Bluetooth Wireless Headphones (Jessica) The Penderwicks: A Summer Tale of Four Sisters, Two Rabbits, and a Very Interesting Boy by Jeanne Birdsall (Jessica) Reading to your kids (Chuck) LinkedIn (Chuck) RubyTapas (Chuck) Elixir Sips (Chuck) Avdi's Newsletter (Avdi)
02:36 - Responsibility and Communication Slack “Ask Anything” 12:10 - Onboarding Experience for Remote Employees 15:55 - Measuring New Employee Metrics 17:41 - Onboarding Onto a Team vs Onboarding Onto a Project 20:51 - What it Means to be a Senior Developer 29:20 - First Impressions and Team Member Categories 33:26 - How do you decide what you spend time learning? 40:57 - Code Reading The Web Platform Podcast Picks Private Internet Access (Avdi) Darkest Dungeon (Avdi) imprint (Coraline) The surprising truth about which personality traits do and don't correlate with computer programming skills (Coraline) TALON Bluetooth Wireless Headphones (Jessica) The Penderwicks: A Summer Tale of Four Sisters, Two Rabbits, and a Very Interesting Boy by Jeanne Birdsall (Jessica) Reading to your kids (Chuck) LinkedIn (Chuck) RubyTapas (Chuck) Elixir Sips (Chuck) Avdi's Newsletter (Avdi)
02:36 - Responsibility and Communication Slack “Ask Anything” 12:10 - Onboarding Experience for Remote Employees 15:55 - Measuring New Employee Metrics 17:41 - Onboarding Onto a Team vs Onboarding Onto a Project 20:51 - What it Means to be a Senior Developer 29:20 - First Impressions and Team Member Categories 33:26 - How do you decide what you spend time learning? 40:57 - Code Reading The Web Platform Podcast Picks Private Internet Access (Avdi) Darkest Dungeon (Avdi) imprint (Coraline) The surprising truth about which personality traits do and don't correlate with computer programming skills (Coraline) TALON Bluetooth Wireless Headphones (Jessica) The Penderwicks: A Summer Tale of Four Sisters, Two Rabbits, and a Very Interesting Boy by Jeanne Birdsall (Jessica) Reading to your kids (Chuck) LinkedIn (Chuck) RubyTapas (Chuck) Elixir Sips (Chuck) Avdi's Newsletter (Avdi)
Check out and get your ticket for Rails Remote Conf! 02:00 - Sarah Mei Introduction Twitter GitHub Blog Devmynd RailsBridge 06:11 - Why It’s Hard to be “The First Person” Biases Mind the Gap - On the unconscious bias we all carry, and how it applies to hiring Avdi Grimm: What it’s like to come back to a Ruby project after 6 months 13:27 - Transmitting Cultural Values 16:01 - What Companies Can Do Dev Team Diversity #Realtalk - On the unprecedented opportunity we have right now to diversify our small teams Everyone has something to learn; Everyone has something to teach (Mentoring) 22:35 - What do you look for in a person as a hiring company? Rubberducking 24:46 - Setting Expectations Around Pairing Sessions Pairing with Junior Developers - On making sure newer devs can be successful once they're hired 27:45 - Whisper Networks Tomas Chamorro-Premuzic: Why Do So Many Incompetent Men Become Leaders? 34:08 - Performance Review “How can we make you successful?” 42:15 - “I will help you find a better fit.” Investment and Risk 44:40 - Communication Culture Ask vs. Guess Culture 50:43 - Empathy How to Win Friends & Influence People by Dale Carnegie Picks troll-repellant (Coraline) Avdi Grimm: An alternative to `puts` in Ruby (Coraline) Alan C. Kay: The Early History of Smalltalk (Avdi) RubyTapas (Avdi) Rails Remote Conf (Chuck) Loot Crate (Chuck) Prints and Visual Communication (Sarah) Artful Making: What Managers Need to Know About How Artists Work by Robert Austin (Sarah)
Check out and get your ticket for Rails Remote Conf! 02:00 - Sarah Mei Introduction Twitter GitHub Blog Devmynd RailsBridge 06:11 - Why It’s Hard to be “The First Person” Biases Mind the Gap - On the unconscious bias we all carry, and how it applies to hiring Avdi Grimm: What it’s like to come back to a Ruby project after 6 months 13:27 - Transmitting Cultural Values 16:01 - What Companies Can Do Dev Team Diversity #Realtalk - On the unprecedented opportunity we have right now to diversify our small teams Everyone has something to learn; Everyone has something to teach (Mentoring) 22:35 - What do you look for in a person as a hiring company? Rubberducking 24:46 - Setting Expectations Around Pairing Sessions Pairing with Junior Developers - On making sure newer devs can be successful once they're hired 27:45 - Whisper Networks Tomas Chamorro-Premuzic: Why Do So Many Incompetent Men Become Leaders? 34:08 - Performance Review “How can we make you successful?” 42:15 - “I will help you find a better fit.” Investment and Risk 44:40 - Communication Culture Ask vs. Guess Culture 50:43 - Empathy How to Win Friends & Influence People by Dale Carnegie Picks troll-repellant (Coraline) Avdi Grimm: An alternative to `puts` in Ruby (Coraline) Alan C. Kay: The Early History of Smalltalk (Avdi) RubyTapas (Avdi) Rails Remote Conf (Chuck) Loot Crate (Chuck) Prints and Visual Communication (Sarah) Artful Making: What Managers Need to Know About How Artists Work by Robert Austin (Sarah)
Check out and get your ticket for Rails Remote Conf! 02:00 - Sarah Mei Introduction Twitter GitHub Blog Devmynd RailsBridge 06:11 - Why It’s Hard to be “The First Person” Biases Mind the Gap - On the unconscious bias we all carry, and how it applies to hiring Avdi Grimm: What it’s like to come back to a Ruby project after 6 months 13:27 - Transmitting Cultural Values 16:01 - What Companies Can Do Dev Team Diversity #Realtalk - On the unprecedented opportunity we have right now to diversify our small teams Everyone has something to learn; Everyone has something to teach (Mentoring) 22:35 - What do you look for in a person as a hiring company? Rubberducking 24:46 - Setting Expectations Around Pairing Sessions Pairing with Junior Developers - On making sure newer devs can be successful once they're hired 27:45 - Whisper Networks Tomas Chamorro-Premuzic: Why Do So Many Incompetent Men Become Leaders? 34:08 - Performance Review “How can we make you successful?” 42:15 - “I will help you find a better fit.” Investment and Risk 44:40 - Communication Culture Ask vs. Guess Culture 50:43 - Empathy How to Win Friends & Influence People by Dale Carnegie Picks troll-repellant (Coraline) Avdi Grimm: An alternative to `puts` in Ruby (Coraline) Alan C. Kay: The Early History of Smalltalk (Avdi) RubyTapas (Avdi) Rails Remote Conf (Chuck) Loot Crate (Chuck) Prints and Visual Communication (Sarah) Artful Making: What Managers Need to Know About How Artists Work by Robert Austin (Sarah)
Ruby developer and author Justin Weiss joins me to talk about his experience working with Avdi Grimm on a guest episode for Ruby Tapas, why he chose Rails, and his book. Then, Justin gives you his 30-second suggestion to help you become a better developer. Mentioned: Justin's book, Practicing Rails https://www.justinweiss.com/book/ Justin's Blog: http://www.justinweiss.com/ Sign up for Justin's awesome weekly newsletter: http://www.justinweiss.com/list/ If you are enjoying the show, would you consider buying me some tea? http://www.developertea.com/buy-me-tea
2:55 - Introducing Joseph Mastey and Jill Lynch Enova 3:20 - The origins of Enova’s apprenticeship program 6:20 - Creating and teaching the curriculum Rails Guide to Active Support Code School 11:05 - Realities of implementing an apprenticeship program 15:30 - Jill’s experience 21:10 - Feedback processes 22:50 - Advice for setting up an apprenticeship program 24:20 - Ideal candidates and mentors Women Who Code Code2040 Girl Develop It 28:05 - Apprenticeship and new hire diversity 28:45 - Experimenting with bias, communication, and engagement 33:20 - Do trainees take too much time away from regular employees? 37:05 - Teaching the codebase 39:50 - Firing apprentices 42:05 - Advantages of working at a lucrative company 45:45 - Learning outside the program Edx Coursera 47:40 - Breaking into the industry Email panel@rubyrouges.com with your experiences 58:10 - Who decides the circle? Picks: Ruby Tapas (Avdi) Nozbe (Avdi) Postach.io (Avdi) Neo4j (Caroline) Thinking in Systems by Donella H. Meadows (Caroline) DeskTime (Charles) “Codes of Conduct 101 + FAQ” post by Ashe Dryden (Joe) The Book With No Pictures by B.J. Novak (Joe) Practical Object-Oriented Design by Sandi Metz (Jill) Edx CS50 Class (Jill)
2:55 - Introducing Joseph Mastey and Jill Lynch Enova 3:20 - The origins of Enova’s apprenticeship program 6:20 - Creating and teaching the curriculum Rails Guide to Active Support Code School 11:05 - Realities of implementing an apprenticeship program 15:30 - Jill’s experience 21:10 - Feedback processes 22:50 - Advice for setting up an apprenticeship program 24:20 - Ideal candidates and mentors Women Who Code Code2040 Girl Develop It 28:05 - Apprenticeship and new hire diversity 28:45 - Experimenting with bias, communication, and engagement 33:20 - Do trainees take too much time away from regular employees? 37:05 - Teaching the codebase 39:50 - Firing apprentices 42:05 - Advantages of working at a lucrative company 45:45 - Learning outside the program Edx Coursera 47:40 - Breaking into the industry Email panel@rubyrouges.com with your experiences 58:10 - Who decides the circle? Picks: Ruby Tapas (Avdi) Nozbe (Avdi) Postach.io (Avdi) Neo4j (Caroline) Thinking in Systems by Donella H. Meadows (Caroline) DeskTime (Charles) “Codes of Conduct 101 + FAQ” post by Ashe Dryden (Joe) The Book With No Pictures by B.J. Novak (Joe) Practical Object-Oriented Design by Sandi Metz (Jill) Edx CS50 Class (Jill)
2:55 - Introducing Joseph Mastey and Jill Lynch Enova 3:20 - The origins of Enova’s apprenticeship program 6:20 - Creating and teaching the curriculum Rails Guide to Active Support Code School 11:05 - Realities of implementing an apprenticeship program 15:30 - Jill’s experience 21:10 - Feedback processes 22:50 - Advice for setting up an apprenticeship program 24:20 - Ideal candidates and mentors Women Who Code Code2040 Girl Develop It 28:05 - Apprenticeship and new hire diversity 28:45 - Experimenting with bias, communication, and engagement 33:20 - Do trainees take too much time away from regular employees? 37:05 - Teaching the codebase 39:50 - Firing apprentices 42:05 - Advantages of working at a lucrative company 45:45 - Learning outside the program Edx Coursera 47:40 - Breaking into the industry Email panel@rubyrouges.com with your experiences 58:10 - Who decides the circle? Picks: Ruby Tapas (Avdi) Nozbe (Avdi) Postach.io (Avdi) Neo4j (Caroline) Thinking in Systems by Donella H. Meadows (Caroline) DeskTime (Charles) “Codes of Conduct 101 + FAQ” post by Ashe Dryden (Joe) The Book With No Pictures by B.J. Novak (Joe) Practical Object-Oriented Design by Sandi Metz (Jill) Edx CS50 Class (Jill)
In this episode we bring you a special interview with two well-known podcasters: Dick Wall and Avdi Grimm. Dick Wall, also known as the sheriff of the Java Posse, works as a Scala trainer and consultant at Escalate Software. Avdi Grimm, one of the Ruby Rogues, is a Ruby code hacker, Chief aeronaut at ShipRise and head chef at RubyTapas.com. In the interview we cover a wide range of subjects like joy and courage in software development, siloing in the software community, an idea for a conference by Avdi that he'll never ever organise and working self-employed. This interview was recorded on the morning after the Joy of Coding conference in Rotterdam at March 7th.Interview by @freekl and @arnetim Links for this podcast: The slides of the presentations that Dick and Avdi gave at the Joy of Coding conference can be found on SpeakerDeck. Video recordings will follow soon on InfoQ. Avdi creates short screencasts for Ruby developers, twice a week: RubyTapas. Dick's talk on courage in software development can be seen on Parleys. A bunch of Ruby Koans that we mention in the podcast can be found here. The statement has to learn a new language every year stems from the Pragmatic Programmer book. This podcast is in English - Deze podcast is in het Engels
Avdi Grimm 是 Ruby 社区知名的资深程序员,作者和社区领袖。在这期节目中我们请来 Avdi 来聊聊怎样突破“中级天花板”来达到更高的层次。 About Avdi Grimm: Avdi Grimm Avdi's Publications Ruby Rogues Growing Object Oriented Software Guided by Tests Practical Object Oriented Design in Ruby Smalltalk Best Practice Patterns Factoring How Developers Stop Learning: Rise of the Expert Beginner Go ahead and make a mess (Sandi Metz) Who I want to hire (Chad Fowler) I feel the opposite of burn out, interview with Chad Fowler Software Engineering Radio Pair Programming with me Corey Haines, Software Journeyman The hitchhiker's guide to the galaxy Wide Teams DivShot FantastiCal Domain Driven Design Destroy All Software RubyTapas Special Guest: Avdi Grimm.
Ben Orenstein is joined by Avdi Grimm, software developer, author, and podcaster. Ben and Avdi discuss Emacs, Avdi's personal assistant and delegating work. They also discuss naming and finding implicit concepts in your code, encoding processes as objects in their own right, his publishing and podcasting, the pronunciation of Parley, Ruby Tapas, education resources and the benefits of open source languages, his goals, the most civilized way to travel, and what we got wrong about the Law of Demeter. Mandy Moore, Assistance for Software Professionals Ruby Tapas MethodObject Objects on Rails Exceptional Ruby Confident Ruby Ruby Rogues podcast Wide Teams Ruby Rogues Parley GRSIOGR podcast on Law of Demeter, Episode 27: Fabulous new mistakes Follow @thoughtbot, @r00k, and @avdi on twitter.