Тёмный

From Legacy Code To STATE OF THE ART DEVELOPMENT 

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

What is the reality of moving from stubborn legacy code to start of the art modern software engineering processes like Continuous Delivery? You can't always start from the ideal place, and shifting to something like CD may seem daunting and not worth the time.
So, how do you take the steps towards continuous delivery, from even the most difficult code bases?
-----------------------------------------------------------------------------------
⭐ PATREON:
Join the Continuous Delivery community and access extra perks & content!
JOIN HERE ➡️ bit.ly/ContinuousDeliveryPatreon
-------------------------------------------------------------------------------------
🔗 LINKS
📧 Join the CD Mail List here ➡️ www.subscribepage.com/cd-mail...
FREE REFACTORING TUTORIAL: Learn Approval Testing, Refactoring and Decluttering FOR FREE and apply them to some very nasty code. You can work along with Dave to learn how to make the bad code testable. ➡️ courses.cd.training/courses/r...
-------------------------------------------------------------------------------------
👕 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
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
Roost, An Ephemeral DevOps Platform, automates your DevOps pipeline. It creates ephemeral DevOps environments on-demand or based on pull requests. Roost reduces DevOps complexities and shortens release cycles with fewer engineers. ➡️ bit.ly/CD2Roost
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

Наука

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

 

21 мар 2023

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 93   
@ContinuousDelivery
@ContinuousDelivery Год назад
FREE REFACTORING TUTORIAL: Learn Approval Testing, Refactoring and Decluttering FOR FREE and apply them to some very nasty code. You can work along with Dave to learn how to make the bad code testable ➡ courses.cd.training/courses/refactoring-tutorial
@LuisMuniz
@LuisMuniz Год назад
Just a quick rectification. Galileo was not executed. He was placed under house arrest. Giordano Bruno was executed.
@pepineros4681
@pepineros4681 Год назад
Yes, but… We don’t talk about Bru-no-no-no-no
@ContinuousDelivery
@ContinuousDelivery Год назад
Yes, sorry for the mistake
@NickDanger3
@NickDanger3 Год назад
And his arrest was not for challenging people’s worldview: it was for violating a direct order from the church to teach heliocentrism as a theory, not as a fact
@jonathansaindon788
@jonathansaindon788 Год назад
@@pepineros4681 You definitely have A Disney+ subscription 😂
@tongobong1
@tongobong1 8 месяцев назад
If I were Pope I would make Giordano Bruno a saint.
@Immudzen
@Immudzen Год назад
I would love seeing an episode on approval testing. I have been working on a system that was in a pretty bad state and we used a combination of approval testing and testing for some of the modules we could easily isolate as a first pass of tests. We then started refactoring the code but all the new code had tests written to specifically cover it. As we cleaned up the system the test coverage go better and the defect rates dropped. We also follow a boy scout type principle of leaving the code in a better state any time you touch it. So if you are working in a module and you see some bad code clean up a function or two, add some tests, etc. as part of your normal work. We went from merging about once per year into the master branch with numerous bugs to being able to do it several times per day and no failures in many months. Most branches now are very short lived before they merge back in. The situation is still not ideal with a CI/CD standpoint but it sure is a LOT better. I used many things I have learned from your channel in guiding this process.
@law1213
@law1213 Год назад
Can I second the request for a video on approval testing! Excellent work thanks.
@nickbarton3191
@nickbarton3191 Год назад
Never heard the term but that is exactly what we've been doing on our legacy ball of mud. I always felt a bit guilty doing it as it's not unit testing. I'm reassured that it's a recognised approach. Yes, a video about this would be helpful.
@esra_erimez
@esra_erimez Год назад
"stuck in a rut and not realizing what's possible with different thinking" never have truer words been spoken. There are *some other* RU-vidrs that should take notice.
@shilohaendler6360
@shilohaendler6360 Год назад
Would be very happy to watch a video on approval tests. We have started to adopt that technique and it is very interesting me how on or off track we are 🙂
@jimhumelsine9187
@jimhumelsine9187 Год назад
I deleted my original reply, because I realized I was confusing approval with acceptance tests. I have always used the term characterization tests, from Michael Feathers' book. I posted my first reply, before I got to Dave's portion of this video where he said that approval tests are the same as characterization tests. Most of my tests are characterization tests, since I work in a legacy code base. These tests are a bit nasty because legacy code is obdurate to being tested. My characterization tests are more implementation dependent than behavior dependent, because I don't know what the behavior should be. I view BDD/TDD based unit tests as specification tests. They declare behavior first and then the code implements it. Characterization tests help reveal and define existing behavior. They provide a safe scaffolding for refactoring, from which we may be able to write true BDD/TDD tests. I think of BDD/TDD based tests as being mostly permanent tests. Whereas, I view characterization tests as being temporary until the legacy code can be properly refactored. However, their lifecycle can still be months or years until they can be completely dismantled.
@ContinuousDelivery
@ContinuousDelivery Год назад
Jim, yes I agree with your characterisation of both - Exactly! Acceptance Tests are the real long-term value, they defend against functional regression, as well as guide the development of new features. Characterisation/Approval tests are a more tactical tool, and are more coupled to implementation detail, which means that they don't work as long-term defence when you need to change the outputs from the system. But they are a great tool to support genuine refactoring, when you are in the state that you describe, where you don't really know all that the system does. I missed this nuance for a while, but now I see them as a fantastic tool, particularly at the start of the process of making your code more tractable.
@DagarCoH
@DagarCoH Год назад
Very much yes to an episode about approval tests! ❤
@esra_erimez
@esra_erimez Год назад
This is one of your most significantly important videos to date. Well done and thank you.
@MarkUKInsects
@MarkUKInsects Год назад
I just love that t-shirt!
@shashank.c
@shashank.c Год назад
I remember watching your video on Approval testing, and definitely would like to see more on this topic. Please do make a video on that. Thanks for sharing your valuable pieces of wisdom.
@jaimeduncan6167
@jaimeduncan6167 9 месяцев назад
This channel is highly relevant and useful.
@travisneal61
@travisneal61 Год назад
Great topic! Looking forward to a more extensive approval testing video.
@sirskaro3581
@sirskaro3581 Год назад
I would like to see a video on approval tests! I'd also love to see a video on your take of consumer-driven vs provider-driven contract tests. Particularly with how it pertains to CD.
@danalight5081
@danalight5081 Год назад
I often use the Broken Windows theory to describe the mistreatment of legacy systems and systems under development. One neglect seems to beget another. Love the shirt by the way!
@kevinthoriya691
@kevinthoriya691 Год назад
yes please, I Would be very happy to watch a video on approval tests.
@danielcilli9124
@danielcilli9124 Год назад
Love this video! Would definitely also love to see an Approval Testing video!
@MaximilianSchafzahl
@MaximilianSchafzahl Год назад
thanks, best summary of this topic I've ever seen :)
@ChadEdge
@ChadEdge Год назад
Yes please on "Approval Testing" deeper dive. I've felt that approval testing is a _great_ way to get green (not comfortable with writing unit/functional tests on their own) developers moving on test plans that feel more familiar.
@SteenLarsen
@SteenLarsen Год назад
Thanks for another great video! I would like to hear more about approval testing. I guess this must involve how the behaviour of the existing and the changed system is recorded and compared. Thanks in advance!!
@Personal-M.I.S.
@Personal-M.I.S. Год назад
Wow! A lot of folks caught the Galileo error. Nice to know people out there are keen on historical fact =)
@nicopostigo123
@nicopostigo123 Год назад
Thanks for the video, great info!
@thezar79
@thezar79 Год назад
As always, valuable information. I'm interested in the approval testing, would be great to cover this topic in a separate episode.
@DavidCanatsey
@DavidCanatsey Год назад
Yes, please on Approval Testing!
@ralftaraschewski6094
@ralftaraschewski6094 Год назад
Thank you for another great summary. I really like the way you simplify a complex topic. It would bei great, if you speak the next time about how to transform a company to use CI/CD.
@remc0r3mc05
@remc0r3mc05 Год назад
Looking forward to an episode on approval testing! :)
@ZeDlinG67
@ZeDlinG67 Год назад
Yes, please do the approval test video too :)
@dimitrisservis365
@dimitrisservis365 Год назад
I understand your point about retrofitting unit testing, however my experience is that you should not take it out of the equation for two reasons. One is that it complements well approval testing and can be applied to isolated areas. Approval tests eventually get more refined into unit tests. The process is important as legacy code tends to have layers over layers of highly specialized and sophisticated functionality. Unit testing helps to reverse engineer especially some fundamental concepts like underlying math and geometry libraries. The second reason is that legacy code more often than not comes with legacy teams. It is very hard to introduce TDD due to resistance ("our software cannot be tested automatically", "it's a waste of time and an overhead"). Having them introduce some level of unit testing helps the team's understanding and appreciation of the concept making it much easier to later on introduce TDD. There is always one or two that resist, and it takes serious amounts of time to overcome this resistance.
@bastianbaggins8700
@bastianbaggins8700 Год назад
+1 for the episode on approval testing
@vanteole9427
@vanteole9427 Год назад
Do an introduction on approval testing please! Love you!
@DavidMcGill2015
@DavidMcGill2015 Год назад
Thanks!
@adamkimberley2575
@adamkimberley2575 Год назад
Would love to see a video on approval testing. Thanks!
@scvnthorpe__
@scvnthorpe__ Год назад
10/10 shirt
@edgeeffect
@edgeeffect Год назад
10X rockstar ninja shirt. ;)
Год назад
Approval testing looks interesting, but hard to achieve reliably. A video on that would be great. 😉
@jhonasttan
@jhonasttan Год назад
Ty Dave! Please show us more on approval testing
@human_devops
@human_devops Год назад
Of course legacy is of value! You just have to give it some love!
@malteplath
@malteplath Год назад
Love the T-shirt!
@Raaampage
@Raaampage Год назад
Yes please do a topic on approval testing :)
@Kevinf63
@Kevinf63 Год назад
Didn't know these donations left comments, woops! Nothing to comment on just yet for this video, but I just wanted to say thanks for all the content, between your book and videos I've been slowly trickling in better practices across our teams. Although its hard finding the time between the management, admin, engineering, development and deadlines to fit in time for optimizing for CD and the culture shift that needs to happen, I can see the change taking effect in small ways, and I'd like to think the small things add up over time :)
@ContinuousDelivery
@ContinuousDelivery 9 месяцев назад
Thank you, and good luck on your journey.
@rosshoyt2030
@rosshoyt2030 Год назад
Video on approval testing would be great!
@YonoZekenZoid
@YonoZekenZoid Год назад
letting you know in the comments would like to see video on approval tests :D
@cchinaka
@cchinaka Год назад
I'll very much like to see approval tests. Thank you!
@dcstingray04
@dcstingray04 Год назад
Would like to see a video with your views on approval testing
@thekavh
@thekavh Год назад
Does anyone know the name of the FAA program mentioned ?
@adamkimberley2575
@adamkimberley2575 Год назад
We've just inherited a legacy system (a huge impenetrable financial model) which has thousands of 'regression' tests. The problem is that these regressions take an overnight run to execute (so not a great feedback cycle) and also nobody really knows what they're supposed to be testing (they are not categorised and have very unhelpful names), so if a set of them break, it's very difficult to say why. Do you have any advice on how to deal with this? My gut feeling is to essentially just follow the advice you give in this video of slowly building up characterisation tests for the parts of the code we're refactoring (as well as more typical TDD tests for new parts of the code) and slowly remove the reliance on these regressions over time. The cultural/organizational problem we have is that these regressions give the QAs and wider business a comfort blanket that they really do not want to let go of, which would make it really difficult to move towards a continuous delivery model given the full pipeline takes ~8 hours.
@uome2k7
@uome2k7 Год назад
you can treat the legacy tests as legacy code as well in terms of directing your refactoring effort. If the tests arent helpful, replace them with ones that are.
@SeamusMcMichael
@SeamusMcMichael Год назад
I love the t-shirt
@attilamolnar3791
@attilamolnar3791 Год назад
In the forth an important thing is to make deployment automated. Even if you have to write the automation yourself! I have seen many systems having problems because lot of people implemented stuff on their own way. I don't say that it's always a problem but I think it is very important to try to do it using some off the self (trustworthy) solution! The problem of having lot of self written automative tools is that it can quickly become similar to legacy code. But I would love to hear David's opinion on this! :D
@ContinuousDelivery
@ContinuousDelivery Год назад
I don't see that as much of a problem. I guess it depends on scale, if you are talking about lots of web-scale environments, where you want economies of scale/reuse for you infra definitions, then sure better tools help with this. But that isn't usually the case when we are talking about automating the deployment of a Legacy System. It is more likely to be a one-off, so custom is less of an issue I think. Having said that, sure, I'd start with an off the shelf tool, as I said in the video. In most cases I'd see if I could sensibly containerise things, then look to Chef, Puppet, et al, and only if none of those options make sense would I do my own thing.
@lucaslossmusic
@lucaslossmusic Год назад
I would like an episode on approval testing.
@dichaos
@dichaos Год назад
What I am curious to find out is, if the system you created in LMAX is stateless and if it is horizontally scalable. Generally trading contracts for example EUR/USD currency exchanges is not something you can horizontally scale and the latency for storing and restoring the state of a market in a stateless system takes time.
@ContinuousDelivery
@ContinuousDelivery Год назад
It’s not stateless, it is VERY Stateful, but it is horizontally scalable through sharding.
@dichaos
@dichaos Год назад
@@ContinuousDelivery so that I don't keep bothering you, can you point me to a document as to how sharding worked?
@dichaos
@dichaos Год назад
@@ContinuousDelivery and thank you :)
@rdean150
@rdean150 Год назад
I've always heard what you call Approval Tests referred to as Regression Tests.
@ContinuousDelivery
@ContinuousDelivery Год назад
Not really the same thing, though they are used as regression tests. I'd say that "Approval tests are one type of regression test, there are others".
@joeypencil5368
@joeypencil5368 Год назад
How do approval tests differ from pre-existing tests?
@ContinuousDelivery
@ContinuousDelivery Год назад
'Approval testing' is a technical term, it has a specific meaning, and they are there to verify that the code is unchanged in behaviour. Approval tests are great to support refactoring, I have a video coming out soon on Approval testing. Pre-existing tests may or may not be focused on that, it isn't really a definitive term in the same way.
@lorddidger
@lorddidger Год назад
What does it mean "to record interactions with the system"? Syscalls? It sounds like a desperate idea. However, desparate times call for desperate measures. If it was a viable solution without any hidden assumptions, I would pay to learn how to do approval/characterisation tests.
@uome2k7
@uome2k7 Год назад
its sort of like virtualization testing. You can record the input/output of normal operations and then use that to verify for the same input you get the same output after making a change. by doing so you are also building something close to a virtual implementation of your service that can be used when your real service is not available to test with. By giving it known input you get known output...allowing the consuming process to continue being testable too.
@xybersurfer
@xybersurfer Год назад
with automating acceptance tests, do you mean a high level test? otherwise i don't see how you would automate user tests. i love the shirt by the way
@ContinuousDelivery
@ContinuousDelivery Год назад
Yes, Acceptance Tests are high-level, BDD-style, functional tests that validate that the system does what your users want it to do, without, explicitly, saying how the system works.
@christopherbooty5049
@christopherbooty5049 Год назад
Topical!
@adrianojordao4634
@adrianojordao4634 Год назад
Galileu was not executed by the inquesition. Died an old man. Almost... this was a clever man.
@ContinuousDelivery
@ContinuousDelivery Год назад
Quite correct, sorry for my mistake.
@Flamechr
@Flamechr Год назад
Look at 7 k lines c and cpp files from work 😢. With no unittest
@sasukesarutobi3862
@sasukesarutobi3862 Год назад
Michael Feathers' book is definitely a good place to start if you're looking to make it more unit testable. It has a number of practical strategies to isolate the untestable parts, instrument the testable parts, and then refactor and amend what's left. The most important thing to remember: you don't need to fix or refactor everything all at once. Look first at what's most likely to change in the normal course of business. If it's working as it should and doesn't need to change for a business reason, then move on to what isn't working and/or does need to change.
@Flamechr
@Flamechr Год назад
@@sasukesarutobi3862 thanks for the advice I will take a look at it :)
@TonyWhitley
@TonyWhitley Год назад
Pfft! I worked with *functions* that had 7k lines (and more!) with no unit test. Well of course there were no unit tests, you can’t unit test stuff like that.
@ruslanfadeev3113
@ruslanfadeev3113 Год назад
A bit of criticism: the first four minutes basically said "CD is hard to switch to from a legacy process", it was way too repetitive.
@BryonLape
@BryonLape Год назад
I wonder if I can convince my PM that we need to talk to QA about Approval Testing.....hmm...
@TristanBailey
@TristanBailey 21 день назад
“Can we fix it”. No its legacy, we don’t even want to look at it on a bad day. But yay it’s one of our core tools. … taxi!
@petropzqi
@petropzqi Год назад
Request(DaveShouldShowHowToWriteAnAprovalTest);
@kayakMike1000
@kayakMike1000 Год назад
Gallileo wasn't executed, just put under house arrest. He was condemned by the church for heresy for the support for the Copernicus science.
@ContinuousDelivery
@ContinuousDelivery Год назад
Oops, quite right, sorry!
@werneryc
@werneryc Год назад
Was that Rider or Intellij ?
@ContinuousDelivery
@ContinuousDelivery Год назад
IntelliJ
@romanhimmes171
@romanhimmes171 Год назад
Hmm. As far as I know, Gallileo did discuss his ideas with the Inquisition and with the pope and he got along with them fine. Years later after he called the pope an idiot and he lost many friends by being just an asshole, he published a book by saying there is proof that the sun is in the center even though he did not have any. (The first proof came much later, when the instruments were precise enough). Then the church treated him the way they did. Just out of pure spite The moral of this story is, do not behave like Gallileo. To be right is not enough to make a change. It takes a lot of work and effort to persuade the ones around you.
@jaimeduncan6167
@jaimeduncan6167 9 месяцев назад
1. Galileo was not executed. 2. Galileo did not have problems because he believed in the Heliocentric model, after all, there is a reason is not attributed to him, but because he was a smart jerk with almost no social skills. Galileo decided to publicly and in writing humiliate a dude because he was of a different opinion about the heliocentric model calling him an idiot. This time the dude had a lot of power and was used to have kings's reverence, Yes the dude was the pope. The reason he was not killed is that he had a friend, so "tower" was his punishment and tower for life.
@niksatan
@niksatan Год назад
No, it's Forked
@mateusz_strzalkowski
@mateusz_strzalkowski Год назад
Galileo was not executed... (Died of natural causes nine years after his trial.)
@aronlilland7638
@aronlilland7638 Год назад
very very unprofessional shirt. disappointed.
@cloojure
@cloojure Год назад
Dave! It was Copernicus who came up with the idea of a sun-centered solar system. Galileo also believed Copernicus' theory, but was much later. See en.wikipedia.org/wiki/Nicolaus_Copernicus
Далее
Types Of Technical Debt And How To Manage Them
17:58
Просмотров 51 тыс.
Test Driven DESIGN - Step by Step
25:46
Просмотров 19 тыс.
Just try to use a cool gadget 😍
00:33
Просмотров 43 млн
Ozoda - JAVOHIR ( Official Music Video )
06:37
Просмотров 336 тыс.
"Non-Functional Requirements" Are STUPID
15:10
Просмотров 41 тыс.
Don't Mock 3rd Party Code
19:56
Просмотров 38 тыс.
Software Architecture Tips I WISH I Knew Sooner
18:04
How software testers can test microservices
25:56
Просмотров 29 тыс.
You Don’t Need CODE OWNERSHIP
18:19
Просмотров 22 тыс.
Unit Testing Is The BARE MINIMUM
20:33
Просмотров 31 тыс.
Where Agile Gets It Wrong
19:22
Просмотров 29 тыс.
Martin Fowler @ OOP2014 "Workflows of Refactoring"
27:05
Tidy First? Kent Beck on Refactoring
46:20
Просмотров 7 тыс.
Legacy System Modernization
11:17
Просмотров 4,9 тыс.
Will the battery emit smoke if it rotates rapidly?
0:11
Holographic transparent flexible LED panel.
0:20
Просмотров 3,3 млн
ЛУЧШИЙ ПОВЕРБАНК ОТ XIAOMI
0:39
Просмотров 15 тыс.