The Pragmatic Programmer 20 Years Later • Pragmatic Dave Thomas • GOTO 2020

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ต.ค. 2020
  • This presentation was recorded at GOTOpia Europe 2020. #GOTOcon #GOTOpia
    gotopia.eu
    Dave Thomas - Author of "The Pragmatic Programmer" ‪@pragdave‬
    ABSTRACT
    Dave Thomas and Andy Hunt conquered the world in the late 90s with the best-selling book The Pragmatic Programmer, which quickly became a staple for every programmer.
    This book came straight from the programming trenches, cutting through the increasing specialization and technicalities of modern software development to examine the core process - taking a requirement and producing working, maintainable code that delights its users
    20 years later, they are back with a new edition that has major revisions and new material reflecting changes in the industry since its first release.
    Dave will take us through the world of software in the light of [...]
    Read the full abstract here:
    gotopia.eu/2020/sessions/1475...
    RECOMMENDED BOOKS
    Dave Thomas & Andy Hunt • The Pragmatic Programmer • bookshop.org/a/9452/978013595...
    / gotocon
    / goto-
    / gotoconferences
    #PragmaticProgrammer #Programming
    Looking for a unique learning experience?
    Attend the next GOTO conference near you! Get your ticket at gotocon.com
    SUBSCRIBE TO OUR CHANNEL - new videos posted almost daily.
    th-cam.com/users/GotoConf...
  • วิทยาศาสตร์และเทคโนโลยี

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

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

    Thanks for sharing, Excellent presentation!

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

    Great talk, thank you!

  • @hungngo2857
    @hungngo2857 3 หลายเดือนก่อน +1

    God level of perception

  • @marcusrehn6915
    @marcusrehn6915 11 หลายเดือนก่อน

    I whole heartedly agree that university teachers should have practical experience.

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

    The point that apprenticeship over university/bootcamp is so obvious, and so evident in the experience of nearly everyone I talk to. But, how do we transition people towards this? It seems that university is almost necessary to get started right now.

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

      This would likely require some architectural changes to our employment laws, high school and university university timetables, caricula, and funding. Because you have to create both parts of that apprenticeship, not just push the aptentice into apprenticeships which do not exist and cannot exist due to the incentives under the current system.

    • @TheOtherBradBird
      @TheOtherBradBird 2 ปีที่แล้ว

      @@MrApplewine "Electricians and tradesmen manage to handle apprenticeships, why can't we?" Is a question you will need to answer and one I'm curious about as well.

  • @user-bj4lp3fr1o
    @user-bj4lp3fr1o ปีที่แล้ว +3

    I like goto’s. Find them easy to follow.

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

    great job

  • @ds-fm9tb
    @ds-fm9tb 3 ปีที่แล้ว +2

    38:03 OOP did not begin with Smalltalk-76 🤔

    • @HughOBrien
      @HughOBrien 3 ปีที่แล้ว

      True. worrydream.com/EarlyHistoryOfSmalltalk/#p4

  • @neunmalelf
    @neunmalelf 2 ปีที่แล้ว

    I agree with 90% of what has been said, except: Massive Machine Learning IS NEW!

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

      By NEW you mean large scale? The basis of all ML and NN is in the 1960s.

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

    I like the romantic vision. but in the real world of business. they do not tolerate any error or "experiment" the want result. fast cheap and painless.

    • @TheOtherBradBird
      @TheOtherBradBird 2 ปีที่แล้ว

      That's a symptom caused by how hyper-centralized our tech markets are, not a true business maxim. Right now though, it might as well make no difference.
      Starlink might change that some though once talent is not tied to location. It will be a culture shock.

  • @ifstatementifstatement2704
    @ifstatementifstatement2704 3 ปีที่แล้ว

    Doesn't the entire programming community hate the goto statement? Lol. It's so handy for exiting nested loops though.

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

      Why would you nest loops when you have goto's? those new fancy shiny structured stuffs will kill software one day.
      (btw, please, don't write gotos, unless you target a 6502 or need to cut holes in cardboard to execute your [shitty] code, there's no reason to, rewrite that stuff, kindly, your colleagues)

    • @ifstatementifstatement2704
      @ifstatementifstatement2704 3 ปีที่แล้ว

      @UCumkOlHv-Kvj8F_H7OqSDsw
      Because in game development you will need to do something like this:
      bool inObjectArea = false;
      for (int objectXCnt = objectInteractableArea.x; objectXCnt < objectInteractableArea.x + objectInteractableArea.w; ++objectXCnt) {
      for (int objectYCnt = objectInteractableArea.y; objectYCnt < objectInteractableArea.y + objectInteractableArea.h; ++objectYCnt) {
      for (int characterXCnt = characterGridArea.x; characterXCnt < characterGridArea.x + characterGridArea.w; ++characterXCnt) {
      for (int characterYCnt = characterGridArea.y; characterYCnt < characterGridArea.y + characterGridArea.h; ++characterYCnt) {
      if (characterXCnt == objectXCnt && characterYCnt == objectYCnt) {
      inObjectArea = true;
      goto exitCheckInteraction;
      }
      }
      }
      }
      }
      exitCheckInteraction:

    • @EmmanuelIstace
      @EmmanuelIstace 3 ปีที่แล้ว

      @@ifstatementifstatement2704 I honestly felt my pulse get too high... :p but, without wanting to "teach" or give advices to someone who didn't called for it, even more coming from a random on ytbe, but I think this would be beneficial, you can totally refactor that to avoid the 4 nested loops and avoid the usage of a go to, even without touching the loops, you don't need a goto, just encapsulate the code in a function and return a bool, passing as arguments the objects you want to check for collision, passing them "through" an interface most of your "game objects" certainly implement that provide 2D coordinates vector. it's kind of less worst. I'm not sure I would encapsulate the collision checking logic within the game object, instinctively I would, but that object would end up doing tons of stuffs, but the game object (or the object that handle his associated shape) might have to be responsible for telling what type of collision checking method is required for him, so maybe encapsulate them in a dedicated classes and inject them uppon construction. I'm probably wrong in the details regarding your particular codebase, but might be worth considering and testing. Also, I might have figured out wrong what you do, but do you need to iterate over each pixels of each borders ? Can't you just take one line and check if it intersect with another ? something like this: www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/
      It may end up being a bit more "verbose", but is more reusable and would cost less cpu time imho, but I didn't tested myself, maybe worth checking ^^
      Also, take a look at clean code, it's old, but still gold, and still loved, worth the time, have a nice day :)
      EDIT: I continued to search 5min, considering the previous wouldn't handle an object contained by another but not colliding on the borders, this article present few solutions you might want to take a look at ^^ www.toptal.com/game/video-game-physics-part-ii-collision-detection-for-solid-objects

    • @ifstatementifstatement2704
      @ifstatementifstatement2704 3 ปีที่แล้ว

      @@EmmanuelIstace I see what you mean. A lot of elements that need to be iterated over are not of the same type and therefore I would need to create several functions each with their own parameters of the data type I need. I don’t want to use the auto data type, who knows what additional code that’s running to get the matching data type defined/declared.
      That function I pasted is iterating over tile coordinates which 8 x 8 pixels. So it has to iterate through 4 x 4 tiles most of the time. Also because the tiles make up sprite images that can have their coordinates changed by more than 1 pixel at a time, depending on the velocity the sprite is moving at, if I make it check only one line it may not detect a collision because it would have moved too far past the collision point.
      But yeah I could refactor that. I started programming in basic, in 1997 when I was 12 so not using goto for me is weird but since I found out it’s considers bad practise I avoid using it. I read online though that using goto to exit nested loops is acceptable. I’m self-taught. Never officially studied programming. But have been doing it for 24 years at home and work.

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

    Software developers should be trained like Jedis and Siths. Let them fight to death -- for certain ideologies. HAR HAR HAR...

    • @Thembisile13
      @Thembisile13 2 ปีที่แล้ว

      Peace is a lie. There is only Passion. Through passion, I gain strength. Through strength, I gain power. - therefore I am Sith!

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

    The only change over the last 20 years is programming has become worse.

  • @WuzzupWhitey
    @WuzzupWhitey 3 ปีที่แล้ว

    People should have personal responsibility for the choices they made, no need to take this responsibility from them and put it on the person, who gave them this choice options, it sounds like a socialism to me.