Avoid This One Thing That Makes Code Hard to Change

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ก.ย. 2024
  • In this video, David Scott Bernstein dives deep into one of the most fundamental principles of software design: the separation of concerns. By separating business rules from implementation details, developers can create flexible, maintainable, and scalable software systems. David emphasizes the importance of focusing on clean domain models and how they serve as a blueprint for both small and large-scale projects. He also shares insights on how agile practices and thoughtful design lead to more adaptable, long-lasting software. Whether you’re an aspiring developer or a seasoned professional, this video will change how you approach software design.
    *Key Topics:*
    - Why the separation of concerns is critical to good design.
    - How domain models can simplify complex business processes.
    - The importance of clean, testable, and extensible code.
    - How agile development fosters adaptable and maintainable software.
    Transform Your Software Development with My Agile Training and Coaching
    Ready to take your software development skills to the next level? At To Be Agile, I offer comprehensive courses and personalized coaching to help you become an expert in Agile technical practices, the ones that make the biggest difference. Whether you're a beginner or an experienced developer, my training programs will guide you through the principles that lead to cleaner, more maintainable software. And my coaching programs offer in-depth skills in Extreme Programming, design patterns, and refactoring. Learn more and start your journey here: ToBeAgile.com.
    Explore the Power of AI with The Passionate Programmer
    Interested in AI and how tools like ChatGPT can boost your development workflow? Dive into the latest insights on AI and Large-Language Models with my resources at The Passionate Programmer. Discover more: passprog.com.
    Expand Your Knowledge with My Books- “Beyond Legacy Code: Nine Practices to Extend the Life and Value of Your Software” Learn the essential practices to extend the life of your software and improve code quality: BeyondLegacyCo...
    - “Prompt Engineering for Everyone: A Comprehensive Guide to Unlock the Potential of ChatGPT and AI Language Models.” Get actionable techniques to unlock the full potential of AI in your development process. Learn more at passprog.com/p...
    Join the Conversation
    Do you have questions, suggestions, or thoughts? Please share them in the comments below-I’d love to hear from you!
    #ThePassionateProgrammer #DavidScottBernstein #SoftwareDevelopment #AIPromptEngineering

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

  • @johngc2010
    @johngc2010 3 วันที่ผ่านมา +6

    Hi David, very interesting topic, you're truly passionate!
    It would be nice if you could give some examples to ilustrate your points better; what do you think?

    • @ThePassionateProgrammer
      @ThePassionateProgrammer  3 วันที่ผ่านมา +6

      Yes, I’ll work on a video with some code examples to illustrate my points but I also don’t want to exclude non-coders with videos that are too technical. I’m thinking of creating a separate playlist for advanced developers that includes code examples. Does that sound good?

    • @joaquinnunezgarcia9279
      @joaquinnunezgarcia9279 วันที่ผ่านมา +1

      Really like this idea

    • @ThePassionateProgrammer
      @ThePassionateProgrammer  วันที่ผ่านมา

      @joaquinnunezgarcia9279 Thank you!

    • @TWPO
      @TWPO วันที่ผ่านมา

      @@ThePassionateProgrammer Great idea. You have a lot of wisdom clearly, and I love that you are willing to pass some of it on to others.

  • @tyranmcgrath6871
    @tyranmcgrath6871 วันที่ผ่านมา +2

    I'm just starting out. Trying to learn good habits of documentation and type-hinting, as I use Python.
    Also, learning how to create modular, reusable code instead of case-specific code. Haven't learned unit tests, though. I really should xD
    For example, I had an Inventory system (I learn via RPG tasks) that I realized was just a container for data. However, I made Inventory too specific to use outside of its intended area.
    Subscribed! I enjoyed your talk.

    • @ThePassionateProgrammer
      @ThePassionateProgrammer  17 ชั่วโมงที่ผ่านมา +1

      Welcome. I hope to share wisdom on this channel that is valuable to both juniors and seniors. Stay tuned for more!

    • @tyranmcgrath6871
      @tyranmcgrath6871 4 ชั่วโมงที่ผ่านมา

      @@ThePassionateProgrammer Fully! Your concepts resonate at the lower level I operate in. "Making reusable blocks"

  • @deltapi8859
    @deltapi8859 วันที่ผ่านมา +1

    "agile I think means agile software" I think you are right here. It would also be much more rational to say "look our software is going to need maintenance and change and it's not that one time produced product". But with management probably the time wasn't right and money givers simply had different ideas so the "work process" has been defined that way as a first step to establish it. And now we have "Scrum". But I think the idea and the rational is 100% correct. It means agile software.

    • @hopelessdecoy
      @hopelessdecoy 23 ชั่วโมงที่ผ่านมา

      I think it is kinda funny that software quality has went down since agile methods. I think the mindset has shifted from releasing as "good of product as possible in the time given" to "release it fast, release it first, patch it next sprint".
      Just look at games, old games had bugs but new games sometimes release and they don't even run sometimes. It is like there is no QA now.

    • @ThePassionateProgrammer
      @ThePassionateProgrammer  17 ชั่วโมงที่ผ่านมา

      Thank you. It is really a subtle (but I think an important) point. And I think that most of the original authors of the Agile Manifesto would agree (I know most of them personally). I think that for them agility means agility in software. This involves technical practices to write code that can be changed even late in development when we know more and can leverage that knowledge. For me, this is where I find the most benefit in Agile as a software developer.

    • @ThePassionateProgrammer
      @ThePassionateProgrammer  17 ชั่วโมงที่ผ่านมา

      I (and many others) have refuted the recent report that decrees Agile as a failure. The data is actually not in alignment with nearly every other study done on Agile. I’m not saying that Agile is THE solution. It has big challenges and I see it abused and distored all the time by managers but when done well it can be a step in the right direction for software development. I see many teams achieving a lot of success by adopting the right technical practices. Take it from a guy who did Waterfall for 15 years before Agile existed-it wasn’t fun!

  • @bernhardkrickl5197
    @bernhardkrickl5197 วันที่ผ่านมา

    Reminds me of Dave Farley's motto "Good software means software that is easy to change".

    • @ThePassionateProgrammer
      @ThePassionateProgrammer  17 ชั่วโมงที่ผ่านมา

      Dave Farly is my hero! His ideas are brilliant! I highly recommend his TH-cam Channel, @ContinuousDelivery. The ‘easy to change’ theme is recurrent and something we come upon all the time. I try to be good to my future self by doing what Kent Beck says, “Make the change easy. And then make the easy change.” It’s a philosophy that has served me (and my clients) well for many years!