Тёмный

Coupling Is The Biggest Challenge In Software Engineering 

Continuous Delivery
Подписаться 202 тыс.
Просмотров 20 тыс.
50% 1

Coupling is more complicated than it sounds, in software many people would argue that loosely coupled systems are better, but most software doesn’t look like that.
Most software tends to err on the side of being too strongly coupled, in the sense that a change in one place forces changes in another, this is a huge problem in software development and software engineering that impacts everything from how we organise teams and scale development to how we design systems and how we write individual lines of code. Yet, we don’t often think about coupling explicitly. This is beyond the specifics of Java, Python or other programming languages, but firmly in the realms of the broader topics of software design.
In this episode Dave Farley author of best-selling books on software “Continuous Delivery” and “Modern Software Engineering” explores the the ideas, impact and application of coupling to software, and to organisational design. He explains with some examples "the Nygard Model of Coupling" which identifies 5 different types of coupling that we need to consider to build great software.
-
FREE 'How To Evolve Your Software Architecture' Guide:
How to work in ways that keep stuff easy to change which gives you the freedom to make mistakes and experiment and how to work in small steps that allow you to determine their fit for your present understanding of the problem... continuously. All are explained in this FREE compact guide. Download HERE ➡️ www.subscribepage.com/evolve-...
-
⭐ PATREON:
Join the Continuous Delivery community and access extra perks & content! ➡️ bit.ly/ContinuousDeliveryPatreon
-
🗣️ THE ENGINEERING ROOM PODCAST:
Apple - apple.co/43s2e0h
Spotify - spoti.fi/3VqZVIV
Amazon - amzn.to/43nkkRl
Audible - bit.ly/TERaudible
-
👕 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/3Uby9iA
🚨 DON'T FORGET TO USE THIS DISCOUNT CODE: ContinuousDelivery
-
🔗 LINKS:
“Michael Nygards Presentation - Uncoupling” ➡️ • Uncoupling • Michael N...
-
BOOKS:
📖 "Release It!", Michael Nygard ➡️ amzn.to/38zrINu
📖 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
NOTE: If you click on one of the Amazon Affiliate links and buy the book, Continuous Delivery Ltd. will get a small fee for the recommendation with NO increase in cost to you.
-
CHANNEL SPONSORS:
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
TransFICC provides low-latency connectivity, automated trading workflows and e-trading systems for Fixed Income and Derivatives. TransFICC resolves the issue of market fragmentation by providing banks and asset managers with a unified low-latency, robust and scalable API, which provides connectivity to multiple trading venues while supporting numerous complex workflows across asset classes such as Rates and Credit Bonds, Repos, Mortgage-Backed Securities and Interest Rate Swaps ➡️ transficc.com
Semaphore is a CI/CD platform that allows you to confidently and quickly ship quality code. Trusted by leading global engineering teams at Confluent, BetterUp, and Indeed, Semaphore sets new benchmarks in technological productivity and excellence. Find out more ➡️ bit.ly/CDSemaphore
#softwareengineer #developer

Наука

Опубликовано:

 

14 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 21   
@ContinuousDelivery
@ContinuousDelivery 16 дней назад
FREE 'How To Evolve Your Software Architecture' Guide: How to work in ways that keep stuff easy to change which gives you the freedom to make mistakes and experiment and how to work in small steps that allow you to determine their fit for your present understanding of the problem... continuously. All explained in this FREE compact guide. Download HERE ➡ www.subscribepage.com/evolve-your-architecture
@yurisich
@yurisich 14 дней назад
This is good advice. Especially where the emphasis is on identifying areas where tight coupling is called for. I've seen projects fall to excessive cross talk and tragedy of the commons due to an irrational fear of any coupling whatsoever. The good part is that tight coupling is typically obvious compared to the much more subtle work of maintaining proper loose coupling. Loose coupling requires good discipline, and the ability to wear many hats within a system in order to understand zones of ownership and concern, and formalizing hand off between systems and domains. Fear of coupling at the start inevitably leads to shortcuts later on, with do-everything systems trouncing service-level tables in databases, internal members or state, or otherwise deep intertwined logic from a lack of formal exchange mechanisms that selective tight coupling helps illuminate.
@_nom_
@_nom_ 10 дней назад
I create modules within each main system object. This permits me to await for another module to load, and all relevant code and public methods are defined here. Since then I've been able to rapidly develop large systems. I've been programming for 19 years and it's completely revolutionised my development.
@mogenshansen7210
@mogenshansen7210 16 дней назад
Thank you so much for this clear communication This is nothing short of brillant, extremely important and widely under appriciated
@Mark73
@Mark73 16 дней назад
I'm glad you're doing this video. I've been a programmer for almost 25 years and I just heard about Coupling and Cohesion a few months ago. It's so much better and simpler than S.O.L.I.D. principles that everyone raves about.
@PavelHenkin
@PavelHenkin 16 дней назад
They kinda go hand in hand, imo
@scouter84
@scouter84 16 дней назад
The SOLID principles are aids towards loose coupling.
@marcotroster8247
@marcotroster8247 14 дней назад
You've got to do a video on entropy next time. I'd like to hear your take on cohesion and proper use of words from a DDD standpoint. Words and language skills are kind of underestimated in software. They're really powerful in my opinion.
@ErazerPT
@ErazerPT 16 дней назад
Great vid. Your REST API example serves as a sort of materialization of design by contract, which is very OK in my book. It also falls into Allan Kay's "message passing" view which, again, is very OK as far as I'm concerned. As far as the contract and the message is properly documented both sides can go on their merry way and do whatever they have to do on their side. And you can extend it without breaking it by simply adding more endpoints (or versions of). And if you think of it as simply a "boundary between components", you can extend the concept to anything. IMHO, this is where "classic OOP" does a great disservice by not saying that separating data from code is a GoodThingTM. FlowerData is all you can know about Flower. Flower receives FlowerData it can operate on (state). But both are distinct entities. DTO's are an "ashamed acknowledgement" of the fact, as all data can exist without behavior but not the other way around.
@HelloThere-xs8ss
@HelloThere-xs8ss 15 дней назад
Very informative 🧠
@jimwinchester339
@jimwinchester339 16 дней назад
Did you ever read the classic Yourdon & Constantine's "Software Engineering"? He covers this issue, making it a point to avoid at all costs "pathological coupling".
@ContinuousDelivery
@ContinuousDelivery 15 дней назад
I didn't, but I do know that Yourdon & Constantine coined many of the terms that we now use to describe software, "Coupling" as an idea to describe software was invented by Constantine I believe.
@IronCandyNotes
@IronCandyNotes 15 дней назад
De-Coupling, Strangler-Pattern, Microservice... is this just innuendo of some smart ass or do we have architectural patterns in social relationships or should I stop projecting?
@norbertabone9157
@norbertabone9157 15 дней назад
Yes, they are applicable in social relationships .
@marcotroster8247
@marcotroster8247 14 дней назад
Haha sure. Amdahl's law for parallel computation costs applies to anything you wanna process in parallel. That's why the team size typically doesn't scale well.
@elf-pavlik
@elf-pavlik 15 дней назад
3:35 Who doesn't love stock videos, let's take a look at what is happening around 7th line from the bottom of the screen 👀😆
@mulllhausen
@mulllhausen 16 дней назад
I came here to hear the words dependency injection/inversion. Let's see if I get my wish...
@mulllhausen
@mulllhausen 16 дней назад
Don't think I did. But it was a great video still
@ulrichborchers5632
@ulrichborchers5632 15 дней назад
At least APIs were mentioned 😀IOC is also an extremely useful principle when it comes to coding, absolutely ... while the video is a bit more "abstract" in that it points out at how many different levels coupling really exists and that it is not an anti pattern by itself. I found it very useful to raise the awareness of that. Just today I was part of a tech discussion where not everyone agreed on using some more in-depth features of a database technology for solving a certain type of problem because there was an assumption that the storage backend might change in the future (development coupling), while this is very unlikely. In that project there should be a REST service which will use that database technology and will of course have to be tightly coupled to it, using its features from "behind" the API. The technology comes with built-in features which are provided to deal with certain types of problems which naturally come with using a database. Sometimes tight coupling is a good thing. To avoid coupling when actually useful can create worse solutions or none at all. Sorry, included all of that while typing 😅 Inversion of Control, yes, love it too!
@StanislavBashkirtsev
@StanislavBashkirtsev 14 дней назад
Actually if systems are connected using a database, there's a simple way to decouple them - using views. If a dependency changes its schema, you can recreate the view with a new query underneath.
@black-snow
@black-snow 15 дней назад
It's FTSE all the way down
Далее
Software Architecture Tips I WISH I Knew Sooner
18:04
Я Не Спал 100 Часов!
00:39
Просмотров 30 тыс.
The Biggest Problem With UI
15:39
Просмотров 57 тыс.
This Is Why Managers Don't Trust Programmers...
28:04
Просмотров 162 тыс.
Why I Quit the Scrum Alliance
7:58
Просмотров 4,3 тыс.
Coupling and Cohesion Explained
11:43
Просмотров 2,4 тыс.
Mastering Your Microservices With Observability
15:19
Top 7 Ways to 10x Your API Performance
6:05
Просмотров 304 тыс.
Where Agile Gets It Wrong
19:22
Просмотров 29 тыс.
Advice from the Top 1% of Software Engineers
10:21
Просмотров 3,2 млн
Google Pixel 8 Pro #apple #googlepixel #iphone
0:17
Просмотров 14 тыс.
Куда пропал 3D Touch? #apple #iphone
0:51
Просмотров 608 тыс.