Software Architecture Principles From 5 Leading Experts

  Рет қаралды 33,519

Continuous Delivery

Continuous Delivery

7 ай бұрын

What is good software design or architecture, are they the same thing or something different? What should we treat as the goals of good design? And how do we adapt those goals to then deal with bigger, more complex systems?
Advice from experts on design may often seem confusing or even sometimes contradictory, but in this episode, Dave Farley, author of best-selling books "Continuous Delivery" and "Modern software engineering" describes some common strands that make these different perspectives complementary rather than competition.
-
⭐ PATREON:
Join the Continuous Delivery community and access extra perks & content! ➡️ 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
📖 Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin) (Robert C. Martin Series) ➡️ amzn.to/3aLXGad
📖 Domain Driven Design, by Eric Evans ➡️ amzn.to/2WXJ94m
📖 C4 Model - Simon Brown ➡️ c4model.com/
📖 "Extreme Programming Explained: Embrace Change", Kent Beck ➡️ amzn.to/3K5fhg6
📖 Implementation Patterns (Addison-Wesley Signature Series (Beck)), Kent Beck amzn.to/3K4VWvz
📖 Working Effectively with Legacy Code, Michael Feathers ➡️ amzn.to/3hP0F4z
📖 The Software Architect’s Elevator, Gregor Hohpe ➡️ amzn.to/3IEMf5o
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
Tricentis is an AI-powered platform helping you to deliver digital innovation faster and with less risk by providing a fundamentally better approach to test automation. Discover the power of continuous testing with Tricentis. ➡️ bit.ly/TricentisCD
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
#softwareengineer #software #developer #softwarearchitecture

Пікірлер: 33
@SSJ0016
@SSJ0016 7 ай бұрын
ChatGPT can read your shirt with zero issue. I screen snipped it, and had the following interaction: >> You >> Uploaded image >> what does this say >> >> ChatGPT >> The text on the shirt is a leetspeak representation of the quote "The measure of intelligence is the ability to change," which is often attributed to Albert Einstein. In leetspeak, letters are often replaced by numbers or other characters that resemble the letters. Here's the text translated into standard English letters: >> >> THE MEASURE OF INTELLIGENCE IS THE ABILITY TO CHANGE. >> The text at the bottom appears to be "ALBERT EINSTEIN" represented in a similar leetspeak style. RIP
@nicholasrobins2835
@nicholasrobins2835 7 ай бұрын
I have been grappling with the idea of readability vs consistency vs optimized. But to bring this altogether with, must be “easy to change”, mind blow. So simple, but so true. My design approach has forever changed.
@bernardobuffa2391
@bernardobuffa2391 7 ай бұрын
kind of own recipe... every time I begin working on a US, I spend the most reasonable amount of time NOT WRITING CODE, resisting the temptation of writing, but reading well the requirements, looking how this must fit into the existing software, and designing the solution. I try to figure out, without writing a single line of code, all the data circuits, the layers, classes and so on. Most of the time, the whole meditation exercise goes less than 10% of the time estimated. This gives you the opportunity to refine this design and avoid programming vices, since you have nothing materialized, but in your gray tissue only.
@PavelHenkin
@PavelHenkin 7 ай бұрын
One step that really does good things for me is to, even before the design, define the problem using the user-centric verification language
@kitastro
@kitastro 7 ай бұрын
Readable in the sense that I can read it... Without getting a headache
@sneibarg
@sneibarg 7 ай бұрын
When I say aim for readability, I mean both as text, like it were English, and I also mean "does that block of code really need to be a block or can we turn it into a line?" Recently I added a comment to a pull request and said I would move that block to a method. The response was "but it's only called once". My response was "I mean readability in the sense that a new person learning this specific class file will come to this block of code with the intention to focus on a subsequent section of that block and get distracted by it." Even if you're only executing the method once per transaction, a block of code that adds cognitive complexity should become a line of code.
@bobbycrosby9765
@bobbycrosby9765 7 ай бұрын
If you remove a block from its usage context and put it somewhere else, when you need to connect multiples of these together, it can make the code less readable, not more. It's tradeoffs all the way down. I prefer commented code blocks in somewhat larger methods - I consider it the best of both worlds. If I don't need the details of what it does I can jump to the next block of code. If I do then it's right there. When I need to fully understand what it's doing, it makes it a lot easier. I think a killer IDE feature would be to setup a view that lets you inline-expand method calls. This way you could still easily get the full context with many small methods.
@sneibarg
@sneibarg 7 ай бұрын
@@bobbycrosby9765 A block of code that populates a list to be passed downstream is not that kind of example.
@ContinuousDelivery
@ContinuousDelivery 7 ай бұрын
yes, naming blocks of code is a significant tool to help readability
@ContinuousDelivery
@ContinuousDelivery 7 ай бұрын
I have heard that argument before, but top be honest, I don't get it. The logical conclusion is that functions obscure meaning, and all code in-line is the ideal, that makes no sense to me. Functions give us the chance to assign meaning to otherwise arbitrary blocks of code. I don't care how many times a block of code is called, if I can describe what its is meant to do with a name I prefer to do so.
@aha6593
@aha6593 20 күн бұрын
I speak about medium sized projects with different skill levels and roles. The software design is a key part to get the project done. A good design is able to show the team members how to produce good software.
@techforserious60
@techforserious60 7 ай бұрын
I think a lot of time is spent on trying to figure out the ultimate design principles, and not enough time is spent on the human element of coding If you have apathetic developers in survival mode who are resentful towards their company and their boss, or who are not supported by a proper set of motivations, it doesn't matter what design/architecture principles you pick, you aren't going to end up with a masterpiece
@krss6256
@krss6256 7 ай бұрын
Thank you! Another really great video. What do you think about 'convention'? As the convention that the team may be already familiar with - used in this or previous projects - and obviously, if it's not a terribly bad designed convention. Following conventions in my opinion also plays extremely important part in making the code readable at the whole system scale. The worst thing is if every subsystem of the system is using different design patterns - even if correctly applied - but to a concepts for which there is already a well design convention across the team.
@islandparadise
@islandparadise 7 ай бұрын
Love how the choice of tee matches the video topic
@giorgiotesti9365
@giorgiotesti9365 7 ай бұрын
Nice guidelines video, whats means/express the "Cohesive" and "Good separation of concern" parameters at min. 15?
@srinivaschillara4023
@srinivaschillara4023 7 ай бұрын
the essay by Jack Reeves should really have been provided as a reference. good coherent summary overview of design - as a noun - in any case.
@pelle4971
@pelle4971 7 ай бұрын
Do you believe there's a universal metric or principle that can be applied to evaluate the 'elegance' of a software design, or is elegance always context-dependent? How might we reconcile differing opinions on what constitutes an 'elegant' design in a collaborative environment?
@jangohemmes352
@jangohemmes352 7 ай бұрын
I think I'd vote for 'Cost of change' to be that metric. Software that's easy to change is equivalent to well-designed software for me
@bernardobuffa2391
@bernardobuffa2391 7 ай бұрын
I think it was Bob Martin who once said that 'good software must be boring to read' in the sense that there is no trickery, no obscure or tweaked meaning in it. This and SLA (Single Level of Abstraction) is a must for me. Not sure if that qualifies as 'elegant' but for the minimum 'goodness' of the design I think is ok.
@khiariyoussef3226
@khiariyoussef3226 7 ай бұрын
exactly, because otherwise why would we need a good software design ? for the looks ?@@jangohemmes352
@RFalhar
@RFalhar 7 ай бұрын
Only metric I can think of is change cycle time. How long does it take, in aggregate, to go from starting to make a change to that change being used by users. But it is quite abstract and far away from actual code and technologies. And involves much more than that.
@ono48
@ono48 7 ай бұрын
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
@caitlinmclaren2695
@caitlinmclaren2695 7 ай бұрын
I expected clickbait from anyone except Dave Farley.
@maddokmike5760
@maddokmike5760 7 ай бұрын
i lost focus on first watch, because i was trying to decipher that dam t-shirt :D
@Hofer2304
@Hofer2304 7 ай бұрын
Readable for whom? For another expert programmer, another domain expert or for any person who wants to know what this program does?
@osten_petersson
@osten_petersson 7 ай бұрын
In my first decade as a software developer I thought the problem was that it were too few poets and way too many engineers in software development, nowadays I think the main problem is the textfile itself, maybe we should have some c4 capabilities in the daw - forcing the developer to think about modules and relationships before he even can write his first if-else
@osten_petersson
@osten_petersson 7 ай бұрын
not that the poets and squareheads problem is solved in any way - just the lesser evil
@thefattysplace
@thefattysplace 7 ай бұрын
I'm not sure what i took away from this video, the t shirt is cool though.
@thevikas5743
@thevikas5743 7 ай бұрын
If you have favs of text or IDE, might as well settle the decades old debate of tab or spaces. For some fun sake. Haha
@ForgottenKnight1
@ForgottenKnight1 3 ай бұрын
7:50 - Method split is not getting enough love even today. Too bad, because it's one of the best refactorings to improve readability, clarity and add more context and meaning to your code. Instead, I see engineers prefer to leave multi-line comments instead of refactoring their code...
@grappesio
@grappesio 7 ай бұрын
first view lol
The Difference Between Developers & Software Engineers
13:50
Continuous Delivery
Рет қаралды 74 М.
5 Steps To Fast & Reliable Software Development
15:49
Continuous Delivery
Рет қаралды 15 М.
Жайдарман | Туған күн 2024 | Алматы
2:22:55
Jaidarman OFFICIAL / JCI
Рет қаралды 1,2 МЛН
Can You Draw A PERFECTLY Dotted Line?
00:55
Stokes Twins
Рет қаралды 69 МЛН
3 wheeler new bike fitting
00:19
Ruhul Shorts
Рет қаралды 51 МЛН
Climbing to 18M Subscribers 🎉
00:32
Matt Larose
Рет қаралды 37 МЛН
Top 5 Most Used Architecture Patterns
5:53
ByteByteGo
Рет қаралды 222 М.
How to Become a Great Software Architect • Eberhard Wolff • GOTO 2019
43:09
Where Agile Gets It Wrong
19:22
Continuous Delivery
Рет қаралды 30 М.
Modular Monoliths Are The New Microservices
31:08
TaleLearnCode
Рет қаралды 23 М.
How To Avoid TOXIC Team Culture In Software Development
17:28
Continuous Delivery
Рет қаралды 25 М.
Test Driven DESIGN - Step by Step
25:46
Continuous Delivery
Рет қаралды 19 М.
"Non-Functional Requirements" Are STUPID
15:10
Continuous Delivery
Рет қаралды 42 М.
Greg Young - The Art of Destroying Software
42:31
tretton37
Рет қаралды 8 М.
Software Architecture: The Hard Parts - Neal Ford
57:05
Developer Summit
Рет қаралды 3,9 М.
Why Hasn't TDD Taken Over The World?
15:38
Continuous Delivery
Рет қаралды 46 М.
iOS 18 vs Samsung, Xiaomi,Tecno, Android
0:54
AndroHack
Рет қаралды 93 М.
ИГРОВОВЫЙ НОУТ ASUS ЗА 57 тысяч
25:33
Ремонтяш
Рет қаралды 223 М.
В России ускорили интернет в 1000 раз
0:18
Короче, новости
Рет қаралды 7 М.
Ждёшь обновление IOS 18? #ios #ios18 #айоэс #apple #iphone #айфон
0:57
💅🏻Айфон vs Андроид🤮
0:20
Бутылочка
Рет қаралды 738 М.
Игровой Комп с Авито за 4500р
1:00
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 1 МЛН