I had the pleasure of attending Ancient City Ruby and interviewing a few folks while I was there. Ernie Miller was a speaker at ACR, and also sat down with me to talk about agile, humane development, and the implications of technically oriented people making a track switch to management. Thanks, Ernie! Don't forget to follow @erniemiller on Twitter and let him know you enjoyed hearing him on @DeveloperTea! Today's episode is sponsored by Intuit Developer. Get started developing applications for millions of business already using Quickbooks at http://intuit.me/DevTea today!
I had the pleasure of attending Ancient City Ruby and interviewing a few folks while I was there. Ernie Miller was a speaker at ACR, and also sat down with me to talk about agile, humane development, and the implications of technically oriented people making a track switch to management. Thanks, Ernie! Don't forget to follow @erniemiller on Twitter and let him know you enjoyed hearing him on @DeveloperTea!
Links:
Today's episode is sponsored by Intuit Developer. Get started developing applications for millions of business already using Quickbooks at intuit.me/DevTea today!
You can also give back to Developer Tea by going to https://developertea.com/donate!
Hey everyone and welcome to Developer Tea. My name is Jonathan Cottrell. I'm your host and today I am finishing my interview with Ernie Miller. Ernie is a programmer. He is also a speaker. He is a director of engineering at Invisium. And Ernie spoke at Ancient City Ruby. I was lucky enough to be there at that conference. And so I sat down and spoke with Ernie for a little while. Make sure you check out the first part of the interview. The second part, we kind of jump in right in the middle of a conversation about Ruby and about how Ruby was engineered specifically to increase the happiness of the developers who are using the language. Really interesting conversation. Make sure you check out the first part if you missed it. Also make sure you follow Ernie at Ernie Miller. If you have not subscribed to Developer Tea, while you're listening to this episode, just open up whatever app it is that you listen to podcasts in and press subscribe. And that will immediately send you notifications whenever new episodes of the show come out. And you won't have to remember to go to developertea.com. Speaking of developertea.com, all the show notes for this episode and every other episode can be found on developertea.com. And there's a contact form on there as well. Okay. Let's get started with the second part of the interview with Ernie Miller. And even sometimes at the detriment of performance, right? Oh, yeah. And the Ruby community is very transparent about that, that Ruby is not the fastest language necessarily. Right. It depends on what you consider fast, right? Sure. But it's not the fastest language. It may be one of the faster to develop with, but it's not the fastest. It's not the fastest in terms of execution time, like objectively. Right. But we've made that trade. It's a value trade. For people who develop in Ruby, we enjoy the language enough to write in Ruby. And it's making great strides. Sure. And it will need to continue that direction. Moore's Law is on our side. Right. Yeah. Yeah. Eventually it's not going to matter really. Similar to, like, memory doesn't matter as much anymore. Sure. As it used to. As it used to. As it used to. And so you'll see. There's a lot of professors even saying, well, the heap is big enough. You can just push stuff into the heap. Sure. And, like, that's big enough is not a scientific way of describing it. But at some point it doesn't matter anymore, right? All of software engineering, and really all of life, but let's just try to narrow our scope a little. Let's rate it in here to, yeah. It's about tradeoffs, right? Yeah. It's looking at opportunity cost. You know, if I do this, what am I giving up? And am I willing to give that up? Mm-hmm. And for Rubyists, we're willing to give up a whole lot. Right. In order to have a language that we find works the way we think. Mm-hmm. And doesn't artificially get in the way of us. Mm-hmm. And doesn't make us jump through a lot of hoops to make something useful and fun. Sure. That's a tradeoff that we've considered and we've elected to make. And, you know, I personally couldn't be happier with it. But it may not be the right call in all situations. Mm-hmm. There are concessions you need to make to reality sometimes. Mm-hmm. You know? Mm-hmm. If there is a really performance-hungry... Oh, that's why we have C extensions, for instance, in MRI. Right? So in the canonical Ruby interpreter, for those that weren't Rubyists, MRI or Matz's Ruby interpreter is the thing. Right? And it was written in C. And you can write C extensions to it. So you can drop to a little bit of a lower level when you need to in order to get that performance. Yeah. Yeah, it's interesting. So it's interesting because... Mm-hmm. I don't think that you can't be a happy developer and, like, you don't have to code in Ruby to be a happy developer. Oh, sure you do. No. No, I'm just kidding. No. I mean, there's plenty of people that I know, actually. I was talking at lunch today with a couple of guys here, and they were saying that they really enjoy... They really enjoyed Objective-C. Mm-hmm. It made sense. Actually, I enjoyed Objective-C as well. I think I'm weird. Like, people squint at me when I say it. But it's very, very similar to Ruby in a lot of ways. Message sending and that... All about... Yeah, it's all about... And they both have Smalltalk heritage. Mm-hmm. Object-oriented development is core to both of them. Yeah. Just because the syntax is a little wonky or different doesn't necessarily mean that they aren't very similar. Sure. Yeah. So... Which I think a lot of people look at Ruby, and it's the syntax that a lot of people attach to at first. Sure. But there's more to it than that. That makes it... Yeah. I'll be right back with Ernie Miller right after this quick sponsor break. You've probably heard of QuickBooks, and you might even use QuickBooks every day in your small business. But did you know that QuickBooks has an API? Intuit has built the API with developers in mind using standards like OpenID, OAuth, and REST API calls. And with millions of businesses already using QuickBooks, you've got a customer base that's ready to use your app. And you can even publish your app on apps. And here's the best part of the QuickBooks API and apps.com. It's all free. Intuit doesn't take a royalty share from the applications that you publish. You can get up and running in just a few minutes using the developer sandbox and the API Explorer. Just go to developer.intuit.com today to get started. There will also be a link in the show notes to let Intuit know that you're a Developer T listener, which is a huge help to the show. Check it out in the show notes. Thanks so much to QuickBooks for being a sponsor this week. And now let's get back to the episode with Ernie Miller. Let's talk a little bit about humane development. Great. So tell me, just give me the Twitter spiel about what humane development is about. All right. So I already made my blatant plug for the core premise, right? And without giving away stuff that's in my humane development talk, which you can actually go see, I gave it at... I gave it at Ruby on Ales earlier this month, and that video is now on YouTube. The short of it is this. I believe that we, as our organizations evolve, we have somewhat corrupted the initial intent of the Agile manifesto, for instance. That is, we've diluted Agile to be almost meaningless at this point. And in fact, if you look at some of the initial statements of the Agile manifesto, about, for instance, valuing individuals and interactions over processes and tools, in fact, now we look at most people that do Agile are using some specific tooling to accomplish it. There's well-defined kind of set-in-stone sort of processes like Scrum that are advocated and followed to a T or to some variation of a T. And actually, it's not always the case that we follow it the way that we... that it was originally defined. But that's really not the point. The point is, the core ideas are no-brainers when you look at the Agile manifesto. You're like, oh, yeah, absolutely. It's about individuals, and it's about communication, and it's about all these things that obviously are involved in software development and of paramount importance. But we have, for better or worse, twisted, and I oftentimes kind of think, like, the business for, you know, imagine air quotes right now. For you listening at home, the business has embraced and extinguished the idea of Agile in a sense, in the sense that, you know, back in the days when everybody was demonizing Microsoft, we used to always joke about how Microsoft would embrace and extinguish competitors. They would, you know, say, we like this technology, and then they would just subtly corrupt it in such a way that it was no longer compatible. We used to say that stuff about how they did web development for a long time. I don't think people are talking that way anymore. But it was... It was an old-school way of thinking, and I am an old man after all. And so I think the business has, to some degree, embraced and extinguished. They like to say they're Agile because Agile has connotations with fast. People like the idea of sounding like they're able to move quickly. It sounds great in theory, but what they're really doing, and I'm not going to be able to attribute it to the right person right now, so just some gentleman I talked to earlier at lunch, in fact, said that we do Scrum Fall. So it's sort of this weird combination of waterfall planning and then supposedly Scrum execution, but it's not really anything that's like what Agile used to be. So I think really what it comes down to, and I struggle with the idea of presenting humane development as an alternative. Basically what I say is this. There are four virtues. Hustle is not among them. I do not think hustle is a virtue. The idea of moving quickly is in and of itself not the goal. The goal should be moving in the right direction. The goal should be moving in a sustainable direction. The goal should be moving at a full pace, that you're not consistently burning yourself out or your people out. And so I look at it as kind of four interconnected things. First things first, and the foundation would be that empathy is necessary. And that follows off the idea that it's all about the humans. That's the core, the axiom. It's obvious, and the whole point of an axiom is that it's so obvious you couldn't possibly refute it. We're humans working with humans to build software for the benefit of humans. So you look at it as a human endeavor. You need empathy. You need to be able to empathize with the business, with your users, with whatever, and vice versa. The humans involved need to empathize with one another so that they're more willing to communicate with one another in an open and honest way. Honesty being the second thing. That it's another pillar that you kind of have to build on. You need to be honest up front. That means acknowledging that in many cases deadlines are lies. Estimates are oftentimes lies. Currently, I think that we get away with all those lies because they sort of cancel each other out. If the deadline's not a real deadline and the estimate was wrong, it doesn't matter. We just move the deadline because it wasn't really a deadline at all. Right. Yeah. So we look for honesty. Then once we've sort of displayed honesty to one another, well, trust develops. Mm-hmm. So when you can trust the other people to be consistently up front with you, if you can trust that they are going to be empathizing with you and your needs and they're going to do the best they can to deliver what they can, well, then you unlock the Well, then you unlock the Well, then you unlock the Well, then you unlock the goal. Mm-hmm. The goal is autonomy. Mm-hmm. Mm-hmm. You want individuals to be empowered to act in the best interests of the company and of themselves, and hopefully those aren't in conflict. Mm-hmm. Right? And so the goal is to kind of approach it as a more human endeavor and be a lot less focused on the processes and the tooling. In fact, nowhere anywhere do we make a reference to tooling except to say that tooling, you should be skeptical. Right. And so I think that's a really good example of the practical of tooling. Mm-hmm. Mm-hmm. Tooling is sort of setting in stone something that, you know, maybe is much more flexible as just kind of a here's the way we normally handle this. And processes are really just shorthand communication. That is, they're not, you don't need to have a process for everything. In fact, I call it process metaprogramming where you sort of really are better off giving underlying rationale. Sure. For a process. Mm-hmm. And letting people be able to derive that process on their own. You give them the whys. Why is the absolute, and we talked about that today actually as well about the five whys. Oh, yeah. Mm-hmm. But asking why is such an important question to ask and to really listen to the answer can tell you so much. It's what moves you from having a requirement to a rationale. Yeah. Or a reason, a reason for this thing. And once you know the reason, well, then you might be able to find a better way to build. Mm-hmm. And certainly a more sustainable way. If you know the end goal. If you have an idea of what the goal is in mind instead of just we need to sprint to this next checkpoint because this is what they've moved off the backlog into the current sprint. Right. Well, that gives you context and you can plan a sustainable pace that you're going to be able to keep up and you're going to be able to actually make it to the finish. Mm-hmm. Because if you can't sustain your pace, then it's less than worthless. You'll burn out. Right. You won't finish. Yeah. So it's like reinjecting kind of the spirit of the original Agile manifesto. Yeah. Yeah. And it's more, so there's interesting things that have come out of Agile. Sure. Who was it? Dave Thomas, I think, wrote a post about how Agile's dead. Mm-hmm. Long live Agile. Yeah. Or something like that. Something like that. I think it came up around the same time as David's, didn't it? Mm-hmm. David. Yeah. David. Yeah. Long live testing, yeah. Yeah. And so basically what he was saying was Agile comes with baggage now. Mm-hmm. Like TDD comes with baggage now. Mm-hmm. And that we now have a reason to say, let's pull back a little bit and get away from this hype. Well, there's this culture around it now that doesn't really, isn't proper. Yeah. And doesn't do the original idea justice. It was sold into organizations in such a way, and that's where we were talking about the embracing and extinguishing sort of mentality. Mm-hmm. By saying, for instance, we are now certifying Scrum Masters. Right. For instance. If you look at something like that, you're now saying, well, that is part of your identity, Mr. Project Manager. You are now a Scrum Master. Well, in traditional- On that name card you were talking about. In traditional, yeah. And in traditional Scrum, the idea was that Scrum Master went away eventually. Yeah. And that the Scrum Master was a rotating role between developer team members, right? Mm-hmm. And the idea of a certified Scrum Master was ludicrous. Mm-hmm. And so, in Uncle Bob, so Bob Martin had a, Robert C. Martin, if I'm proper, did a talk. And I believe there's a blog post as well, but the talk was really compelling, and I found it when I was researching for the Humane Development talk, where he talked about the land that Scrum forgot. And it basically goes into some of the origins of Agile, how it came about. And specifically, whenever he talked about the certified Scrum Master idea, well, Bob thought it was stupid. And all the developers he talked to thought it was stupid too, because obviously this is not a thing we should be, because it's not supposed to be a long-term role. Right. It's supposed to be, the teams are supposed to be self-organizing. Mm-hmm. And so, it's really funny to look at how that has morphed, and it's essentially just been another way for the same people that were in a position to be self-organizing. Mm-hmm. That were in a position of power to kind of say, my team did this, are now still in that same role. Right. They just have a different title. Sure. It didn't, it went full circle. Mm-hmm. Yeah. And so, yeah, it's about, I think with Humane Development, it's about coming back to some of those same realizations. I mean, I don't claim to be saying anything that's rocket science here. Right. It really is not. Right. I mean, by giving it a name, hopefully we can talk about it in a way that makes sense. Mm-hmm. But I don't think that this is anything new. And I just think that, you know, I think that's the thing. I just think that if you look at the creators of the Agile Manifesto, most, certainly many of them were in consulting. And since most of them were in consulting, well, they certainly couldn't exactly write a manifesto that said, you all are doing things horribly, let us come fix you. Mm-hmm. Mm-hmm. You know, they would have a really hard time selling that. Sure. And so, so it's sort of... Sure. But they were continuing to say, there's value in these other things, but we value these things more. They allowed those other things to stick around. Mm-hmm. And eventually reassert their dominance in a kind of a subtle way. Right. At least, you know, this is, you know, the way that I look at it with my limited viewpoint. I really welcome discussion on this stuff. Sure. And so I think that that's really the frustrating thing is, you know, how do you say something that still has meaning? And this is what I'm trying to do with Humane Developments. To have something that's meaningful. Maybe it's obvious as well, but it's meaningful enough to say without defining it so much that it allows the same kind of subversion again to go back in and kind of twist it to your own means, right? Sure. And I think that by being openly, essentially openly hostile to things like heavyweight processes and unnecessary tooling, I don't leave a window open for some organization to come in and like co-opt this. This term and twist it into something that's frankly evil. Right. Yeah. Because you're almost saying, you're almost targeting them before they come. Trying to build antibodies into the system to be resistant to commercialization. Yeah. Like it's an open source idea. I don't have to sell it to any. I don't care. I mean, you know, this is something I'm trying to work through for me and my company and I don't necessarily have to sell it to anyone else. Right. But it seems to be resonating with people is really encouraging. It makes me happy. Yeah. And in any commercialization of it would be just to propagate the same message, right? It's the only way that it's possible to commercialize it is to create training resources of how not to do these things. Right. Yeah. I think it's great. So humanedevelopment.org. Yes. Humanedevelopment.org. And if you happen to see me at any conferences, please approach me. I have stickers now. I will be taking one of those stickers. Thank you. I have stickers with me. Home to Chattanooga. This has been great. So people can follow you on Twitter at at Ernie Miller. That's right. Ernie Miller. And I'm going to ask them all to tweet at you when the show goes live. And inundate Ernie with tweets. This is a common thing I ask you guys to do. Okay. So another common thing that I ask my guests is if you had 30 seconds to spend with either an experienced developer. Or a beginner developer. Both sides. And give them 30 seconds of advice based on your experience and all of the things that you are learning now. And what would you say to them? I don't even need 30 seconds. Give me five seconds. And I would say ask for help. You don't have to be perfect. I think that's really the core of any advice that I've given to anybody I've ever mentored. It's like, you know, look, if you feel like you're buried, if you feel like maybe you're going down a rabbit hole, speak up. Ask. There are people who will help you. The internet is full of them. Our company is full of them. I am one of them. You know, reach out and let's work together to solve a problem. You don't have to know everything. Those rabbit holes are well traveled. There are people who have been there before. Well, this has been great. Thank you so much, Ernie, for being on the show. Thank you for having me, Jonathan. I appreciate it. Thanks so much for listening to this episode of Developer Tea, The Interview, which is brought to you by Ernie Miller. And I'm Ernie Miller. And I'm Jonathan. And I'm Ernie Miller. And I'm Jonathan. At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At At donation is a huge help to replace that gear and just to generally help me out in making this show happen four times a week. Thank you so much for listening to Developer Tea and until next time, enjoy your tea.