SlideShare uma empresa Scribd logo
1 de 44
Confession
of an Engineer
TARAS MATYASHOVSKY
About me
What is XP
in a perfect case?
WHEN SOFTWARE ENGINEERING PRACTICES
ARETAKENTO "EXTREME" LEVELS
XP Practices
Values of XP
• Communication
• Simplicity
• Feedback
• Respect
• Courage
What is this talk
about?
WHEN PAIN,ABSURDITY, MARASMUS
ARETAKENTO "EXTREME" LEVELS
Roles
Customer
TL/PM/Ar
chitect
Engineer
The 6 Principles of Influence
also known as the Weapons of Influence
• Reciprocation
• Consistency
• Social proof
• Liking
• Authority
• Scarcity
Authority
Humans feel a sense
of duty or obligation
to people in positions of authority
Authority in IT
Authority
• Is senior engineer truly a “senior”?
• Is architect really an expert in this
technology stack?
• Is manager truly an expert in risk
mitigation, understands development
processes, estimates techniques, etc?
• Is this customer/client truly a domain
expert (SME)?
Is Customer Always Right?
BASED ONTRUE STORIES
CEO is extremely
technical
DRIVESALL CRITICALTECHNICAL DECISIONS
Customer
• Push for specific technology,
framework, tool, etc.
without getting into the
essence of the problem
Customer
Resistance
• Remain professional
• Use common sense
• Play safe
• Remember authority principle
• Take into account political environment
Effect Captainitis
Automatic,
but irrational compliance
Effect Captainitis in IT
Mistakes made by senior engineers,
TL/PM, customer/clients
are easily ignored
Is PM/Architect/TL
Always Right?
BASED ONTRUE STORIES
Architect/TL
• Unipersonal decision maker and
point of control
Architect/TL
• Push for specific
technical solution
without getting into the
essence of the problem
Architect/TL
• Push for specific
estimates for particular
task/entire team
Architect/TL
• Absence of key technical decision
maker
PM/TL
• Manipulation with scope, quality and
definition of done
PM/TL
• Resource-driven development
Resistance
• Remain professional
• Use common sense
• Start conversation but play safe
• Build trust via transparency & delivery
• Remember effect captainitis
Pluralistic Ignorance
Phenomenon
Pluralistic Ignorance
Phenomenon
Since nobody is concerned,
nothing is wrong
Pluralistic Ignorance
Phenomenon
Are Your Colleagues
Always Right?
BASED ONTRUE STORIES
Engineer
• Missed important feature or
a critical bug
Engineer
Engineer
• Regression test suite always fails
Engineer
• Long running feature branches
Engineer
• Unjustified criticism of the customer
Resistance
• Remain professional and be objective
• Start conversation
• Share your knowledge
• Lead by example
• Remember pluralistic ignorance
phenomenon
What is XP
in a worst case?
WHEN ANTI-VALUES
ARETAKENTO "EXTREME" LEVELS
Anti-Values of XP
• Suppression
• Complexity
• Silence
• Neglection
• Fear
Lead to lack of motivation
Anti-Values of XP
Resistance
• Remain true to yourself and
your own standards
• Don’t lose your motivation
• Make your own reality
• Do your job or do your job
Q&A?
THANKYOU!

Mais conteúdo relacionado

Destaque

Morning at Lohika 2nd anniversary
Morning at Lohika 2nd anniversaryMorning at Lohika 2nd anniversary
Morning at Lohika 2nd anniversaryTaras Matyashovsky
 
Morning at Lohika 1st anniversary
Morning at Lohika 1st anniversaryMorning at Lohika 1st anniversary
Morning at Lohika 1st anniversaryTaras Matyashovsky
 
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»Viktor Gamov
 
Creating your own private Download Center with Bintray
Creating your own private Download Center with Bintray Creating your own private Download Center with Bintray
Creating your own private Download Center with Bintray Baruch Sadogursky
 
Functional UI testing of Adobe Flex RIA
Functional UI testing of Adobe Flex RIAFunctional UI testing of Adobe Flex RIA
Functional UI testing of Adobe Flex RIAViktor Gamov
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersViktor Gamov
 
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...Baruch Sadogursky
 
Java 8 Puzzlers [as presented at OSCON 2016]
Java 8 Puzzlers [as presented at  OSCON 2016]Java 8 Puzzlers [as presented at  OSCON 2016]
Java 8 Puzzlers [as presented at OSCON 2016]Baruch Sadogursky
 
Spring Data: New approach to persistence
Spring Data: New approach to persistenceSpring Data: New approach to persistence
Spring Data: New approach to persistenceOleksiy Rezchykov
 
Testing Flex RIAs for NJ Flex user group
Testing Flex RIAs for NJ Flex user groupTesting Flex RIAs for NJ Flex user group
Testing Flex RIAs for NJ Flex user groupViktor Gamov
 
Couchbase Sydney meetup #1 Couchbase Architecture and Scalability
Couchbase Sydney meetup #1    Couchbase Architecture and ScalabilityCouchbase Sydney meetup #1    Couchbase Architecture and Scalability
Couchbase Sydney meetup #1 Couchbase Architecture and ScalabilityKarthik Babu Sekar
 
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017Baruch Sadogursky
 
Javaeeconf 2016 how to cook apache kafka with camel and spring boot
Javaeeconf 2016 how to cook apache kafka with camel and spring bootJavaeeconf 2016 how to cook apache kafka with camel and spring boot
Javaeeconf 2016 how to cook apache kafka with camel and spring bootIvan Vasyliev
 
Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...
Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...
Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...Baruch Sadogursky
 
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...Baruch Sadogursky
 
The Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service StoryboardThe Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service StoryboardChristoph Engelbert
 
Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017Baruch Sadogursky
 
Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017
Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017
Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017Baruch Sadogursky
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Oliver Gierke
 

Destaque (20)

Morning at Lohika 2nd anniversary
Morning at Lohika 2nd anniversaryMorning at Lohika 2nd anniversary
Morning at Lohika 2nd anniversary
 
Morning at Lohika 1st anniversary
Morning at Lohika 1st anniversaryMorning at Lohika 1st anniversary
Morning at Lohika 1st anniversary
 
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
 
Creating your own private Download Center with Bintray
Creating your own private Download Center with Bintray Creating your own private Download Center with Bintray
Creating your own private Download Center with Bintray
 
Functional UI testing of Adobe Flex RIA
Functional UI testing of Adobe Flex RIAFunctional UI testing of Adobe Flex RIA
Functional UI testing of Adobe Flex RIA
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
 
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
 
Java 8 Puzzlers [as presented at OSCON 2016]
Java 8 Puzzlers [as presented at  OSCON 2016]Java 8 Puzzlers [as presented at  OSCON 2016]
Java 8 Puzzlers [as presented at OSCON 2016]
 
Spring Data: New approach to persistence
Spring Data: New approach to persistenceSpring Data: New approach to persistence
Spring Data: New approach to persistence
 
Testing Flex RIAs for NJ Flex user group
Testing Flex RIAs for NJ Flex user groupTesting Flex RIAs for NJ Flex user group
Testing Flex RIAs for NJ Flex user group
 
Couchbase Sydney meetup #1 Couchbase Architecture and Scalability
Couchbase Sydney meetup #1    Couchbase Architecture and ScalabilityCouchbase Sydney meetup #1    Couchbase Architecture and Scalability
Couchbase Sydney meetup #1 Couchbase Architecture and Scalability
 
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017
 
Javaeeconf 2016 how to cook apache kafka with camel and spring boot
Javaeeconf 2016 how to cook apache kafka with camel and spring bootJavaeeconf 2016 how to cook apache kafka with camel and spring boot
Javaeeconf 2016 how to cook apache kafka with camel and spring boot
 
Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...
Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...
Patterns and antipatterns in Docker image lifecycle as was presented at Oracl...
 
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
Patterns and antipatterns in Docker image lifecycle as was presented at Scale...
 
The Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service StoryboardThe Delivery Hero - A Simpsons As A Service Storyboard
The Delivery Hero - A Simpsons As A Service Storyboard
 
Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017
 
Boot in Production
Boot in ProductionBoot in Production
Boot in Production
 
Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017
Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017
Java Puzzlers NG S02: Down the Rabbit Hole as presented at Devoxx US 2017
 
Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!Data access 2.0? Please welcome: Spring Data!
Data access 2.0? Please welcome: Spring Data!
 

Semelhante a Confession of an Engineer: Overcoming Anti-Values in Extreme Programming

Evaluating Blockchain Companies
Evaluating Blockchain CompaniesEvaluating Blockchain Companies
Evaluating Blockchain CompaniesMike Slinn
 
Working with Engineering
Working with EngineeringWorking with Engineering
Working with EngineeringSVPMA
 
WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...
WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...
WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...Career Communications Group
 
Should the CTO be coding?
Should the CTO be coding?Should the CTO be coding?
Should the CTO be coding?JoshuaHoffman32
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 
Leadership and Product Strategy
Leadership and Product StrategyLeadership and Product Strategy
Leadership and Product StrategyJohn Carter
 
Strategy Leadership and Product Portfolio Management
Strategy Leadership and Product Portfolio ManagementStrategy Leadership and Product Portfolio Management
Strategy Leadership and Product Portfolio ManagementJohn Carter
 
Threat modeling from the trenches to the clouds
Threat modeling from the trenches to the cloudsThreat modeling from the trenches to the clouds
Threat modeling from the trenches to the cloudsPriyanka Aash
 
How to Use Artificial Intelligence by Microsoft Product Manager
 How to Use Artificial Intelligence by Microsoft Product Manager How to Use Artificial Intelligence by Microsoft Product Manager
How to Use Artificial Intelligence by Microsoft Product ManagerProduct School
 
Design Thinking in Smart Homes
Design Thinking in Smart HomesDesign Thinking in Smart Homes
Design Thinking in Smart HomesAnup Pande
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadBen Limmer
 
How to shine in a Tech DD
How to shine in a Tech DDHow to shine in a Tech DD
How to shine in a Tech DDChris Philipps
 
Tech Leads: What is it, do I want it and how to get there
Tech Leads: What is it, do I want it and how to get thereTech Leads: What is it, do I want it and how to get there
Tech Leads: What is it, do I want it and how to get thereYuval Kesten
 
Hidden sides of Code Review (MMM-2023)
Hidden sides of Code Review (MMM-2023)Hidden sides of Code Review (MMM-2023)
Hidden sides of Code Review (MMM-2023)Dmitrii Ivanov
 
Tinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical CommunicatorTinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical CommunicatorBeth Agnew
 
Technical Leadership
Technical LeadershipTechnical Leadership
Technical LeadershipAyush Agarwal
 
Security and DevOps Overview
Security and DevOps OverviewSecurity and DevOps Overview
Security and DevOps OverviewAdrian Sanabria
 
ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...
ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...
ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...Engineers Australia
 

Semelhante a Confession of an Engineer: Overcoming Anti-Values in Extreme Programming (20)

Lecture 03
Lecture 03Lecture 03
Lecture 03
 
Evaluating Blockchain Companies
Evaluating Blockchain CompaniesEvaluating Blockchain Companies
Evaluating Blockchain Companies
 
Working with Engineering
Working with EngineeringWorking with Engineering
Working with Engineering
 
WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...
WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...
WOC2020 The Skills to Master Growth: High Impact Solutions and Technology for...
 
Should the CTO be coding?
Should the CTO be coding?Should the CTO be coding?
Should the CTO be coding?
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 
Leadership and Product Strategy
Leadership and Product StrategyLeadership and Product Strategy
Leadership and Product Strategy
 
Strategy Leadership and Product Portfolio Management
Strategy Leadership and Product Portfolio ManagementStrategy Leadership and Product Portfolio Management
Strategy Leadership and Product Portfolio Management
 
Threat modeling from the trenches to the clouds
Threat modeling from the trenches to the cloudsThreat modeling from the trenches to the clouds
Threat modeling from the trenches to the clouds
 
How to Use Artificial Intelligence by Microsoft Product Manager
 How to Use Artificial Intelligence by Microsoft Product Manager How to Use Artificial Intelligence by Microsoft Product Manager
How to Use Artificial Intelligence by Microsoft Product Manager
 
Design Thinking in Smart Homes
Design Thinking in Smart HomesDesign Thinking in Smart Homes
Design Thinking in Smart Homes
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech Lead
 
How to shine in a Tech DD
How to shine in a Tech DDHow to shine in a Tech DD
How to shine in a Tech DD
 
Tech Leads: What is it, do I want it and how to get there
Tech Leads: What is it, do I want it and how to get thereTech Leads: What is it, do I want it and how to get there
Tech Leads: What is it, do I want it and how to get there
 
Hidden sides of Code Review (MMM-2023)
Hidden sides of Code Review (MMM-2023)Hidden sides of Code Review (MMM-2023)
Hidden sides of Code Review (MMM-2023)
 
Tinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical CommunicatorTinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
 
Tech diligence
Tech diligenceTech diligence
Tech diligence
 
Technical Leadership
Technical LeadershipTechnical Leadership
Technical Leadership
 
Security and DevOps Overview
Security and DevOps OverviewSecurity and DevOps Overview
Security and DevOps Overview
 
ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...
ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...
ICWES15 - Making the Move or Keeping the Connection? Engineering Women as Man...
 

Mais de Taras Matyashovsky

Distinguish Pop from Heavy Metal using Apache Spark MLlib
Distinguish Pop from Heavy Metal using Apache Spark MLlibDistinguish Pop from Heavy Metal using Apache Spark MLlib
Distinguish Pop from Heavy Metal using Apache Spark MLlibTaras Matyashovsky
 
Introduction to ML with Apache Spark MLlib
Introduction to ML with Apache Spark MLlibIntroduction to ML with Apache Spark MLlib
Introduction to ML with Apache Spark MLlibTaras Matyashovsky
 
Influence. The Psychology of Persuasion (in IT)
Influence. The Psychology of Persuasion (in IT)Influence. The Psychology of Persuasion (in IT)
Influence. The Psychology of Persuasion (in IT)Taras Matyashovsky
 
JEEConf 2015 - Introduction to real-time big data with Apache Spark
JEEConf 2015 - Introduction to real-time big data with Apache SparkJEEConf 2015 - Introduction to real-time big data with Apache Spark
JEEConf 2015 - Introduction to real-time big data with Apache SparkTaras Matyashovsky
 
Introduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkIntroduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkTaras Matyashovsky
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic applicationTaras Matyashovsky
 
Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using HazelcastTaras Matyashovsky
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 

Mais de Taras Matyashovsky (10)

Morning 3 anniversary
Morning 3 anniversaryMorning 3 anniversary
Morning 3 anniversary
 
Distinguish Pop from Heavy Metal using Apache Spark MLlib
Distinguish Pop from Heavy Metal using Apache Spark MLlibDistinguish Pop from Heavy Metal using Apache Spark MLlib
Distinguish Pop from Heavy Metal using Apache Spark MLlib
 
Introduction to ML with Apache Spark MLlib
Introduction to ML with Apache Spark MLlibIntroduction to ML with Apache Spark MLlib
Introduction to ML with Apache Spark MLlib
 
Influence. The Psychology of Persuasion (in IT)
Influence. The Psychology of Persuasion (in IT)Influence. The Psychology of Persuasion (in IT)
Influence. The Psychology of Persuasion (in IT)
 
JEEConf 2015 - Introduction to real-time big data with Apache Spark
JEEConf 2015 - Introduction to real-time big data with Apache SparkJEEConf 2015 - Introduction to real-time big data with Apache Spark
JEEConf 2015 - Introduction to real-time big data with Apache Spark
 
Introduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkIntroduction to real time big data with Apache Spark
Introduction to real time big data with Apache Spark
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
 
Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using Hazelcast
 
Morning at Lohika
Morning at LohikaMorning at Lohika
Morning at Lohika
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 

Último

Solving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.pptSolving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.pptJasonTagapanGulla
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - GuideGOPINATHS437943
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating SystemRashmi Bhat
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptMadan Karki
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadaditya806802
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxKartikeyaDwivedi3
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...Chandu841456
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm Systemirfanmechengr
 
Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHC Sai Kiran
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionMebane Rash
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxVelmuruganTECE
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingBootNeck1
 

Último (20)

Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
Solving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.pptSolving The Right Triangles PowerPoint 2.ppt
Solving The Right Triangles PowerPoint 2.ppt
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
Transport layer issues and challenges - Guide
Transport layer issues and challenges - GuideTransport layer issues and challenges - Guide
Transport layer issues and challenges - Guide
 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating System
 
Indian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.pptIndian Dairy Industry Present Status and.ppt
Indian Dairy Industry Present Status and.ppt
 
home automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasadhome automation using Arduino by Aditya Prasad
home automation using Arduino by Aditya Prasad
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptx
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
POWER SYSTEMS-1 Complete notes examples
POWER SYSTEMS-1 Complete notes  examplesPOWER SYSTEMS-1 Complete notes  examples
POWER SYSTEMS-1 Complete notes examples
 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm System
 
Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECH
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of Action
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
 
Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptx
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
 

Confession of an Engineer: Overcoming Anti-Values in Extreme Programming

Notas do Editor

  1. Люди говорять XP – і відразу згадують саме інженерні практики
  2. Проте книга Кента Бека не тільки про це
  3. Ще перед вивченням практик Кент Бек говорить про важливість існування спільних цінностей, всередині команди, збоку менеджера, замовника, навіть коду, які б показували нам, що ми рухаємося в правильному напрямку. Комунікація – як всередині команди, так із менеджером та замовником, уміння говорити про важливі речі, не замовчувати, уміння ставити правильні питання колегам, менеджеру, замовнику і навпаки. XP змушує нас комунікувати через відповідні практики: unit testing, pair programming, task estimation. Простота – це уміння зробити просту річ сьогодні і витратити більше часу завтра, щоб покращити її, замість того, щоб зробити надзвичайну складну річ сьогодні, якою завтра не будуть в повній мірі користуватись. Зворотній зв’язок – більщість людей думає про зворотній зв’язок від замовника чи менеджера, але це в основному про зворотінй зв’язок від самої аплікації. Час зворотнього зв’язку теж може різнитися – від швидкого через юніт тести, до довшого через user stories чи functional tests. Повага – до членів команди, до замовника і що найголовніше до самої аплікації, її коду. Мужність (сміливість) – здатність визнати неправильне технічне рішення, неправильну архітектуру чи дизайн компоненти, сміливість викинути код, без якого колись здавалось аплікація жити не зможе, уміння говорити правду про прогрес і естімейти. Уміння адаптуватись і змінюватись, коли потрібно.
  4. Коли біль, абсурд, маразм теж можуть бути доведені до екстремального рівня
  5. Ми будемо говорити про реальні негативні випадки з життя з точки зору 3 ключових ролей – замовника, тім/тех ліда/ПМ/архітекта та звичайного члена команди – інженера.
  6. Для пояснення поведінки людей в деяких випадках варто звернутись до психології, адже всі ми люди в кінці кінців. Мені дуже подобається книга Роберта Чалдіні «Психологія Впливу», у якій він описав найбільш популярні методи впливу одних людей на інших.
  7. принцип взаємного обміну принцип послідовності принцип соціального доказу принцип прихильності принцип авторитету принцип дефіциту У мене є окрема презентація, що детально описує їй всі, проте під час цієї доповіді ми згадаємо тільки ті, які релевантні до наших прикладів і історій.
  8. Люди відчувають почуття обов’язку або зобов'язання до людей, наділених авторитетом. У нас глибоко вкоренилася необхідность покори авторитетам. Приклад з тестом на пам’ять і електричним зарядом, якщо буде час.
  9. Job title, uniform, status, height, attributes, etc. can lend an air of authority and can persuade us to accept what these people say. Remove element of surprise and ask yourself – is this authority truly an expert? Seek for the authority’s credentials and the relevance of those credentials to the topic at hand
  10. Приклади в ІТ (умовно заберіть всі зовнішні атрибути авторитету і задайте кілька питань): чи той колега, який Вас так люто критикує є хоча б авторитетом у цій сфері? чи архітект є дійсно експертом в тій області, в якій він дає поради? Скільки в нього є успішних рішень взагалі і базованих на цих технологіях зокрема? чи Ваш менеджер дійсно розбирається в базових основах менеджменту чи це просто титул? естімейти коммітменти зниження ризиків процеси і практики Чи Ваш замовник є дійсно доменним експертом для продукту, що розробляється Вами, і чи його вимогам таки треба сліпо слідувати?
  11. CEO/CTO мають іншу роль, відповідальність, skill set, що не сумісний з суто технічною позицією. Дуже часто це призводить до внутрішніх конфліктів, проблем якості, підтримки продукту і до інших фатальних наслідків.
  12. Нав’язування конкретного фреймворка/тула без розбирання в суті проблеми: RDBMS vs. Impala/Splice Machine/Apache Phoenix (100m records) Impala - open source massively parallel processing (MPP) SQL query engine for data stored in a computer cluster running Apache Hadoop. Impala provides low latency and high concurrency for BI/analytic queries on Hadoop (not delivered by batch frameworks such as Apache Hive). Impala also scales linearly, even in multitenant environments. Apache Phoenix is a relational database layer over HBase delivered as a client-embedded JDBC driver targeting low latency queries over HBase data. Apache Phoenix takes your SQL query, compiles it into a series of HBase scans, and orchestrates the running of those scans to produce regular JDBC result sets. Splice Machine exposes a full ANSI SQL query facility for HBase, along with support for indices, database triggers, and other data management essentials. It's ACID-compliant, too. Neo4j vs. Apache Spark Gridgain vs. Apache Spark Etc.
  13. Resume-driven development: Коли замовник хоче брати в проект всі останні тули, технології, підходи до архітектури, або те, що юзають інші відомі компанії, навіть якщо це маловідомі тули. LinkedIn Norbert - is a library that provides easy cluster management and workload distribution. It is implemented in Scala. It helps to create a highly scalable architecture capable of handling heavy traffic. Microservices architecture (причому від невідомих компаній) Airbnb SmartStack - is an automated service discovery and registration framework. It makes the lives of engineers easier by transparently handling creation, deletion, failure, and maintenance work of the machines running code within your organization. Predictive analytics based on Spark, R, etc. Etc.
  14. перестрахуватись: наприклад в тих кейсах, що були в мене - додати логінг з усіх сервісів, подивитись реальний перформанс, юзати профайлінг і так далі, зрозуміти чи реальна проблема саме в storage чи в обробці результатів, кожеш раз питати себе «чому так?» пам’ятати про принцип авторитету і давати йому відсіч активності можуть бути як чисто технічні, так і політичні мислити глобально, намагатись зрозуміти реальні причини рішення керівництва, наводити контраргументи по реальним причинам
  15. Часто очевидна помилка капітана не виправляється іншими членами команди, що призводить до краху. Схоже, що, незважаючи на очевидну особисту значимість питань, пов'язаних з управлінням літаком, члени команди використовували правило-стереотип «Якщо так говорить фахівець, це має бути вірно», не звертаючи уваги на згубну помилку капітана.
  16. Приклади в ІТ очевидні: на помилки найдосвідченіших розробників в команді ніхто не зважає на помилки тім ліда/менеджера ніхто не зважає І що найголовніше, на помилки самого замовника ніхто не зважає
  17. Migration Tool в Marktplaats - чуть не призвело до трагедії Marktplaats - the Netherlands’ #1 classifieds site Most popular e-commerce site in the Netherlands — reaches 74 percent of the Dutch online population Мігрували всі оголошення на нову пакетну пропозицію. Головний архітект не давав нам почати роботи на тулом для міграції, бо вважав це елементарною роботою. В кінці кінців сам тул для міграції став незалежною апліікацією, що писалася з перервами 4 місяці і мала купу бізнес логіки, а також унікальних edge cases. Хоча сам архітект називав це 2 годинною роботою – простий Perl script. Перша версія ранилася ~8 годин, що буо неприпустимо. Далі ми покращували версію, яка ранилася в продакшені 3 годин. І працювали над збереженням гарних результатів роботи в лог і окрему таблицю. Кількість промігрованих оголошень – 50к+, відгуків 250к+ Також на базі цього був написаний тул, що мігрував неактивні оголошення після релізу. І якби нашого тула не було б, то могла б трапитись трагедія. Кількість промігрованих неактивних оголошень – 200к+
  18. Треба замінити Infinispan на Hazelcast без чітко сформульованої причини. Мені було виділено на це кілька днів, що виявилось нереально мало. Написав спільний контекст, можливість зробити будь-який кеш на базі Infinspan чи Hazelcast за допомогою простої проперті і так далі. Під час імплементації я виявив закоментовані завалені тести, а після мого коміту виявились завалені functional tests, так як один з кешів не був distributed насправді. Елементарна на перший погляд задача показала проблеми в тестах і в реальному використанні кешу. Second level cache для Hibernate - що було сказано, і в чому була реальна проблема - як я читав про second level cache, думав прикручувати, потів включився gut feeling, дебажив, проблема з фільтром на статичні ресурси, фільтром. який вимагав вибірку юзера з бази.
  19. Migration Tool – just 2 hours of work – simple Perl script. Тул писався кожен тиждень по пару годин, дуже багато часу зайняло вияснення requirements, індивідуальної обробки кожного edge case і так далі. Hazelcast - trivial task - just change bean in the context, замість Infinispan bean заюзай Hazelcast bean. Реально таска зайняла 2-3 тижні з тестами як unit, так і functional.
  20. відсутність глобального technological vision на проекті – нема нормальної deployment diagram, нема розуміння який сервіс з яким спілкується, в яких сервісах юзається hornetq, хто реально пише/читає з якої бази і так далі. неконтрольованість глобальних технічних рішень нема key technical decision maker, кожен з сініор девелоперів робить свій resume driven development запрошення сторонніх консультантів за великі гроші як варіант виходу із ситуації архітектурні мітинги по кілька годин в тиждень, просто щоб зрозуміти, що відбувається з аплікацією
  21. добавлення нового великого функціоналу в проестімований scope без зміни дат заниження стандартів якості, код без юніт/інтеграційних тестів льється в мастер під тиском зверху – просто треба запушати чуваки
  22. Гра слів з поганими результатами – як результат поняття respect з XP нівелюється. Розповісти як я їх почав теж називати ресурсами і як їм було неприємно це чути.
  23. перестрахуватись, розбиратись в суті проблеми, задавати собі кілька питань «чому так?» перед тим як братись за якусь технічну задачу, де є чітко описане технічне рішення пам’ятати про ефект капітанства і давати йому відсіч
  24. Феномен плюралістичного невігластва Situation in which a majority of group members privately reject a norm, but incorrectly assume that most others accept it, and therefore go along with it Розуміння суті цього феномена допомагає пояснити причину одного поширеного негативного явища - нездатності великого числа сторонніх спостерігачів надати допомогу жертвам, які надзвичайно її потребують. Pluralistic ignorance may help to explain the bystander effect. If no-one acts, onlookers may believe others believe action is incorrect, and may therefore themselves refrain from acting. This is also described as "no one believes, but everyone thinks that everyone believes." In short, pluralistic ignorance is a bias about a social group, held by a social group. With several potential helpers around, the personal responsibility of each individual is reduced social evidence
  25. Всі бачать один і той самий код, проте ніхто не задасть просте питання – чому у нас відбувається саме так? Що це за дивний код? Magic numbers in the code, 42?
  26. Build Failed - nobody cares - as everybody works in their own long running branches
  27. As a result it is not possible to say if new feature did not introduce regression in comparison to master So we sometimes compare stability of features by comparing quantity (not even list to list) of failed tests in regression suite
  28. Згадати найбільші маразми: Фічі тривалістю рік День/два коли всі бренчі підтягували зміни з мастеру замість того, щоб кодити Люди, які розвалювали спірну логіку, не знаючи що ми її уже змінили і так далі Фічі, які уже нікому то і не потрібні
  29. MP і приклад з точки зору UX, коли всі девелопери казали як має бути краще
  30. Приклад з моїм рефакторингом статичних методів, покриття тестами і так далі Створюйте атмосферу, де можна задавати будь-яке питання, навіть дуже абсурдне
  31. Багато хто думає, що найгірший варіант XP це відсутність 13-ти практик. Я вважаю, що найгірше – це відсутність цінностей або ще гірше – наявність анти цінностей
  32. Замовчування замість комунікації - communication Складність замість простоти - simplicity Тишина від людей/тестів/продукту замість зворотнього звязку - feedback Зневага замість поваги - respect Страх замість мужності щось змінити - courage І як результат втрата мотивації