SlideShare a Scribd company logo
1 of 52
How to fix a code
to not corrupt an app
Michał Łukaszewski
Software Engineer, Intel
/m_lukaszewski
豊田 佐吉
1867- 1930
豊田 喜一郎
1894-1952
大野 耐
1912-1990
• Refactoring is (continuous) process, not an action.
When you look into an abyss, the abyss also looks into you.
Friedrich Nietzsche
worthiness &
principles
Technical
• Refactoring is (continuous) process, not an action.
• Refactoring is not
• Bugfix,
• Security fix,
• Optimization.
Martin Fowler
• Refactoring is (continuous) process, not an action.
• Refactoring is not
• Bugfix,
• Security fix,
• Optimization.
• Refactoring should provide (a lot of small) improvements.
Is it mess?
Or complex?
Or too
complex for
human
being?
Team
changed?
To measure
this,
you have.
Michael
Feathers
Christophe
Philemotte
• Refactoring is (continuous) process not an action.
• Refactoring is not
• Bugfix,
• Security fix,
• Optimization.
• Refactoring should provide (a lot of small) improvements.
• Refactoring should be founded on knowledge (measures).
https://twitter.com/ziobrando/status/741186560373186560
https://martinfowler.com/bliki/Yagni.html
• Refactoring is (continuous) process, not an action.
• Refactoring is not
• Bugfix,
• Security fix,
• Optimization.
• Refactoring should provide (a lot of small) improvements.
• Refactoring should be founded on knowledge (measures).
• Refactoring should improve only what needs improvement.
改善
改善
Kai Zen

More Related Content

Similar to How to fix a code to not corrupt an application

Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous DeploymentBrian Henerey
 
2011 06 15 velocity conf from visible ops to dev ops final
2011 06 15 velocity conf   from visible ops to dev ops final2011 06 15 velocity conf   from visible ops to dev ops final
2011 06 15 velocity conf from visible ops to dev ops finalGene Kim
 
Rational User Group - May 2014 Stockholm - DevOps from an EA perspective
Rational User Group - May 2014 Stockholm - DevOps from an EA perspectiveRational User Group - May 2014 Stockholm - DevOps from an EA perspective
Rational User Group - May 2014 Stockholm - DevOps from an EA perspectiveJoakim Lindbom
 
2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1a2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1aGene Kim
 
Winnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOpsWinnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOpsGene Kim
 
Manufacturing simulation
Manufacturing simulationManufacturing simulation
Manufacturing simulationsameer agrawal
 
Best Practices - Software Engineering
Best Practices - Software EngineeringBest Practices - Software Engineering
Best Practices - Software Engineering3Quill Softwares
 
DevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreDevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreChris Edwards
 
Normal accidents and outpatient surgeries
Normal accidents and outpatient surgeriesNormal accidents and outpatient surgeries
Normal accidents and outpatient surgeriesJonathan Creasy
 
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Wojciech Seliga
 
sitHH16 - The Implications of Becoming Agile
sitHH16 - The Implications of Becoming AgilesitHH16 - The Implications of Becoming Agile
sitHH16 - The Implications of Becoming AgileMarkus Theilen
 
DevOps Theory vs. Practice: A Song of Ice and Tire Fire
DevOps Theory vs. Practice: A Song of Ice and Tire FireDevOps Theory vs. Practice: A Song of Ice and Tire Fire
DevOps Theory vs. Practice: A Song of Ice and Tire FireLeon Stigter
 
DevOps and the Future of Information Security
DevOps and the Future of Information SecurityDevOps and the Future of Information Security
DevOps and the Future of Information SecurityDarin Morris
 
Infrastructure as code chez Scaleway
 Infrastructure as code chez Scaleway Infrastructure as code chez Scaleway
Infrastructure as code chez ScalewayScaleway
 
Purple Teaming - The Collaborative Future of Penetration Testing
Purple Teaming - The Collaborative Future of Penetration TestingPurple Teaming - The Collaborative Future of Penetration Testing
Purple Teaming - The Collaborative Future of Penetration TestingFRSecure
 
EVAIN Artificial intelligence and semantic annotation: are you serious about it?
EVAIN Artificial intelligence and semantic annotation: are you serious about it?EVAIN Artificial intelligence and semantic annotation: are you serious about it?
EVAIN Artificial intelligence and semantic annotation: are you serious about it?FIAT/IFTA
 
stackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdf
stackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdfstackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdf
stackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdfNETWAYS
 
2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...
2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...
2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...Joakim Lindbom
 

Similar to How to fix a code to not corrupt an application (20)

Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
2011 06 15 velocity conf from visible ops to dev ops final
2011 06 15 velocity conf   from visible ops to dev ops final2011 06 15 velocity conf   from visible ops to dev ops final
2011 06 15 velocity conf from visible ops to dev ops final
 
Rational User Group - May 2014 Stockholm - DevOps from an EA perspective
Rational User Group - May 2014 Stockholm - DevOps from an EA perspectiveRational User Group - May 2014 Stockholm - DevOps from an EA perspective
Rational User Group - May 2014 Stockholm - DevOps from an EA perspective
 
2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1a2011 09 19 LSPE Dev Ops Cookbook 1a
2011 09 19 LSPE Dev Ops Cookbook 1a
 
Winnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOpsWinnipeg ISACA Security is Dead, Rugged DevOps
Winnipeg ISACA Security is Dead, Rugged DevOps
 
Manufacturing simulation
Manufacturing simulationManufacturing simulation
Manufacturing simulation
 
Best Practices - Software Engineering
Best Practices - Software EngineeringBest Practices - Software Engineering
Best Practices - Software Engineering
 
DevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreDevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & More
 
Normal accidents and outpatient surgeries
Normal accidents and outpatient surgeriesNormal accidents and outpatient surgeries
Normal accidents and outpatient surgeries
 
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...
 
sitHH16 - The Implications of Becoming Agile
sitHH16 - The Implications of Becoming AgilesitHH16 - The Implications of Becoming Agile
sitHH16 - The Implications of Becoming Agile
 
DevOps Theory vs. Practice: A Song of Ice and Tire Fire
DevOps Theory vs. Practice: A Song of Ice and Tire FireDevOps Theory vs. Practice: A Song of Ice and Tire Fire
DevOps Theory vs. Practice: A Song of Ice and Tire Fire
 
DevOps and the Future of Information Security
DevOps and the Future of Information SecurityDevOps and the Future of Information Security
DevOps and the Future of Information Security
 
Infrastructure as code chez Scaleway
 Infrastructure as code chez Scaleway Infrastructure as code chez Scaleway
Infrastructure as code chez Scaleway
 
Purple Teaming - The Collaborative Future of Penetration Testing
Purple Teaming - The Collaborative Future of Penetration TestingPurple Teaming - The Collaborative Future of Penetration Testing
Purple Teaming - The Collaborative Future of Penetration Testing
 
EVAIN Artificial intelligence and semantic annotation: are you serious about it?
EVAIN Artificial intelligence and semantic annotation: are you serious about it?EVAIN Artificial intelligence and semantic annotation: are you serious about it?
EVAIN Artificial intelligence and semantic annotation: are you serious about it?
 
stackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdf
stackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdfstackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdf
stackconf 2023 | Continuous Deployment Workflows by Marco Otto-Witte.pdf
 
2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...
2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...
2015 10 dev ops n-fi - why it's a good idea to deploy 10 times per day v1.0 -...
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
 

More from Michal Lukaszewski

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextMichal Lukaszewski
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówMichal Lukaszewski
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code EuropeMichal Lukaszewski
 
Budowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówBudowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówMichal Lukaszewski
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed ArchitectureMichal Lukaszewski
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuMichal Lukaszewski
 

More from Michal Lukaszewski (9)

How we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened nextHow we built a tools stack for the benchmarking AI and what happened next
How we built a tools stack for the benchmarking AI and what happened next
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
Distributed Systems @ Code Europe
Distributed Systems @ Code EuropeDistributed Systems @ Code Europe
Distributed Systems @ Code Europe
 
Budowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworkówBudowanie aplikacji PHP bez użycia frameworków
Budowanie aplikacji PHP bez użycia frameworków
 
Domain Events in Distributed Architecture
Domain Events in Distributed ArchitectureDomain Events in Distributed Architecture
Domain Events in Distributed Architecture
 
Action Domain Response
Action Domain ResponseAction Domain Response
Action Domain Response
 
Wydajność i optymalizacja
Wydajność i optymalizacjaWydajność i optymalizacja
Wydajność i optymalizacja
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
 
Solid vs php
Solid vs phpSolid vs php
Solid vs php
 

Recently uploaded

DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 

Recently uploaded (20)

DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 

How to fix a code to not corrupt an application

Editor's Notes

  1. Sakichi Toyoda Przemysł włókienniczy Wynalazca krosna zatrzymującego się przy zerwanej nici Automatyzował swoją fabrykę
  2. Kiichirō Toyoda Syn Sakichi W 1930 wyjechał do USA „z misją handlową” Podlądał Forda Wprowadził Toyotę na rynek samochodowy Just-in-Time – niskie koszty, jakość, eliminacja marnotrastwa na etapie procesu
  3. Taiichi Ōno Inżynier Toyoty Od połowy lat 40 zaczął wprowadzać narzędzia i zasady organizujące pracę w Toyota Production System Ojciec Lean Manufacturing z którego wywodzi się Lean Management.
  4. Jedna z najefektywniejszych metodyk zwinnych. I najtrudniejszych. Z niej wywodzi się kanban, skrzynki z sugestiami pracowników i wiele innych drobiazgów, które pomagają firmie usprawniać oraz kontrolować procesy tak by unikać marnotrastwa. Do realizacji Lean stosowanych jest wiele narzędzi i metodyk – najlepiej gdy dobrane są optymalnie dla typu organizacji, kultury kraju, dojrzałości zespołu.
  5. Jej celem jest ograniczenie kosztów przy zachowaniu sprawnego (just in time) dostarczania coaz wyższej jakości produktu – efektywność!
  6. Cykl Deminga  cykl PDCA z ang. Plan-Do-Check-Act lub cykl P-D-S-A z ang. Plan-Do-Study-Act P-D-C-A ZAPLANUJ (ang. Plan): Zaplanuj lepszy sposób działania, lepszą metodę. WYKONAJ, ZRÓB (ang. Do): Zrealizuj plan na próbę. SPRAWDŹ (ang. Check): Zbadaj, czy rzeczywiście nowy sposób działania przynosi lepsze rezultaty. POPRAW (ang. Act): Jeśli nowy sposób działania przynosi lepsze rezultaty, uznaj go za normę (obowiązującą procedurę), zestandaryzuj i monitoruj jego stosowanie.
  7. Edwards Deming w ostatnich latach życia zgłaszał zastrzeżenia do interpretacji trzeciego kroku cyklu, która jest zbyt uproszczona i nie ujmuje sensu metodyki tzw. projektowania eksperymentalnego (Design of Experiments, w skrócie DOE). Przywrócono P-D-S-A ZAPLANUJ (ang. Plan): Planuj każdą zmianę z wyprzedzeniem. Przeanalizuj obecną sytuację oraz potencjalne skutki zmian zanim jakiekolwiek podejmiesz. Z góry przemyśl, co powinieneś zmierzyć, aby przekonać się, czy zrealizowałeś swój zamiar. Zaplanuj pomiar, jako jeden z elementów realizacji zmiany. Myśl o pomiarze aż do następnego kroku (przez cały okres planowania). Opracuj plan wdrożenia zmiany, zadbaj przy tym o pełną obsadę tego przedsięwzięcia właściwym personelem oraz zaangażuj właścicieli procesów. WYKONAJ, ZRÓB (ang. Do): Przeprowadź pilotażowe wdrożenie zmiany w małej skali, w kontrolowanych warunkach (tzn. najpierw przeprowadź eksperyment, bądź zbuduj prototyp). ZBADAJ (ang. Study): Gruntownie przeanalizuj rezultaty eksperymentu. Wyprowadź wnioski – co zebrane dane mówią na temat skuteczności próbnego wdrożenia? ZASTOSUJ, DZIAŁAJ (ang. Act): Podejmij właściwe działania, aby wdrożyć standard takiego procesu, który wytworzył rezultaty najbardziej pożądane.
  8. Co powinno nam z łatwością skojarzyć się z TDD i jego słynnym Red-Green-Refactor Łeee, będzie o testach. Nie. Nie będzie o tym jak naprawiać kod. Zadamy sobie o wiele ważniejsze pytanie – dlaczego go naprawiać.
  9. Praca z przestarzałym kodem jest naturalna dla kazdego programisty. Niektórzy nawet czynią z tego pasję i specjalizację.  To super, tak długo jeśli ich pasja polega na wycianiu tego kodu do nowocześniejszej lub bardziej optymalnej formy.
  10. Rany boskie, ten znowu o kasie. To nie do końca mój pomysł :P
  11. główny naukowiec w Obtivia, specjalista od refaktoringu
  12. 6 lat temu napisał ciekawy artykuł o praktycznym podejściu do refaktoringyu  Zauważył, że pliki czy obszary aplikacji możemy podzielić na szybko zmienne i wolnozmienne
  13. A ponieważ każdy kawałek kodu w nich zawarty możemy podzielić wg jakości kodu, mierzonej na przykład złożonością cyklomatyczną powstaje ciekawy rozkład
  14. Nazywany dzisiaj potocznie kwadratem Featersa  Wprowadza on bardzo ciekawy podział aplikacji ułatwiając podejmowanie decyzji o miejscu, w którym należy rozpocząć poprawianie aplikacji.  Narzędzia, brzydkie-stabilne, małe, szybko zmienne ale stabilne i miejsca gdzie my, jako zespół, popłynęliśmy w nawarstwiające się pokłady... błedów projektowych.
  15. Oczywiście analiza statyczna daje nam więcej informoacji niźli tylko o złożoności.  Mamy do dyspozycji np mess detector czy copy-paste detector i ten ostatni dostarcza informacji o błędach projektowych naruszających zasadę DYI.
  16. O dry...
  17. Ok, ale analiza statyczna to nie wszystko na co nas stać.  Jednym z najczęściej pomijanych metod, która potrafi dostarcza niezwykle ważnych informacji z czysto biznesowego punktu widzenia jest profilowanie.  PRofilowanie pokazuje jak płyną dane w aplikacji, które jej części są najbardziej obciążane obsługą danej komendy i gdzie _sumarycznie_ idzie najwięcej zasobów.  Jest to metoda trudna i wymagająca wiedzy, ale przede wszystkim uczciwości w przygotowaniu i przeprowadzaniu pomiarów. Oraz interpretacji wyników.  Dlaczego to ważna biznesowo informacje? Bo uczciwie przeprowadzone daje informacje nt czasów reakcji aplikacji, zasobów koniecznych potrzebnych do zachowania budżetu wydajnościowego oraz pozwala prognozować dalsze inwestycje w sprzęt i optymalizacje kodu
  18. Te wszystkie pomiary są nam potrzebne, aby nie rozpoczynać zmian na podstawie przeczuć, poprawiając kod tam, gdzie kompletnie nie musi być poprawiany.
  19. Dzięki temu wiemy dokładnie co I DLACZEGO zmieniamy, a to (plus testy!) ma zabezpieczyć nas przed wprowadzeniem regresji, ale także...
  20. Przed przeginaniem pałki i marnowaniem czasu na coś, czego użytkownik po prostu nie potrzebuje.
  21. Naszym zadaniem jako inżynierów jest prostować zagmatwane wymagania, porządkować je i nadawać im sens. Naszym! Idealnie jest oczekiwać wspaniałej dokumentacji, ale jeśli jej nie otrzymamy to naszym obowiązkiem jest dopytać zamawiającego (mniej lub bardziej bezpośrednio), aby zrobić tylko to czego naprawdę chce.
  22. Refactoring to nieustający proces poprawy kodu aplikacji. I jako proces podlega dokładnie tym samym regułom co pisanie nowego kodu – bo w gruncie rzeczy i tak najczęściej piszemy kod, który ma zastąpić stary. Wykorzystaj regułę 8 godzin aby nie popłynąć z „usprawnieniami” w tygodnie. Poświęć na to jeden dzień i wróć do „zamówionych” zadań.
  23. Eksperymentuj z rozwiązaniami! Jeśli wprowadzasz relatywnie często małe usprawnienia to nawet jeśli któreś „nie pójdzie” – możesz je szybko zmienić na ulepszone, albo wycofać się ze zmiany!
  24. Tak więc zachowaj spokój i naprawiaj kod 