Kent Beck On The FIRST Testing Frameworks, TDD, Waterfall & MORE | The Engineering Room Ep. 16

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 มิ.ย. 2024
  • In this episode of the Engineering Room, Dave Farley and Kent Beck have a wide-ranging discussion about the return of waterfall development in software, TDD, Software Design and lots of other things along the way.
    Kent Beck is the first signatory of the Agile Manifesto. He is the author of the industry-changing book "Extreme Programming Explained". Kent popularised Continuous Integration and TDD and wrote the first version of xUnit, the unit testing framework that has informed the design of unit testing frameworks ever since.
    It is hard to imagine people who aren't familiar with Kent Beck's work, but even if that is the case, his work has had an impact on how you think about, and practice software development and software engineering.
    --------------------------------------------------------------------------------------
    🖇 LINKS:
    🔗 "TCR (Test && Commit || Revert)", Kent Beck: ➡️ • TCR test && commit || ...
    🔗 "Tidy First", Kent Beck: ➡️ tidyfirst.substack.com
    🔗 Small Steps - "Explore, Expand, Extract", Kent Beck: ➡️ • Video
    --------------------------------------------------------------------------------------
    ⭐ PATREON:
    Join the Continuous Delivery community and access extra perks & content!
    JOIN HERE ➡️ bit.ly/ContinuousDeliveryPatreon
    -------------------------------------------------------------------------------------
    👕 T-SHIRTS:
    A fan of the T-shirts I wear in my videos? Grab your own, at reduced prices EXCLUSIVE TO CONTINUOUS DELIVERY FOLLOWERS! Get money off the already reasonably priced t-shirts!
    🔗 Check out their collection HERE: ➡️ bit.ly/3vTkWy3
    🚨 DON'T FORGET TO USE THIS DISCOUNT CODE: ContinuousDelivery
    _____________________________________________________
    📚 BOOKS:
    📖 Dave’s NEW BOOK "Modern Software Engineering" is available as paperback, or kindle here
    ➡️ amzn.to/3DwdwT3
    and NOW as an AUDIOBOOK available on iTunes, Amazon and Audible.
    📖 The original, award-winning "Continuous Delivery" book by Dave Farley and Jez Humble
    ➡️ amzn.to/2WxRYmx
    📖 "Continuous Delivery Pipelines" by Dave Farley
    Paperback ➡️ amzn.to/3gIULlA
    ebook version ➡️ leanpub.com/cd-pipelines
    📖 "Test Driven Development: By Example (The Addison-Wesley Signature Series), Kent Beck" ➡️ amzn.to/2NcqgGh
    📖 "Extreme Programming Explained: Embrace Change", Kent Beck ➡️ amzn.to/3K5fhg6
    📖 "Implementation Patterns (Addison-Wesley Signature Series (Beck))", Kent Beck ➡️ amzn.to/3K4VWvz
    📖 "Smalltalk Best Practice Patterns", Kent Beck ➡️ amzn.to/3JKyfYg
    -------------------------------------------------------------------------------------
    🙏The Engineering Room series is SPONSORED BY EQUAL EXPERTS
    Equal Experts is a product software development consultancy with a network of over 1,000 experienced technology consultants globally. They increase the pace of innovation by using modern software engineering practices that embrace Continuous Delivery, Security, and Operability from the outset ➡️ bit.ly/3ASy8n0
    ______________________________________________________
    CHAPTERS
    0:00 Welcome
    0:30 Introducing Kent Beck: Reputation and Repetition
    3:15 Unrealised Potential of SW Dev
    4:34 Is Waterfall is Back?
    8:17 “Wouldn’t it be easier if you did it right first time?!”
    9:40 From Agile to Infinity
    12:03 The Value and Discomfort of Discovery
    14:12 Focus on Learning
    16:25 Rediscovery of TDD
    20:52 Represent Tests in the Source Code (“one of my best ideas”)
    23:52 “Have you tried TCR yet”
    27:37 TDD improves design, specification and developer well-being
    30:04 Separate Behaviour and Structure
    33:50 Small Steps and Get Feedback in 10 seconds
    38:43 The Succession Problem - we don’t talk about it
    42:08 There’s Never One Way to do Things
    47:27 Designing for Complexity and Change
    49:34 The Trade-Off between Predicted and Revealed Value
    50:46 Motivation to Write a New Book Series
    53:34 Software Design is an Exercise in Human Relationships
    57:22 Writing “Tidy First?” and other books
    1:06:16 Conclusion - Try Stuff!
  • วิทยาศาสตร์และเทคโนโลยี

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

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

    Want to learn how to do TDD? I have a FREE tutorial, where you can practise the techniques along with me, here: courses.cd.training/courses/tdd-tutorial

  • @detre3521
    @detre3521 ปีที่แล้ว +48

    The legend himself, Kent Beck.

  • @raphaelscaff
    @raphaelscaff 2 หลายเดือนก่อน +1

    JUST Kent Beck!!! Incredible

  • @rajadas6432
    @rajadas6432 4 หลายเดือนก่อน +1

    Two legends in one frame. Absolute honor to listen to them. Thank you for teaching us.

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

    Dave Farley interviews Kent Beck. My day has been made. Thank you!

  • @ApprendreSansNecessite
    @ApprendreSansNecessite ปีที่แล้ว +3

    Every time Dave hesitates in interviews it reminds me how well written and delivered the scripted videos are and I am impressed by the amount of work it must be to do this at the pace he is doing it.

  • @eloy4
    @eloy4 ปีที่แล้ว +8

    There it is! A CEO told me once "the secret to success is to nail it the first time around"! I wish I could, every time!

    • @Kenbomp
      @Kenbomp ปีที่แล้ว +4

      Yes he's right nail it the first time but only in public after a series of private trials

  • @mcsee
    @mcsee ปีที่แล้ว +15

    Two legends. Thank for this stuff

  • @shashank.c
    @shashank.c ปีที่แล้ว +12

    I had been eagerly waiting for this episode. Thank you so much.

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

    I can see from this video how much respect Dave has to Kent as someone who has influenced our discipline and Dave itself. It feels like that overwhelmed Dave a bit...
    But it is great to see 2 influencial people talk about important stuff for endeavour of software engineering. How their ideas are overlapping, even though they never talked in person before.

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

      Agree with your insight. Dave seems nervous and is verbose and talking way too much. He should have a script of questions.

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

    Hi Dave, it’s amazing that you can share with everybody these exchanges of reflections, analysis on the origins and meanings of software development with those who made and make our industry. Thanks a lot for your generosity.

  • @fadidib8516
    @fadidib8516 ปีที่แล้ว +3

    The Legend Kent Beck.

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

    The OG. The GOAT.
    I was pleased to hear him dispel this recent stuff about TDD being "nothing to do with testing", of course it is!

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

    That was a great interview, Dave. Thank you very much for the effort!

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

    Awesome chat between you two! Thanks for recording and sharing all this wisdom 🤙🧠🥳

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

    I want this on a T-Shirt: Kent Beck: "Anything that looks like a legible, easily understood model has to be wrong because that's focused on what I already know."

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

    My OCD going nuts. These two gentleman produce more knowledge then my manager think a team of 20 ppl can output in one month.

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

    I have been eagerly awaiting this episode!

  • @raticus79
    @raticus79 ปีที่แล้ว +9

    "Payer programming" on the intro text at 1:10 would be pair programming I suppose.
    Sunday morning comic caption: "No, we do pear programming. Everything we touch goes pear-shaped."

    • @a.accioly
      @a.accioly ปีที่แล้ว +1

      Perl programming? Pare Programming? I'm sure that Dave will fix this soon.

    • @EzequielBirman77
      @EzequielBirman77 ปีที่แล้ว +3

      I would pay those guys to pair program with me 😅

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

      A pear with cables and a chip. You program it to walk and scare people.

    • @JohnKerbaugh
      @JohnKerbaugh 7 หลายเดือนก่อน

      Don't forget "Prayer Programming"!
      Change code, cross fingers 🤞, refresh...

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

    Love this. Absolutely love it.

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

    Thank you Dave

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

    “The difference between good design and bad design has much more to do with the relationships between the people involved than this system calling that system.” -Kent Beck

  • @7th_CAV_Trooper
    @7th_CAV_Trooper 6 หลายเดือนก่อน

    I would pay actual money to see Dave moderate a debate between Kent Beck and Rich Hickey.

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

    Great talk

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

    This is awesome! Any thoughts on releasing some of these videos as a podcast? Apologies if that's already been done or mentioned!

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

    My biggest takeaway from those is to separate structural changes from behaviour changes when raising pull requests. Makes sense in hindsight, but the teams I've worked with have made tests in the same PRs as the code under test. It is much harder to review!

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

      I’ve been applying that idea for a very long time now. It is a very natural thing to do once you have some experience. I tend never to mix behavioural changes to structural changes. If I noticed, for example, a typo, or I spot a function that needs implementation (not interface) refactoring, I do that in a following PR (to be done soon after the one with behavioural changes I’m working on). PRs, for me, must have a very limited scope.

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

    Minute 11:12 is a great summary of Agile

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

    I’m theory, iterative development doesn’t just apply to software, but also process change and information flow change. A company could try to completely design a new process and/or team hierarchy and replace the existing process in one fell swoop… but they would be better to improve iteratively. And like Dave always says, always test to verify the changes. The concept of TTD therefore and all the related refactoring techniques that apply to code, also apply to business transformation. That’s a pretty cool concept to think about! The assumption is that companies are just analog versions of software.

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

    Read his book but never actually seen him in video before 😮

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

    When you say design while you’re creating a test do you mean coming up with the objects you need during the process and hitting the shortcut to create them? This has been a gap that I’m not sure I’ve heard when it’s not just smoothed over - five years in development 🙏✌️

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

    Legends have to technically be deceased but know what you mean. What great knowledge.

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

    Had not heard of TCR! 💭

  • @jamontino
    @jamontino ปีที่แล้ว +4

    Good talk. Dave a bit starstruck😊

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

    Oh yes! SMaller Steps better. Planning smaller, building smaller, testing smaller, deploying smaller. It makes it so much easier to manage the flow of delivery. In fact I feel like the biggest challenge for teams is work breakdown and not technical stuff about 80% of the time.

    • @JohnKerbaugh
      @JohnKerbaugh 7 หลายเดือนก่อน

      I am curious what you mean by breakdown.
      Mind you, my experience has not been XP, or CI direct trunk development.
      I've always found poorly defined functional goals as the primary barrier to development teams.

    • @Veretax
      @Veretax 7 หลายเดือนก่อน

      The basis of all engineering design involves breaking down high level processes into ever smaller levels okay you have things that can be built individually

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

    Great talk.
    Just one thing, if you deploy each 10m, you dont have enough data on customer behavior to see if your doing better or worse, unless your a mega used software

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

      But your deployment's would also be equally small, so your changes would not be changes requiring monitoring customer response, at least not until after a few hours of work at least.

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

      But you customers can start using those features straight away, even though feedback on those features comes a few hours/days later. The important thing is to always keep your system in a releasable state and optimise for complexity, so if anything needs changing, it can be quickly done.

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

    There has to be some acknowledgement that engineering doesn't agile build bridges - they have a fairly rigid set of budget, location and outcome criteria.
    Unfortunately software engineering is either assumed to be "engineering" or has to be funded in the same model.
    I think most funding owners grossly over estimate the value and grossly underestimate the cost. So they "solve" the problem of variability in vale/cost but requiring more effort up front.
    I think there is a place for initial waterfall to test the specification for organizations who don't use VC funding to robustly test the idea - the problem is pet/executive projects.....

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

      Actually they do. When a bridge builder engineer have to build a regular bridge it is just following a process. They chose the style calculate the measurements and done. When they have to build a bridge which was never built before, at that when real engineering begins. They try out new structural configurations, run simulations and so on, but of course they do not do it on full scale.

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

      The design and engineering of bridges is not as simple as outsiders tend to think it is.
      From: en.wikipedia.org/wiki/Tacoma_Narrows_Bridge_(1940)
      > "Following the incident, engineers took extra caution to incorporate aerodynamics into their designs, and wind tunnel testing of designs was eventually made mandatory.[43]"

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

    The animated borders around each person in the video are very pretty, but my goodness they are quite distracting for me sometimes. They remind me of the time when screensavers used logos that bounce around their monitors and almost perfectly hit the corner.

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

    TEst Driven Development is a process of building and designing one test at a time. Yes it has tests, but the issue isn't test, the issue is knowing what works up to the point of the last test written. To the degree that you can test it at that level anyways.

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

    How do we do this around contracts in the consulting industry? I’m in the shadow of leadership as you said, but what’s some feedback there??

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

      You don't. You absolutely don't. Stay in business by disregarding most of this advice. I'm not saying these are not good approaches, but they are at best partially applicable in a development as a service business model.

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

      @@byronjones5902 completely disagree. The best handoff you can do as a contractor is that of an artifact documented and covered by a living specification, which is the test suite. It is part of the proof that you have delivered your work as specified, and it doesn't leave people cursing that you ever developed anything for them. The worst contractors are the ones with the bad habits. There's no reason that standards should be, or are, lower for contingent labor than for FTEs. TDD doesn't slow you down, either, if you are competent at it.

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

      @@sciros I actually agree with that, specifically, that its great to leave behind a living spec. Problem is, the people cutting checks have a completely different viewpoint than the people writing code about its value. More often than not, those people value written documentation, but not the test suites that back up the claims made about the solution's functionality in said documentation -- particularly when the company soliciting contracting services is not in the tech space ("What the heck is this?", "Did we have to pay for this?", "The test-thingy you showed us says everything works.. so why I am having issue XYZ? If it doesn't ensure there will be no problems, why did we have to pay for it?"). I'm not anti-test, just pro money. With regard to TDD as a practice, I've learned that its a matter of how the individual developer's brain goes about problem solving. For some, its a performance boost -- for others, a hindrance.

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

      @@byronjones5902 >people cutting checks have a completely different viewpoint than the people writing code about its value.
      This is a lie that keeps been perpetuated by those who accuse developers of not understanding how business works, that clients "don't write blank checks", that clients require everything to be properly documented, etc. Lies. I (and others) have debunked those lies for years now.
      I have worked on a significant number of projects/products for clients of consulting companies for years and never EVER come across what you describe.
      People cutting checks need value in their hands and, as developers, we must be able to deliver that value. There are no different viewpoints. There are better and worse ways of working. Software must be developed with iteative and incremental approaches, continuously delivering valuable software into the hands of the customer, listening to feedback, adjusting. Repeat.

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

    I freak out doing tcr. It always feels like what if I waste my effort. For now Im sticking to tdd

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

    It would be great if this was available on spotify so I could listen with my screen off

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

    🌟 🌟 🌟 🌟 🌟

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

    Wonderful video. It's a shame that most people working in software still don't get it after decades. Do yourself a favor and read the books ...

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

    IBM? Did Harlan Mills have anything to do with that?

  • @birames.1154
    @birames.1154 ปีที่แล้ว

    Dave you seemed a bit impressed by interiewing the "legend" did you ? 😁

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

    I'm like actually starstruck aye

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

    OMG, Beck doesn’t even think one can use the word “old” unless one is oneself old!

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

    The more things change, the more they stay the same.

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

    Autocorrupt got Dave as well with "payer programing" at 1:10 :)

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

    Hey Dave, I guess there should be a translation mistake , should be pair programming instead of payer programming

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

    Nice talking!

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

    I love "payer programming"

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

    Holy crap its Walter White of software development 😂

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

    Agile will not get you more lines of code out that door than waterfall, it will get the RIGHT lines of code out the door and start getting an roi sooner. If you need predictability, which most business contracts are written around, waterfall is likely the right answer.

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

      I mostly agree, but not where you say "Waterfall gives you predictability", in my view it absolutely doesn't. It gives you the illusion of predictability, but it doesn't allow for integration costs, and always, in my experience, results in systems going into production with lots of bugs. But it doesn't schedule the time to fix those bugs. At that point the project goes into "Emergency Change Management" which is basically agile, but now with an enormous technical debt.

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

      Waterfall has never been the answer. There is a common misunderstanding in the industry that Waterfall is a “model”. No one - and I mean *no one* - in the history of software engineering has ever presented a “Waterfall model”. The idea that software had to be developed in subsequent phases was adopted by the US DoD. They never understood that what Dr. Winston Royce was presenting in his 1970 paper on how to manage the development of large systems was a model *to avoid* (he wrote something along the lines of “don’t do it this way, it invites failures”) and proceeded to explain how to produce those systems iteratively. He even mentions involving the customer in a very similar way to what the Agile Manifesto describes. Royce himself was a supporter of iterative and incremental methods. The industry understood the opposite and a “Waterfall model” dominated it for 20 years, until the adaptive methods reemerged and Agile was formalised. We have always knows, however, that software should *never* be implemented with a “Waterfall model”.
      Customers don’t need predictability. That’s an extremely common fallacy. Customers need a software that solves their problems. They only need predictability when needing predictability is the only option we give them. If you ask me for a software, and I tell you that you’re going to get it at some point in the far future, then of course you want to understand how long it’s going to take and how much it’s going to cost you, before you embark on a journey where you won’t see results for a long time. If, on the other hand, I agree with you to release limited-scope features continuously, frequently, so you can evaluate them, give feedback and adjust, limit your financial exposure, and decide, at each step, if you want to continue investing in the product or not, you are not going to need predictability. Remember: “Waterfall” was never a model for software development. We have known that software must be developed in iterative and incremental ways for 70 years now.

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

      @@andrealaforgia 💯💯

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

      ​@@andrealaforgia Call it what you will, but most contracts define what should be implemented, by when and with a known budget. In fact, they usually spell out exactly what happens when those things don't happen. Waterfall may not be the answer in this very common case, but agile definitely isn't either.

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

      @@adambickford8720 If you are saying that a lot of companies implement a fixed scope + fixed budget + fixed time policy and they come up with hefty fees when you don’t deliver according to their fancy dreams, you are right, but that’s only because they have not yet understood the nature of software and insist on applying a model that DOES NOT work for software. The people demanding that way of working are the same that object to the (sensible) arguments against long-term estimates in software starting their sentences with “Well, if you build a house, you want to know…”.
      Software is not houses.
      Companies that adopt those contracts are not successful at delivering software. It’s proven by data. The 2015 CHAOS Report front the Standish Group collected data from the industry proving that Agile is 3x more successful than Waterfall and Waterfall is 2x more likely to fail, so yes, Agile is the right answer for software development. But, as I said, we already knew that.
      There are a lot of different agile contracts that can be adopted to implement software agilely.

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

    “Payer programming”?

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

    Payer programming?

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

    Oh, "Ken**t**".
    Not "Ken".
    Oof...

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

    Payer programming 😂

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

      At first glance I thought it was Prayer Programming😊

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

    Dave talks more than the guest :/

  • @Kenbomp
    @Kenbomp 2 หลายเดือนก่อน

    C3 a project from.chrysler company using smalltalk environment