Entwicklertag 2016: How Agile and OO have lost their way together - James Coplien

Поділитися
Вставка
  • Опубліковано 21 лис 2024

КОМЕНТАРІ • 70

  • @alrightsquinky7798
    @alrightsquinky7798 10 місяців тому +1

    Beautiful talk! And I loved James’ humorous illustration of the etymology of Scrum. It’s a shame that no one would be willing to make physical contact with one another anymore in this post-COVID world 😢

  • @dimitarpopov974
    @dimitarpopov974 6 років тому +16

    This was an amazing talk. Absolutely stunning and reinforced many of my personal intuitions of successful development. I tell my teams - the Domain Model must match reality as closely as possible and you will not need to fundamentally change it, everything falls into place when you do.

    • @r2-p2
      @r2-p2 3 роки тому +6

      I am at minute 22 and have no clue what he is talking about.

  • @gormkirton6669
    @gormkirton6669 6 років тому +8

    Great talk. Most developers probably won't get it, but great talk nevertheless. I especially liked the part about sprints failing 50% of the time. It's such an obvious thing, yet I haven't thought about it after many years of working in various Agile teams.
    For people who don't get it:
    1. Watch some Alan Kay presentations. OOP was about self-managed objects and message passing. Java doesn't have any of that.
    2. Unit tests are supposed to be _tools_ to achieve product quality. Instead, developers wave those things around as _proof_ that their products do not suck. If your product doesn't suck, you better have something to measure it by other than your process. At the end of the day no one cares about your process.
    3. CD means things change all the time. Users don't like that. Users like stable software.
    4. Refactoring is rework. Plain and simple. Good software is simply changed and extended, not refactored.

  • @Zhuinden
    @Zhuinden 4 роки тому +2

    Amazing talk, and a much better presentation style than the one at GOTO Con 2017. I had some of my answers questions that were raised by the same presentation by the same person just one year later -- I think this one was better as such.

    • @Zhuinden
      @Zhuinden 4 роки тому

      Personally, I am not sold on the idea that "class-based programming" is inherently bad, but I am definitely sold on the idea that mocking at method level with mocks is crazy. And a few other things.

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому

      Hmmm. Interesting. I wish I knew why.

  • @MaciekPiekarski
    @MaciekPiekarski 7 років тому +6

    31:40 - continous delivery. You said that CD is bad and users hate it without really saying why. What are the downsides from the users/customers point of view?
    33:35 - Lufhtansa. What does it have to do with OO? Crappy UX == no OO?
    35:59 - Separation. Splitting a system into cohesive, well defined parts doesn't mean that you don't think about how are they supposed to interact. How could it?
    37:35 - how does planning remove the need for refactoring? I thought that we should decide on a goal and take a step to bring us closer to it. Then evaluate if the
    goal is still vslid and that the direction is ok and continue. But the goal might (and most likely will) change over time so even with planning rework is inevitable.
    47:45 - tests. Sooooo... where do we get our automated regression tests from? Aren't they the documentation of things we learned during exploration testing? This in turn is
    just a way to figure out how exactly should something work. The purpose is not JUST to make the green bar come up but to make the green bar come up as a result of verification
    of our requirements!

    • @MaciekPiekarski
      @MaciekPiekarski 7 років тому

      Well, I would like to get a list of flights on some route on a specific day (and a few days before/after to compare prices), select the class, see how much it costs and pay for it.
      Last time I checked (a few months ago) it was more less how the process looked like on Lufthansa's website.
      Maybe I have my thinking already fixed on the provided model but it looks reasonable to me. How would you improve it? And how is it connected with OO?
      And I am not old enough ;)

    • @BryanCopelandbcmoney
      @BryanCopelandbcmoney 7 років тому

      Why CD can be bad...
      Believe he implied the side-effect of annoyances due to constant updates and user despair caused by continuous improvements which often spell total changes either to the User Interface or how the user will carry out their tasks, sometimes even breaking changes between versions (no backward compatibility).
      i.e. "Do you want to apply update XYZ?", iOS/Android app store constant updates to apply, Windows Update auto-restarting your system without permission, Adobe/Java plugins and their constant vulnerability patch dances, and any other drastically different front-end changes users have to deal with in their software/tools.

    • @MaciekPiekarski
      @MaciekPiekarski 7 років тому +1

      That's not what Continous Delivery is. What you are describing is Continous Deployment of software installed on clients (i.e PC's, smartphones) with each change containing changes to UX.
      Let's be precise in what we are talking about. If it's Continous Deployment with breaking changes without any notice to customer facing interfaces (be it REST or some GUI) then I agree - it's not good. What's wrong with it in 90% of other cases?
      And about those Java updates - it's not possible to create software without any bugs/vulnerabilities so there's no way around them.

    • @BryanCopelandbcmoney
      @BryanCopelandbcmoney 7 років тому

      From my perspective the only difference between CI and CD is that CI
      will build on set schedule (hourly, daily) or event (WebHook, Poll, etc)
      and queue the artifacts/distros up for manual deployment whenever the
      Build Master desires (again a set relese schedule), whereas CD will
      build on each commit no matter what, and immediately push that change to
      Production-like Test environment(s) and unless the change is flagged
      for problems via Manual or Automated Testing, then the change gets
      pushed up to Production automatically.
      Both have changes happening at an extremely rapid click, and introduce
      more opportunities for errors or user-frustrating changes, unless of
      course true DevOps CD is followed and the customer is part of feedback
      loop and personally requested the changes outright. Even then, the
      constant changes will inevitably delight some and distress others.

    • @sivabudh
      @sivabudh 7 років тому

      Bryan Copeland I think CI and CD are simply mindsets. At my company, CI is the mindset of developers working together to integrate their work and ensure that the newly integrated system (still) works. CD on the other hand is simply the mindset that the (properly) integrated system is then delivered - as early as possible - to end users who can derive the values that they (for not free systems) paid for.

  • @Jovanovic70
    @Jovanovic70 8 років тому +5

    Hi, thanks for sharing. Is the slide deck available on-line somewhere? Thanks

  • @gordonfreemanq
    @gordonfreemanq 6 років тому +3

    I'd be very curious to see how Jim would handle industrial firmware programming, where by definition the only external interactions your software has is with other machines through industrial protocols. Would he say that OO programming just doesn't apply in such an instance?
    It would also be nice if he gave a few concrete examples to show what the functional difference would be between Object Oriented and Class Oriented design.

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому

      Been there, done that.

    • @gordonfreemanq
      @gordonfreemanq 4 роки тому +1

      @@jamescoplien5257 Appreciate the reply, but that doesn't really help resolve any of the questions I had :)

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому

      @@gordonfreemanq You're welcome to Email your questions to me.

  • @elvicsolgb
    @elvicsolgb 2 роки тому +2

    I’m gonna watch this again & absorb even the fine points that were being said here. Jim is going a lot of places that grasping where he’s at is a bit of an effort to hold what he’s really saying. But in general, I kind of grapple the trajectory of his thinking. It somewhat resonates with what I intuitively sense in the software dev industry about the idiocy of the many of it’s practitioners, the misunderstandings, the focusing on technology over people, the maintaining of the aura of sophistication over real value to human beings & a lot more aberrations that plague the industry. It’s a paradox that the very people who were supposedly to be above average in cleverness are the very ones to succumb to blindness of what they’re really doing & the ones to be easily sidetracked to the real purpose of their profession. In fairness however, this is also true in other fields of human enterprise like politics, science & even education. This happens when all they only have are highly intelligent peoples but lack wisdom.

    • @JavierPortillo1
      @JavierPortillo1 2 роки тому

      Yeah, I think I need to watch this two or three times more to grasp a little bit more of what Jim is saying.

  • @geracervantes2362
    @geracervantes2362 7 років тому

    i think clacess are the interface that individuals uses to interact with their computers

    • @Jiyukan
      @Jiyukan 6 років тому +1

      No, they are not. Objects are. Regardless if you have classes in the language or not. To nitpick: classes are only text in a programming language. You can only "interact" with them by opening a text editor and changing that text.

  • @scristaldi1
    @scristaldi1 7 років тому +4

    It would have been nice if you would have given information to back up your propositions. Remembering that not everyone has your proported expertise.
    Java can not create objects? What?

    • @tnosugar
      @tnosugar 7 років тому +1

      He said you cannot do OOP in Java. He didn't say you can't create objects :)

    • @Muzzleflash1990
      @Muzzleflash1990 6 років тому +2

      Just came across this video and your comment. He says you cannot *write* objects in Java. You can of course create objects, but first you must *write* a class.

    • @Jiyukan
      @Jiyukan 6 років тому +1

      In Java you program with classes. Not with objects. read *program*. In true OO environments like Smalltak you are in an IDE and simply can say "w = new JWindow()" (I use Java speak). And inside the IDE a new empty JWindow pops up. Now you can add properties and methods to the variable a ... the object. And more important: when you quit the IDE an restart it, that variable a is back, the window is on the screen etc. When you are finished programming you have a soup of objects, partly visible partly not. Then you "strip" the IDE from that running environment and what is left is the running soup of objects (and classes).
      Other languages like SELF are more explicit as they simply only have objects, they don't have classes. Same for JavaScript, but javaScript is hiding that a bit.

    • @r2-p2
      @r2-p2 3 роки тому +3

      @@Jiyukan Just watched the video and I am not past the first half yet. But I don't get the point of any of his arguments. He just says things like you can not implement objects. So what. Surely different tools offer different ways to solve things but in the end, the problems can be solved and just because the inventor of oop hat objects in mind and not classes does not mean that instantiating classes is bad. I mean so what if I can't add attributes to instantiations of classes. Where is the problem? Maybe we should not have classes or even objects in the first place. (Besides, you can add a map to the class and add as many things at runtime as you wish)
      Also when he says: "What part of the controller handles input events: It is not a controller it is a tool." What does that even mean? Is he mad about people implementing InputControllers and would he rather see InputTools?
      I read comments that this video helped some people but I am watching and don't know what I should change now. In fact, I see other videos which argue that we should not implement the domain model since that does not match with how computers work internally leading to slow software and hard to see through abstractions which become hard to maintain.
      Maybe I should have become a baker.

  • @CEPC90
    @CEPC90 7 років тому +1

    I agree with what he spoke about in that presentation. Software is a craftmanship and people, and managers are trying so hard to control and measure it. I think it's hard to control because it is mostly and art. The art of writting software that can always scale. However he rants a lot, and the video doesn't have a lot of views. So, maybe I am wrong by agreeing with him?

    • @LegionL-A
      @LegionL-A 6 років тому +3

      This is a bit late of a reply, and I imagine you have moved on since then, however I think that one of the underlying points of his talk which is very important to grasp is that he wants you to think for yourself. And no one else can do that except you.
      As you very well know, the catch that comes with thinking for yourself is that sometimes you will have to think differently from others, and to do that you need the courage to stand up against other's opinions, no matter how appealing it might be to follow the crowd (or mob). I think it is noteworthy as well to mention that very many of the highly esteemed minds of the past are people who were not very much recognized or appreciated in their own times (think of Socrates, Galileo, Nikolai Tesla and Van Gogh just to name a few).

  • @happyuk06
    @happyuk06 7 років тому +1

    Is Jim starting to slowly take on a Germanic / Danish accent?

  • @DeckerCreek
    @DeckerCreek 4 роки тому +2

    Ok but everything is wrong, so, what is right?

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому

      I think I gave several examples of how to do things right. It's just that people don't.
      Please watch it again.

    • @alimahdi6379
      @alimahdi6379 4 роки тому +2

      @@jamescoplien5257 hi Jim. Great talk especially on the parts concerning the people. You did offer some suggestions but for the most part you were criticising the status quo. You managed to shake my faith, my belief quite a bit. You were right. I have no proof that any of it works. So what should I do now?

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому +4

      @@alimahdi6379 I don't tell people what to do because, in some sense, it doesn't work ;-) If I've shaken your faith, I've done my job. And I'm not sure how you would know you were done doing what you need to do next: i.e., what is your objective?
      If your objective is to do great things, seize every opportunity you can to explore ideas in depth. This usually means going back to the source. I think it started for me when I was learning C++ and supporting Stroustrup as he developed it, and must have exchanged Email with him almost every day for a year or two. When I wanted to learn MVC I went to Reenskaug; to learn Scrum, to Sutherland; and so forth.
      The original fonts are often inaccessible but most folks certainly can do better than ground their practice in trade rags, talking head talks (like this one :-( ) and Tweets. Come to understand the original underlying theory behind things, and too often you'll find that the spokespersons for this or that haven't themselves taken the time to do so. Some of it is easily verifiable stupid stuff, like Alan Holub today blaming Sutherland for starting the Scrum certification craze (it was Schwaber), and some of it is more subtle, like defining object oriented programming as working with encapsulations of state and data (no, that's ADTs).
      It will take time. I have been exploring the OO thing since 1982 or so, and it took me about 30 years to fully appreciate what Kay was trying to do. (Even most of the Smalltalk crowd, who tried to convince me all those years that I was wrong, themselves didn't really get it.) And I still leave the door open to being wrong in light of yet more authoritative evidence. To be like this might mean finding a senior mentor, or it may mean delving into the archival literature. There's no recipe. But first and foremost, be skeptical of surprising results, and of claims that are not backed up by proof or peer-reviewed publication in an esteemed journal (by which I might even exclude IEEE publications, though most ACM journals are still O.K.). Think and doubt, rather sign up and believe. Dubito ergo sum.

    • @alimahdi6379
      @alimahdi6379 4 роки тому +1

      @@jamescoplien5257 Thank you Jim for taking the time to reply. Getting an A is great but I always wanted the 100. But it has not been that easy. I always felt there was something wrong but could not quite put my finger on it. I always blamed myself. But there ware so many things to do. So many distractions. Don't get me wrong. I think source control is awesome and necessary. But TDD, Agile, ... etc. Just did not help bring the focus to the main issues; satisfying the customer real requirements, delivering good quality on time, and be proud of we have built and were we are.
      I had just dusted off the Design Patters book by the Gang of Four. I thought I'd read it again, then I saw your lecture. I felt like a soldier who was tired and beaten but had some hope in the gun he had with him, only to find out that it is not as reliable as he thought. If I doubt you then what hope do I have.

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому +2

      @@alimahdi6379 The Design Patterns are interesting. The original C++ Idioms from my 1991 book were one of the four sources for the GoF book. Everyone thinks they are patterns; even from the first formative days of the software pattern discipline, we discounted them as something less. Everyone thinks they're the foundation of OO; no, they're what you do when your programming language doesn't properly express your abstract data types. They're hacks. Richard Gabriel once remarked that he doesn't understand them because he never needs them: CLOS gives him everything he needs out-of-the-box by way of expressiveness.
      In the final analysis, it is just a matter of maturity. We can use the excuse that we are an immature discipline, and to some degree that's true. But these clarifications are not unknown. They fall victim to educators and practitioners who seek fashion over principled design, and buzzwords over science. Personal computers and agile have laid a foundation for individualistic development apart from a team consensus or industry consensus view (after all, it's "individuals and interactions" - not teams). People forget and even argue against the most rudimentary basics, because their insecurity drives them into self-reinforcement if the energy level required to understand feels too high. I recently found myself arguing with someone in a prestigious forum that hash functions should be dumb and run fast. I mean, you don't even need algebra to figure that out. I sometimes worry that we are an industry of idiots, and I know that history will both laugh at us, and marvel that we could make software that works well enough to drive a car. (Even I have difficulty reconciling these two, and I think it somehow owes to the orders of magnitude of difference in talent between everyday programmers and the few who know what they are doing and who ultimately come into a position to steer the ship.)
      So it comes down to individuals taking the extra time, making the extra effort, and giving themselves the time (sometimes decades) and space (for error) to learn. When you read the GoF book, were you asking yourself: Why does this pattern work? What are its potential negative consequences? If I implement code that doesn't look like their diagram is it still that pattern? And: do I care? People get hung up on technique: things that can be trained, like we train dogs, and certified. It is the most nematode-style of thinking with which humans are endowed.
      Focus on the doubt. It sounds like you are already focused on the end-user; that's even more important (not the customer, by the way).

  • @Jiyukan
    @Jiyukan 6 років тому +1

    Well, you look the same as 12 (now 14) years ago. (Angelo here, the Aikidoka)

  • @ikeo8666
    @ikeo8666 6 років тому +9

    This talk could have been amazing but the speakers inability to resist ranting makes it almost unwatchable. There are some really good quotes that I wish he expanded on and explained but he is completely unfocused and leaps from one rant to another.

    • @IanFrantz
      @IanFrantz 4 роки тому

      I found it pretty on point regarding agile needing to be people focused and I thought many if not all the examples looped back to this premise which BTW, is one of the four values in the manifesto.

  • @johnnyLikeVideo
    @johnnyLikeVideo 7 років тому

    What if your mob is only three people?

  • @brawndo8726
    @brawndo8726 5 років тому +4

    36:35 before this, I was thinking, this guy is using a lot of charismatic and rhetorical tricks to make his point.
    I would call him a cult leader if I wasn't already sipping on his Kool-Aid...

  • @alessandrob.g.4524
    @alessandrob.g.4524 4 роки тому +1

    Jim Coupling is against a lot of stuff

    • @defeqel6537
      @defeqel6537 3 роки тому +1

      And it seems misunderstanding some things; unit testing is not about class testing (although many do it that way).

  • @oldager1662
    @oldager1662 6 років тому

    Cope --- you're from Illinois, aren't you? Other than that - another excellent dissertation. Reality is complicated!

    • @jamescoplien5257
      @jamescoplien5257 4 роки тому

      I once lived near Chicago, which is not really Illinois, but I'm not from there.
      "Other than that..." ? lol!

  • @antonchernikov8671
    @antonchernikov8671 7 років тому +1

    I feel really bad every time people say: 'everyone is wrong, we lost our true way'.

    • @geracervantes2362
      @geracervantes2362 7 років тому

      why?

    • @antonchernikov8671
      @antonchernikov8671 7 років тому

      Because it's becoming very religious at this point. We haven't lost the true way, we've just evolved.

    • @b4se16
      @b4se16 7 років тому +1

      I know what you mean... but this guy kind of knows what he's talking about. there's exceptions.

    • @tranzer1
      @tranzer1 6 років тому

      Exactly. And this constant suggestions about some hidden agenda (he stole that, they want to make money).

    • @b4se16
      @b4se16 6 років тому

      Piotr Kopalko yes, hidden agenda is: make people finally understand what OOP really is.

  • @oldager1662
    @oldager1662 6 років тому +2

    Cope you can't be serious about mob programming. You were doing so well there ..