Episode 074 – Libraries vs Frameworks w/ Dennis Doomen




The 6 Figure Developer Podcast show

Summary:  <br> Dennis Doomen is on an everlasting quest for better solutions that will significantly improve the efficiency, the quality and the productivity of your software development teams.<br> <br> And among other things he is the author of Fluent Assertions, an API for asserting the results of unit tests in .NET.<br> <br>  <br> Transcript<br> Clayton Hunt: With us today is Dennis Doomen. Dennis is on an everlasting quest for better solutions that will significantly improve the efficiency, the quality and the productivity of your software development teams. Welcome Dennis.<br> <br> Dennis Doomen: Thank you, thank you for having me.<br> <br> Clayton Hunt: So before we get started, would you give us a little bit of introduction about yourself, maybe how you got started in the industry?<br> <br> Dennis Doomen: Ah, wow. 21 years and counting, absolutely. I actually don't know how I end up in this business. I mean, I just liked software development since I was young, I had a [inaudible 00:01:10], maybe you remember that. I had a [inaudible 00:01:14] as well, and started programming a C and C++ at the time. Somehow, I ended up in the non-IT business, but I did a little programming outside my job and then I decided to make it my profession. I've been doing this, for yeah, basically as I said, for the last 21 years as a professional software developer consultant.<br> <br> Dennis Doomen: Last 10 years I've been speaking a bit, doing some open source development as you may have heard. I enjoy my work; I am passionate. Love to talk about it.<br> <br> Clayton Hunt: Very cool. I was able to catch one of your presentations in Orlando a month or two ago on dependency injection and inversion of control. You want to maybe give us a high level overview of what that talk was all about?<br> <br> Dennis Doomen: Yeah. It was mostly driven by the fact that I ran into a couple of architects, experienced ones, that were telling the teams like, "You should not use dependency injection. It's evil. It's going to hurt you. It's going to ... I don't know, bring your code base down." And then I started to think about, why is that? Why are people somehow rejecting something? And the same happens with [inaudible 00:02:28] relational mappers, for instance. And I started to think about that, and I realized that probably everything is ... All of this whole attitude or mentality is caused by the fact that we misuse something.<br> <br> Dennis Doomen: Every tool has its advantages and disadvantages. If you understand that, you also learn when something makes sense or not. Dependency injection is one of the examples that you can easily take the wrong path. If you take the wrong path, it's going to hurt you. TDD is test-driven development; it's another example like that.<br> <br> Dennis Doomen: I started to think about, okay, what is it? What people ... what frustrates them or what are the pains of dependency injection? And tried to come up with some examples that tried to keep you away from that and make you successful Or at least I would say successful but at least allows you to solve the problem in the way it was supposed to be solved.<br> <br> Clayton Hunt: So what were some of the kind of misdirections that people were using? Sort of, dependency injec- yeah, dependency injection [inaudible 00:03:28].<br> <br> Dennis Doomen: Yeah, that's a good question. The people say stuff like, they hide the magic. You don't actually understand or it's really difficult to reason like how does an object get resolved and how did the dependencies get in? Where are they registered? They say that it is force it's kind of ... and other situations where all unit tests successfully complete and then when you run the application stuff starts to fall apart because you've never actually verified that your registration code is doing what it's...