Did Kent Beck REALLY Invent TDD? | Kent Talks About TDD, TCR & Reveals One Of His BEST Ideas

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ธ.ค. 2024

ความคิดเห็น • 22

  • @SuperPranx
    @SuperPranx ปีที่แล้ว +2

    For me it’s difficult to know how and where to start with TDD. University didn’t mention testing even once. The first time I encountered tests was when I started working, so I’m used to writing tests afterwards and the only tests I’ve ever seen were tests written like that. Those tests check whether functions called from mocked DI services are called using an expected set of parameters and that’s done for almost everything, even when those specific function calls are not the desired result, but merely a “waystation” on the road to calculating/generating the desired result.
    For a long time it has been difficult to me to grasp how I could write the tests upfront when I don’t know which methods I’m going to call and with which parameters, as I haven’t written the code yet. If I understand TDD correctly, after all this time, I don’t really need to care which functions are called unless that’s the end result I’m expecting. I would need to test the return value only, that it’s as expected, regardless of what it will take to get there. Because, while I don’t know how exactly I’ll get the result, I do know what result I want to get. Would this be the correct way to think about it?

    • @ContinuousDelivery
      @ContinuousDelivery  ปีที่แล้ว +6

      Yes, that's a better way to think of it. I'd go slightly further, it is not that you "don't really need to care", but really DON"T TEST THAT STUFF! This couples your test, inappropriately to your solution. The goal is to have tests that can be stable as the code has the freedom to change and evolve.
      I have a free tutorial if you are interested: courses.cd.training/courses/tdd-tutorial

    • @SuperPranx
      @SuperPranx ปีที่แล้ว

      ​@@ContinuousDelivery Thank you, I will definitely take a look! I'll also share this with my team, since they're the ones that are learning now, from the same codebase, how to do the same mistakes we did in the past... Hopefully we can make a change for the better :)

  • @brownhorsesoftware3605
    @brownhorsesoftware3605 ปีที่แล้ว +1

    What drives development if not verification? There is a Dijkstra quote about having logically proven that some code is correct, one cannot verify that it works until it is run.
    The most useful test tool I've used in my career was an in-house record compare program called C12RC that could compare two complicated sequential inputs in amazing ways: late 70s at the Chicago electric utility where I learned programming.
    In the system and program utility context where I've spent most of my time it is more often the case that you find a test rather than write one. For a Java platform on a device there are conformance test suites for every api. But those tests are just the baseline. You also need to test real applications. But this work was more about optimisation, extending apis, and refactoring out the confusion that manifests itself as fragility or resistance to change than about generating new functionality.

  • @m.x.
    @m.x. ปีที่แล้ว +2

    Most of today's software engineering approaches and design patterns used to be done by many developers decades ago, we just didn't have catchy names for them. Example, microservices and microfrontends, already a thing in 2008 or even earlier.

    • @andrealaforgia7699
      @andrealaforgia7699 ปีที่แล้ว

      Very true: In 2006 I was working on a large system for a leading betting company where one of the modules my team had built as a monolith was growing too big and naturally showing multiple bounded contexts that could be separated. At the time, we had EJBs, which were designed for remote distribution and invocation (RMI) and systems could talk via messages (Message Beans / JMS). We had Oracle queues. We were basically breaking down our monolith into separate, independent modules, each with its own data, deployed independently, able to send async events, etc.

  • @kourosh-h8s
    @kourosh-h8s ปีที่แล้ว +1

    I wished Kent showed a Real TDD for CRUD. He could set an industry standard

    • @ContinuousDelivery
      @ContinuousDelivery  ปีที่แล้ว

      Funnily enough, I describe that in this video, it is not exactly what you asked for, but it is pretty close, and as I say in the video, I think that you, and the person I am responding do in the video, are asking the wrong question: th-cam.com/video/_gteHp-ZR9k/w-d-xo.html

    • @kourosh-h8s
      @kourosh-h8s ปีที่แล้ว

      @@ContinuousDelivery Thank you for your answer :) May I ask why my question is wrong? or rather what is the right question?

    • @ContinuousDelivery
      @ContinuousDelivery  ปีที่แล้ว

      @@kourosh-h8s "CRUD" is an implementation detail, not really a good way to structure requirements or testing. Good TDD tests express a need, that needs to be fulfilled, CRUD isn't a need, it is an approach to a solution.

  • @chrisjohnson7255
    @chrisjohnson7255 ปีที่แล้ว

    Wow I’ve been doing TCR by accident!

  • @kane_lives
    @kane_lives ปีที่แล้ว

    Dave, I like the content, but I find the moving parts in the background very distracting, can you please try using a static background in these dialogue-style videos?

  • @edgeeffect
    @edgeeffect 8 หลายเดือนก่อน

    That tickled me... "i don't care! I'm not your PRIEST!"

  • @llothar68
    @llothar68 ปีที่แล้ว +5

    No. Kent did not invent it but he managed to turn it into a religion.

    • @edgeeffect
      @edgeeffect ปีที่แล้ว +2

      And yet he says "I don't care, I'm not your priest!"

    • @michaelpastore3585
      @michaelpastore3585 ปีที่แล้ว +12

      People who use TDD: This is a great technique that greatly improves my ability to write quality software.
      Other people: Oh, so you're saying I *HAVE* to follow TDD or else I'm a lousy excuse for a programmer? You zealots are all the same.

    • @Gaming214-y3g
      @Gaming214-y3g ปีที่แล้ว +2

      ​@@michaelpastore3585 when one say it improve his/her ability to write quality software, it means that how it has help him/herself and shares it to encourage others. It does not imply those that does not practice to write lousy or good code. If the person feels that way just because someone share about his/her experience... Then, does it mean the person is self admitting? Hm....
      When someone say they practice clean code and it improves the code readability and maintenability, then what should those people that don't practice it think what it means??? Hm....
      This same applies to everything else, when people shares their experience and how it help them improve, and people who don't practice them think negatively... Hm....

    • @banatibor83
      @banatibor83 ปีที่แล้ว

      @@michaelpastore3585 TLDR Yes, you are! :)
      TDD is not just about test coverage. It is about design, it is about ease of testability, it is about high cohesion and low coupling. It is about SOLID. It is about a safety net, when you have to refactor a year later. The fact that your software is well tested at the end is just a side effect.

    • @andrealaforgia
      @andrealaforgia ปีที่แล้ว

      I’m not sure where you got the idea that Beck turned TDD into a religion. He sent the exact contrary message in the video. It’s not a religion, apply it if you find it useful for your specific context. Not sure who the “TDD people” are. I see a lot of variety among people in the way they apply TDD. There are different schools and degrees of application of TDD. The idea is always to try what worked for others, see if it works for you. If it does, great. If it doesn’t…. great!

  • @ordinarygg
    @ordinarygg ปีที่แล้ว

    Level of selfishess here is at GOD maximum. I like how they always talk but 0 real code or examples provided))))))) and this across all channels like this)

    • @redjolresulaj3308
      @redjolresulaj3308 ปีที่แล้ว

      Dave has a course you can buy where he teaches the techniques