SlideShare a Scribd company logo
Death of a coder CODER
Why should we talk about it ?
Code smell !
“BadCode Smells are symptoms of poor
design or implementation choices”
-Martin Fowler
Symptoms of smelling code
• Rigidity
• Fragility
• Immobility
• Viscosity ( Design / Environment )
• Needless complexity
• Needless repetition
• Opacity
Rigidity
• The code which is difficult to change.
• Cascading of change in the dependent modules.
• Impact of change cannot be predicted.
• Thus it can’t be estimated.
• Time and cost can’t be quantified.
Fragility
• Breaks at many places when changed.
• Errors appear in the areas, unrelated to the changed areas.
• Quality is unpredictable.
• Loss of credibility of the development team.
• Sometime breakage increases with time.
Immobility
• Inability to reuse Software Component.
• Lack of reusable modules.
• Desirable parts of the system depending on undesirable part.
• Thus it can’t be estimated.
• Work and risk of extracting greater than cost of writing it from
scratch.
Viscosity ( Design / Environment )
• Taking a shortcut and introducing technical debt requires less
effort than doing it right.
• Building , testing and other tasks take a long time.Therefore these
activities are not executed properly by everyone and technical
debt is introduced.
Needless complexity
• Preparing for unknown extensions / Over flexible.
• Bad algorithms.
• Bad / Out-dated assumptions about system priorities.
Needless repetition
• Cut / Copy and Paste - Evil in software industry.
• How many places does the same processing occur ?
• That is the number of places that changes / fix must be made.
• The same code with minor change, makes the minor change easy
to miss.
Opacity
• How clear is the code ?
• Code is hard to change.
• Any change takes additional time to first understand and than
change.
• More defects are introduced, due to not understanding the side
effects.
Clean code
• Writing clean code from the start of the project is an investment.
• Initial cost of change is a bit higher , but is paid back quite soon.
• In clean code bugs cannot hide.
• Code becomes easy to understand, and minimizes the risk of
introducing defects.
Principles of clean code
• Loose coupling
• High cohesion
• Change is local.
• It is easy to remove.
Loose coupling
• Two classes / modules are coupled when at least one of them uses
the other.
• The less these items knows about each other , the loosely they are
coupled.
• More loosely coupled the items, easier is to replace and modify them.
High cohesion
• Cohesion refers to the degree to which the elements of a
module/class belong together.
• It bind all related code together as far as possible.
• It has to do with the elements within the module/class.
Change is local
• Keeping changes local means, that there are boundary in the design
which changes do not cross.
• While maintaining a system, keeping changes local reduces involved
cost and risks.
It is easy to remove
• Removing elements is important so that the overall design can be
kept as simple as possible.
• When a code block gets complicated, it has to be removed and
replaced with one or more simple blocks.
ThankYou !!

More Related Content

Similar to Death of a coder

Art of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices AntipatternsArt of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices Antipatterns
El Mahdi Benzekri
 
Deep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureDeep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software Architecture
Matthew Clarke
 
Clean Code
Clean CodeClean Code
Clean Code
swaraj Patil
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
Mike Harris
 
A Note on Distributed Computing - Papers We Love Hyderabad
A Note on Distributed Computing - Papers We Love HyderabadA Note on Distributed Computing - Papers We Love Hyderabad
A Note on Distributed Computing - Papers We Love Hyderabad
Hrishikesh Barua
 
Clean code-v2.2
Clean code-v2.2Clean code-v2.2
Clean code-v2.2
Bình Trọng Án
 
Refactoring.pdf
Refactoring.pdfRefactoring.pdf
Refactoring.pdf
Mnats Karakhanyan
 
Eurosport's Kodakademi #2
Eurosport's Kodakademi #2Eurosport's Kodakademi #2
Eurosport's Kodakademi #2
Benjamin Baumann
 
SOLID design principles in Ruby
SOLID design principles in RubySOLID design principles in Ruby
SOLID design principles in Ruby
Anil Wadghule
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
Bhavin Gandhi
 
Component based development | what, why and how
Component based development | what, why and howComponent based development | what, why and how
Component based development | what, why and how
Rakesh Kumar Jha
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
Mark Windholtz
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
PostSharp Technologies
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
Malinda Kapuruge
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
Eberhard Wolff
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
Code quality
Code quality Code quality
Code quality
Sunil Prasad
 
Code Decay
Code DecayCode Decay
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
Surendra Shukla
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 

Similar to Death of a coder (20)

Art of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices AntipatternsArt of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices Antipatterns
 
Deep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureDeep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software Architecture
 
Clean Code
Clean CodeClean Code
Clean Code
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
A Note on Distributed Computing - Papers We Love Hyderabad
A Note on Distributed Computing - Papers We Love HyderabadA Note on Distributed Computing - Papers We Love Hyderabad
A Note on Distributed Computing - Papers We Love Hyderabad
 
Clean code-v2.2
Clean code-v2.2Clean code-v2.2
Clean code-v2.2
 
Refactoring.pdf
Refactoring.pdfRefactoring.pdf
Refactoring.pdf
 
Eurosport's Kodakademi #2
Eurosport's Kodakademi #2Eurosport's Kodakademi #2
Eurosport's Kodakademi #2
 
SOLID design principles in Ruby
SOLID design principles in RubySOLID design principles in Ruby
SOLID design principles in Ruby
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 
Component based development | what, why and how
Component based development | what, why and howComponent based development | what, why and how
Component based development | what, why and how
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware Programming
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
Code quality
Code quality Code quality
Code quality
 
Code Decay
Code DecayCode Decay
Code Decay
 
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 

More from Piyush Rahate

The dysfunctions of a scrum team
The dysfunctions of a scrum teamThe dysfunctions of a scrum team
The dysfunctions of a scrum team
Piyush Rahate
 
Spice up your retrospectives
Spice up your retrospectivesSpice up your retrospectives
Spice up your retrospectives
Piyush Rahate
 
Security At The Speed of Innovation - Marudhamaran Gunasekaran
Security At The Speed of Innovation - Marudhamaran GunasekaranSecurity At The Speed of Innovation - Marudhamaran Gunasekaran
Security At The Speed of Innovation - Marudhamaran Gunasekaran
Piyush Rahate
 
Integration testing - Yasub Hashmi
Integration testing  - Yasub HashmiIntegration testing  - Yasub Hashmi
Integration testing - Yasub Hashmi
Piyush Rahate
 
Agile testing - Madhu Krishnappa
Agile testing - Madhu KrishnappaAgile testing - Madhu Krishnappa
Agile testing - Madhu Krishnappa
Piyush Rahate
 
Product owner and anti patterns
Product owner and anti patternsProduct owner and anti patterns
Product owner and anti patterns
Piyush Rahate
 
Roadblocks on performance highway
Roadblocks on performance highwayRoadblocks on performance highway
Roadblocks on performance highway
Piyush Rahate
 

More from Piyush Rahate (7)

The dysfunctions of a scrum team
The dysfunctions of a scrum teamThe dysfunctions of a scrum team
The dysfunctions of a scrum team
 
Spice up your retrospectives
Spice up your retrospectivesSpice up your retrospectives
Spice up your retrospectives
 
Security At The Speed of Innovation - Marudhamaran Gunasekaran
Security At The Speed of Innovation - Marudhamaran GunasekaranSecurity At The Speed of Innovation - Marudhamaran Gunasekaran
Security At The Speed of Innovation - Marudhamaran Gunasekaran
 
Integration testing - Yasub Hashmi
Integration testing  - Yasub HashmiIntegration testing  - Yasub Hashmi
Integration testing - Yasub Hashmi
 
Agile testing - Madhu Krishnappa
Agile testing - Madhu KrishnappaAgile testing - Madhu Krishnappa
Agile testing - Madhu Krishnappa
 
Product owner and anti patterns
Product owner and anti patternsProduct owner and anti patterns
Product owner and anti patterns
 
Roadblocks on performance highway
Roadblocks on performance highwayRoadblocks on performance highway
Roadblocks on performance highway
 

Recently uploaded

KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 

Recently uploaded (20)

KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 

Death of a coder

  • 1. Death of a coder CODER
  • 2. Why should we talk about it ?
  • 3. Code smell ! “BadCode Smells are symptoms of poor design or implementation choices” -Martin Fowler
  • 4. Symptoms of smelling code • Rigidity • Fragility • Immobility • Viscosity ( Design / Environment ) • Needless complexity • Needless repetition • Opacity
  • 5. Rigidity • The code which is difficult to change. • Cascading of change in the dependent modules. • Impact of change cannot be predicted. • Thus it can’t be estimated. • Time and cost can’t be quantified.
  • 6. Fragility • Breaks at many places when changed. • Errors appear in the areas, unrelated to the changed areas. • Quality is unpredictable. • Loss of credibility of the development team. • Sometime breakage increases with time.
  • 7. Immobility • Inability to reuse Software Component. • Lack of reusable modules. • Desirable parts of the system depending on undesirable part. • Thus it can’t be estimated. • Work and risk of extracting greater than cost of writing it from scratch.
  • 8. Viscosity ( Design / Environment ) • Taking a shortcut and introducing technical debt requires less effort than doing it right. • Building , testing and other tasks take a long time.Therefore these activities are not executed properly by everyone and technical debt is introduced.
  • 9. Needless complexity • Preparing for unknown extensions / Over flexible. • Bad algorithms. • Bad / Out-dated assumptions about system priorities.
  • 10. Needless repetition • Cut / Copy and Paste - Evil in software industry. • How many places does the same processing occur ? • That is the number of places that changes / fix must be made. • The same code with minor change, makes the minor change easy to miss.
  • 11. Opacity • How clear is the code ? • Code is hard to change. • Any change takes additional time to first understand and than change. • More defects are introduced, due to not understanding the side effects.
  • 12. Clean code • Writing clean code from the start of the project is an investment. • Initial cost of change is a bit higher , but is paid back quite soon. • In clean code bugs cannot hide. • Code becomes easy to understand, and minimizes the risk of introducing defects.
  • 13. Principles of clean code • Loose coupling • High cohesion • Change is local. • It is easy to remove.
  • 14. Loose coupling • Two classes / modules are coupled when at least one of them uses the other. • The less these items knows about each other , the loosely they are coupled. • More loosely coupled the items, easier is to replace and modify them.
  • 15. High cohesion • Cohesion refers to the degree to which the elements of a module/class belong together. • It bind all related code together as far as possible. • It has to do with the elements within the module/class.
  • 16. Change is local • Keeping changes local means, that there are boundary in the design which changes do not cross. • While maintaining a system, keeping changes local reduces involved cost and risks.
  • 17. It is easy to remove • Removing elements is important so that the overall design can be kept as simple as possible. • When a code block gets complicated, it has to be removed and replaced with one or more simple blocks.