SlideShare a Scribd company logo
What, Why, When Refactoring
Adrian Adendrata
Software Engineer at DOKU
ONE WEEK ONE MONTH ONE YEAR
DEVELOPMENT PHASE
Software Architecture Conference – 27 October 2018
ONE WEEK ONE MONTH ONE YEAR
DEVELOPMENT PHASE
Software Architecture Conference – 27 October 2018
What
What Is Refactoring?
Refactoring is process of changing a software system is
such a way that it does not alter the external behavior of code yet
improve its internal structure.
● Maintainability
● Extensibility
● Readability
Software Architecture Conference – 27 October 2018
Why
Improves the Design
of Software.
Without refactoring, the design of the
program will decay
Software Architecture Conference – 27 October 2018
Software Easier to
Understand.
The trouble is that when you are trying to
get the program to work, you are not
thinking about that future developer
Software Architecture Conference – 27 October 2018
Helps You
Program Faster.
A good design is essential to
maintaining speed in software
development.
Software Architecture Conference – 27 October 2018
Helps You Find Bugs.
“I'm not a great programmer. I'm just a
good programmer with great habits”
-Kent Beck
Software Architecture Conference – 27 October 2018
When
When Adding a
new Function.
Adding this feature would be easy.
Software Architecture Conference – 27 October 2018
When You Fix a
Bug.
Software Architecture Conference – 27 October 2018
When you Code
Review.
Reviews help more experienced
developers pass knowledge to less
experienced people
Software Architecture Conference – 27 October 2018
Refactoring: Improving the
Design of Existing Code (Object
Technology Series)
Martin Fowler (Author),
Kent Beck (Author),
John Brant (Author),
William Opdyke (Author),
Don Roberts (Author)
THX

More Related Content

What's hot

Armada Preso
Armada PresoArmada Preso
Armada Preso
Alex Li
 
Voices 2015-presentation
Voices 2015-presentationVoices 2015-presentation
Voices 2015-presentation
Dhan12
 
Comparison and Analysis of Project Management software
Comparison and Analysis of Project Management softwareComparison and Analysis of Project Management software
Comparison and Analysis of Project Management software
Konstantin Prokhorov, MBA, MSc
 
Building Software in a weekend
Building Software in a weekendBuilding Software in a weekend
Building Software in a weekend
ColdFusionConference
 
Gordon Ritter Resume
Gordon Ritter ResumeGordon Ritter Resume
Gordon Ritter Resume
Gordon Ritter
 
caddcentre_certificate
caddcentre_certificatecaddcentre_certificate
caddcentre_certificate
Sridhar Chowbina
 
Project Management with Alfresco
Project Management with AlfrescoProject Management with Alfresco
Project Management with Alfresco
ITD Systems
 
Bots and News
Bots and NewsBots and News
Bots and News
Simon Ssekamatte
 
Production testing and disaster recovery
Production testing and disaster recoveryProduction testing and disaster recovery
Production testing and disaster recovery
BizTalk360
 
Datelytics Tools - How We Stay Aligned
Datelytics Tools - How We Stay AlignedDatelytics Tools - How We Stay Aligned
Datelytics Tools - How We Stay Aligned
Brandon T. Luong
 
Kishan_Bhakta_Resume_2016
Kishan_Bhakta_Resume_2016Kishan_Bhakta_Resume_2016
Kishan_Bhakta_Resume_2016
Kishan Bhakta
 
Triangle kubernetes meetup 2018 02 - OpenShift UX
Triangle kubernetes meetup 2018 02 - OpenShift UXTriangle kubernetes meetup 2018 02 - OpenShift UX
Triangle kubernetes meetup 2018 02 - OpenShift UX
Serena Doyle
 
Agile Architecture Belfast Software Architecture User Group
Agile Architecture   Belfast Software Architecture User GroupAgile Architecture   Belfast Software Architecture User Group
Agile Architecture Belfast Software Architecture User Group
Paul Wallace
 
Serena Software: Introducing Orchestrated ALM
Serena Software: Introducing Orchestrated ALMSerena Software: Introducing Orchestrated ALM
Serena Software: Introducing Orchestrated ALM
adamfrankl
 

What's hot (14)

Armada Preso
Armada PresoArmada Preso
Armada Preso
 
Voices 2015-presentation
Voices 2015-presentationVoices 2015-presentation
Voices 2015-presentation
 
Comparison and Analysis of Project Management software
Comparison and Analysis of Project Management softwareComparison and Analysis of Project Management software
Comparison and Analysis of Project Management software
 
Building Software in a weekend
Building Software in a weekendBuilding Software in a weekend
Building Software in a weekend
 
Gordon Ritter Resume
Gordon Ritter ResumeGordon Ritter Resume
Gordon Ritter Resume
 
caddcentre_certificate
caddcentre_certificatecaddcentre_certificate
caddcentre_certificate
 
Project Management with Alfresco
Project Management with AlfrescoProject Management with Alfresco
Project Management with Alfresco
 
Bots and News
Bots and NewsBots and News
Bots and News
 
Production testing and disaster recovery
Production testing and disaster recoveryProduction testing and disaster recovery
Production testing and disaster recovery
 
Datelytics Tools - How We Stay Aligned
Datelytics Tools - How We Stay AlignedDatelytics Tools - How We Stay Aligned
Datelytics Tools - How We Stay Aligned
 
Kishan_Bhakta_Resume_2016
Kishan_Bhakta_Resume_2016Kishan_Bhakta_Resume_2016
Kishan_Bhakta_Resume_2016
 
Triangle kubernetes meetup 2018 02 - OpenShift UX
Triangle kubernetes meetup 2018 02 - OpenShift UXTriangle kubernetes meetup 2018 02 - OpenShift UX
Triangle kubernetes meetup 2018 02 - OpenShift UX
 
Agile Architecture Belfast Software Architecture User Group
Agile Architecture   Belfast Software Architecture User GroupAgile Architecture   Belfast Software Architecture User Group
Agile Architecture Belfast Software Architecture User Group
 
Serena Software: Introducing Orchestrated ALM
Serena Software: Introducing Orchestrated ALMSerena Software: Introducing Orchestrated ALM
Serena Software: Introducing Orchestrated ALM
 

Similar to 2018.10.27 sarcom conf refactoring

Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software Architecture
Kannan Durairaj
 
Role of a Solution Architect-1.pptx
Role of a Solution Architect-1.pptxRole of a Solution Architect-1.pptx
Role of a Solution Architect-1.pptx
RohitRadhakrishnan8
 
Agile and waterfall the additional value
Agile and waterfall the additional value Agile and waterfall the additional value
Agile and waterfall the additional value
Lior Israel
 
Introduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxIntroduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptx
rony setyawansyah
 
O.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software ArchitectureO.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software Architecture
Alexandr Savchenko
 
Challenging The Role Of The Architect
Challenging The Role Of The ArchitectChallenging The Role Of The Architect
Challenging The Role Of The Architect
Kevin Francis
 
Saf08 Growing Architects Kevin Francis
Saf08 Growing Architects   Kevin FrancisSaf08 Growing Architects   Kevin Francis
Saf08 Growing Architects Kevin Francis
Kevin Francis
 
Software Engineering Careers
Software Engineering CareersSoftware Engineering Careers
Software Engineering Careers
Mohammed El Amin TEBIB
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect Does
Eberhard Wolff
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
Vernon Stinebaker
 
Computer aided software engineering
Computer aided software engineeringComputer aided software engineering
Computer aided software engineering
ČhauÐhařÿ Faísal Ãlï
 
Computer Aided Software Engineering
Computer Aided Software EngineeringComputer Aided Software Engineering
Computer Aided Software Engineering
ČhauÐhařÿ Faísal Ãlï
 
Solution Design & Architecture.pptx
Solution Design & Architecture.pptxSolution Design & Architecture.pptx
Solution Design & Architecture.pptx
NikhileshSathyavarap
 
Build Answer-generating Apps that Users Love: Development best practices for ...
Build Answer-generating Apps that Users Love: Development best practices for ...Build Answer-generating Apps that Users Love: Development best practices for ...
Build Answer-generating Apps that Users Love: Development best practices for ...
TIBCO Jaspersoft
 
Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013
Moataz Nabil
 
MuleSoft Milano Meetup #7 Florence Consulting
MuleSoft Milano Meetup #7  Florence Consulting MuleSoft Milano Meetup #7  Florence Consulting
MuleSoft Milano Meetup #7 Florence Consulting
Florence Consulting
 
Agile engineering environment 50 minutes or less
Agile engineering environment   50 minutes or lessAgile engineering environment   50 minutes or less
Agile engineering environment 50 minutes or less
Vernon Stinebaker
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
India Scrum Enthusiasts Community
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
India Scrum Enthusiasts Community
 
Automated Process for Auditng in Agile - SCRUM
Automated Process for Auditng in Agile - SCRUMAutomated Process for Auditng in Agile - SCRUM
Automated Process for Auditng in Agile - SCRUM
Umair Amjad
 

Similar to 2018.10.27 sarcom conf refactoring (20)

Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software Architecture
 
Role of a Solution Architect-1.pptx
Role of a Solution Architect-1.pptxRole of a Solution Architect-1.pptx
Role of a Solution Architect-1.pptx
 
Agile and waterfall the additional value
Agile and waterfall the additional value Agile and waterfall the additional value
Agile and waterfall the additional value
 
Introduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptxIntroduction of Software Architect(Definition, Mindset, Process).pptx
Introduction of Software Architect(Definition, Mindset, Process).pptx
 
O.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software ArchitectureO.Savchenko FWDays workshop Software Architecture
O.Savchenko FWDays workshop Software Architecture
 
Challenging The Role Of The Architect
Challenging The Role Of The ArchitectChallenging The Role Of The Architect
Challenging The Role Of The Architect
 
Saf08 Growing Architects Kevin Francis
Saf08 Growing Architects   Kevin FrancisSaf08 Growing Architects   Kevin Francis
Saf08 Growing Architects Kevin Francis
 
Software Engineering Careers
Software Engineering CareersSoftware Engineering Careers
Software Engineering Careers
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect Does
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
Computer aided software engineering
Computer aided software engineeringComputer aided software engineering
Computer aided software engineering
 
Computer Aided Software Engineering
Computer Aided Software EngineeringComputer Aided Software Engineering
Computer Aided Software Engineering
 
Solution Design & Architecture.pptx
Solution Design & Architecture.pptxSolution Design & Architecture.pptx
Solution Design & Architecture.pptx
 
Build Answer-generating Apps that Users Love: Development best practices for ...
Build Answer-generating Apps that Users Love: Development best practices for ...Build Answer-generating Apps that Users Love: Development best practices for ...
Build Answer-generating Apps that Users Love: Development best practices for ...
 
Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013
 
MuleSoft Milano Meetup #7 Florence Consulting
MuleSoft Milano Meetup #7  Florence Consulting MuleSoft Milano Meetup #7  Florence Consulting
MuleSoft Milano Meetup #7 Florence Consulting
 
Agile engineering environment 50 minutes or less
Agile engineering environment   50 minutes or lessAgile engineering environment   50 minutes or less
Agile engineering environment 50 minutes or less
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
 
Automated Process for Auditng in Agile - SCRUM
Automated Process for Auditng in Agile - SCRUMAutomated Process for Auditng in Agile - SCRUM
Automated Process for Auditng in Agile - SCRUM
 

Recently uploaded

“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 

Recently uploaded (20)

“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 

2018.10.27 sarcom conf refactoring

  • 1. What, Why, When Refactoring Adrian Adendrata Software Engineer at DOKU
  • 2. ONE WEEK ONE MONTH ONE YEAR DEVELOPMENT PHASE Software Architecture Conference – 27 October 2018
  • 3. ONE WEEK ONE MONTH ONE YEAR DEVELOPMENT PHASE Software Architecture Conference – 27 October 2018
  • 5. What Is Refactoring? Refactoring is process of changing a software system is such a way that it does not alter the external behavior of code yet improve its internal structure. ● Maintainability ● Extensibility ● Readability Software Architecture Conference – 27 October 2018
  • 6. Why
  • 7. Improves the Design of Software. Without refactoring, the design of the program will decay Software Architecture Conference – 27 October 2018
  • 8. Software Easier to Understand. The trouble is that when you are trying to get the program to work, you are not thinking about that future developer Software Architecture Conference – 27 October 2018
  • 9. Helps You Program Faster. A good design is essential to maintaining speed in software development. Software Architecture Conference – 27 October 2018
  • 10. Helps You Find Bugs. “I'm not a great programmer. I'm just a good programmer with great habits” -Kent Beck Software Architecture Conference – 27 October 2018
  • 11. When
  • 12. When Adding a new Function. Adding this feature would be easy. Software Architecture Conference – 27 October 2018
  • 13. When You Fix a Bug. Software Architecture Conference – 27 October 2018
  • 14. When you Code Review. Reviews help more experienced developers pass knowledge to less experienced people Software Architecture Conference – 27 October 2018
  • 15.
  • 16.
  • 17. Refactoring: Improving the Design of Existing Code (Object Technology Series) Martin Fowler (Author), Kent Beck (Author), John Brant (Author), William Opdyke (Author), Don Roberts (Author)
  • 18.
  • 19. THX