SlideShare a Scribd company logo
1 of 29
How to Think Smarter
about Software
Development
Nilanjan Bhattacharya
Counterfactuals
What scientific concept
would improve our
cognitive toolkit?Edge.org is a website where some of the most renowned
intellectuals discuss ideas and express opinions.
Every year, the Edge, asks a question which is answered
by a large number of leaders in various scientific fields.
The question in 2011 was - What scientific concept would
improve everybodyā€˜s cognitive toolkit?
There were 166 responses from eminent thinkers.
All the responses are available online as well as in a
printed book
In this presentation I have listed the concepts which are
most relevant to software development.
Presentation format
I have included a link to the concepts, followed by
brief commentary on the relevance to software
development.
You must read each link before my commentary.
I recommend you take printouts of the web pages
and highlight relevant portions.
Some of these articles are heavy reading. If you wish
you can read one or more every day.
When reading the links, try to put aside any
preconceptions you might have about software
development.
Wicked Problems
Wicked Problems
Creating software can be challenging.
Software development is definitely a wicked
problem.
Developers and testers are good at solving
difficult problems.
Wicked problems require a different mindset. I
like to think that a smart developer has already
tried to solve a wicked problem. This makes
testing even more wicked.
The Name Game
The Name Game
The best example of the ā€˜Name Gameā€™ is the word
ā€˜testā€™ (related to software).
There is no one in the world (including grandma) who
would admit to not knowing the meaning of the word
ā€˜testā€™.
In reality the word ā€˜testā€™ is highly misunderstood (in
the context of software).
It is important to understand what ā€˜testā€™ really means.
Another word which is a victim of the ā€˜Name Gameā€™ is
ā€˜agileā€™.
Experimentation
Experimentation
As in real life, when you are trying to determine what works
(or may not work), you need to experiment.
The agile movement has created practices which make
software increments available in a few days.
There is no reason not to start experimenting immediately
and all the time.
We would be better off if we realized that ā€˜user storiesā€™ (as
used in agile) are experiments.
Many incorrectly view experiments as synonymous with
ā€˜frivolousā€™ as opposed to deliberate. Later concepts dispel
that idea.
Gedankenexperiment
Gedankenexperiment
In the case of software, unlike physics, you can
conduct physical experiments (on the software).
However, the gedankenexperiment is a great
concept to stimulate thinking and can be an
alternative or precursor to physical experiments.
Itā€˜s another alternative to the heinous word ā€˜testā€™.
The Double-blind control
experiment
Double-blind control
experiments
Itā€˜s worth understanding double-blind control
experiments from Wikipedia
A control experiment is much more specific and
rigorous compared to the previous two concepts
Many online companies conduct A/B testing which is
a controlled experiment
Itā€™s more powerful to understand software
development as a series of experiments
Instead of solely relying on customers you can use
customer support, developers, testers or other
proxies
Cummulative Error
Cummulative Error
Software development itself is an elaborate
game of ā€˜postmanā€™
With agile practices, the importance of verbal
communication is emphasized as opposed to
ā€˜messagesā€™ inscribed on paper.
Many engineers still struggle with this cognitive
fallacy
ā€œThe illusion of Platonic information is
confounding because it can easily defeat our
natural skeptical impulsesā€
The virtues of negative
results
The virtues of negative
results
Agile retrospectives result in learning from failure
We can go a step further and intentionally make
software fail in order to understand flaws in
design
You can show something is
definitely dangerous, but
not definitely safe
You can show something is
definitely dangerousā€¦.
Since you cannot prove that the software being
developed will cause no harm (to users), you
continue to find ways in which it can cause harm
(defects).
Tester redeemed
Uncertainty
Uncertainty
Uncertainty is a virtue when dealing with
complex systems, as long as it is quantified
With complex systems there is limited value in
pursuing precision as a goal in itself.
It is more valuable to qualify uncertainty.
When testing software you can qualify
uncertainty by describing what has been done
and how you measure coverage
The uselessness of
certainty
The uselessness of
certainty
We donā€™t need ā€˜scientifically provenā€™
We need enough information which will allow us
to make decisions and act.
Instead of Tayloresque management adopted a
personal, direct approach based on valuing
people and their skills and personal needs
In traditional testing, quality and management,
the word ā€˜scientificā€™ still shows up as the
preferred approach
The uselessness of
certainty
ā€˜Scientificā€™ implies well documented and detailed,
and engineers who follow instructions
Even though we donā€™t demand following
instructions, the bigger point is that there is no
value in certainty
Even if the software doesnā€™t crash when
connected to eight servers, you could be proven
wrong when the environment changes
The key challenge in software development is to
correctly qualify your level of uncertainty.
Scienceā€™s methods arenā€™t
just for science
Scienceā€™s methods arenā€™t
just for science
Science is not about hard truths
ā€˜Science is a way of thinking, of making better
approximations of how things are.ā€™
Software testers can use scientific methods such
as A/B testing
Of course, this isnā€™t about ensuring that
customers see value ā€“ itā€™s more about
quantifying the uncertainty about risks to that
value
Scienceā€™s methods arenā€™t
just for science
Scientific methods donā€˜t need to include
conducting experiments.
They could be activities like a ā€˜journal clubā€™ or
applying different ways of thinking such as
vertical, horizontal, or learning to take meaningful
notes when observing software behavior.
Q.E.D. Moments
Q.E.D. Moments
You need to experience the divine moment of
proving a logical or mathematical problem
When developing and testing software, i.e.,
determining value and what might go wrong, you
can conduct investigations to validate your
hypothesis.

More Related Content

What's hot

Exploratory Testing in an Agile Context
Exploratory Testing in an Agile ContextExploratory Testing in an Agile Context
Exploratory Testing in an Agile ContextElisabeth Hendrickson
Ā 
Shrini Kulkarni - Software Metrics - So Simple, Yet So Dangerous
Shrini Kulkarni -  Software Metrics - So Simple, Yet So Dangerous Shrini Kulkarni -  Software Metrics - So Simple, Yet So Dangerous
Shrini Kulkarni - Software Metrics - So Simple, Yet So Dangerous TEST Huddle
Ā 
Santa Barbara Agile: Exploratory Testing Explained and Experienced
Santa Barbara Agile: Exploratory Testing Explained and ExperiencedSanta Barbara Agile: Exploratory Testing Explained and Experienced
Santa Barbara Agile: Exploratory Testing Explained and ExperiencedMaaret PyhƤjƤrvi
Ā 
Software testing _mod_9
Software testing _mod_9Software testing _mod_9
Software testing _mod_9hellosashi
Ā 
Exploratory Testing in Practice
Exploratory Testing in PracticeExploratory Testing in Practice
Exploratory Testing in PracticeElisabeth Hendrickson
Ā 
Software engineering 22 error detection and debugging
Software engineering 22 error detection and debuggingSoftware engineering 22 error detection and debugging
Software engineering 22 error detection and debuggingVaibhav Khanna
Ā 
Exploratory testing workshop
Exploratory testing workshopExploratory testing workshop
Exploratory testing workshopAnne-Marie Charrett
Ā 
Let's test
Let's testLet's test
Let's testkveronicka
Ā 
Introduction to Exploratory Testing
Introduction to Exploratory TestingIntroduction to Exploratory Testing
Introduction to Exploratory TestingCodrin Pruteanu
Ā 
David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010
David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010
David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010TEST Huddle
Ā 
Imrul: Context Driven Testing
Imrul: Context Driven TestingImrul: Context Driven Testing
Imrul: Context Driven TestingSQABD
Ā 
Julian Harty - Alternatives To Testing - EuroSTAR 2010
Julian Harty - Alternatives To Testing - EuroSTAR 2010Julian Harty - Alternatives To Testing - EuroSTAR 2010
Julian Harty - Alternatives To Testing - EuroSTAR 2010TEST Huddle
Ā 
Bug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutionsBug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutionsRIA RUI Society
Ā 
A Taste of Exploratory Testing
A Taste of Exploratory TestingA Taste of Exploratory Testing
A Taste of Exploratory TestingAnne-Marie Charrett
Ā 
Engineering Anti-Patterns @JQueryTO 2014
Engineering Anti-Patterns @JQueryTO 2014Engineering Anti-Patterns @JQueryTO 2014
Engineering Anti-Patterns @JQueryTO 2014Nahim Nasser
Ā 

What's hot (20)

Exploratory Testing in an Agile Context
Exploratory Testing in an Agile ContextExploratory Testing in an Agile Context
Exploratory Testing in an Agile Context
Ā 
Shrini Kulkarni - Software Metrics - So Simple, Yet So Dangerous
Shrini Kulkarni -  Software Metrics - So Simple, Yet So Dangerous Shrini Kulkarni -  Software Metrics - So Simple, Yet So Dangerous
Shrini Kulkarni - Software Metrics - So Simple, Yet So Dangerous
Ā 
Santa Barbara Agile: Exploratory Testing Explained and Experienced
Santa Barbara Agile: Exploratory Testing Explained and ExperiencedSanta Barbara Agile: Exploratory Testing Explained and Experienced
Santa Barbara Agile: Exploratory Testing Explained and Experienced
Ā 
Software testing _mod_9
Software testing _mod_9Software testing _mod_9
Software testing _mod_9
Ā 
Exploratory Testing in Practice
Exploratory Testing in PracticeExploratory Testing in Practice
Exploratory Testing in Practice
Ā 
Software engineering 22 error detection and debugging
Software engineering 22 error detection and debuggingSoftware engineering 22 error detection and debugging
Software engineering 22 error detection and debugging
Ā 
Testing for everyone
Testing for everyoneTesting for everyone
Testing for everyone
Ā 
[Hoang nguyen] The Psychology in Software Testing
[Hoang nguyen] The Psychology in Software Testing[Hoang nguyen] The Psychology in Software Testing
[Hoang nguyen] The Psychology in Software Testing
Ā 
Exploratory testing workshop
Exploratory testing workshopExploratory testing workshop
Exploratory testing workshop
Ā 
Let's test
Let's testLet's test
Let's test
Ā 
Introduction to Exploratory Testing
Introduction to Exploratory TestingIntroduction to Exploratory Testing
Introduction to Exploratory Testing
Ā 
David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010
David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010
David Hayman - Say What? Testing a Voice Avtivated System - EuroSTAR 2010
Ā 
[Paul Holland] Trends in Software Testing
[Paul Holland] Trends in Software Testing[Paul Holland] Trends in Software Testing
[Paul Holland] Trends in Software Testing
Ā 
Imrul: Context Driven Testing
Imrul: Context Driven TestingImrul: Context Driven Testing
Imrul: Context Driven Testing
Ā 
The Design and Evaluation of Beahvior Change Tech
The Design and Evaluation of Beahvior Change TechThe Design and Evaluation of Beahvior Change Tech
The Design and Evaluation of Beahvior Change Tech
Ā 
Julian Harty - Alternatives To Testing - EuroSTAR 2010
Julian Harty - Alternatives To Testing - EuroSTAR 2010Julian Harty - Alternatives To Testing - EuroSTAR 2010
Julian Harty - Alternatives To Testing - EuroSTAR 2010
Ā 
Bug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutionsBug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutions
Ā 
A Taste of Exploratory Testing
A Taste of Exploratory TestingA Taste of Exploratory Testing
A Taste of Exploratory Testing
Ā 
SAM
SAMSAM
SAM
Ā 
Engineering Anti-Patterns @JQueryTO 2014
Engineering Anti-Patterns @JQueryTO 2014Engineering Anti-Patterns @JQueryTO 2014
Engineering Anti-Patterns @JQueryTO 2014
Ā 

Similar to How to think smarter about software development

Approaches to unraveling a complex test problem
Approaches to unraveling a complex test problemApproaches to unraveling a complex test problem
Approaches to unraveling a complex test problemJohan Hoberg
Ā 
Testing trapeze-2014-april
Testing trapeze-2014-aprilTesting trapeze-2014-april
Testing trapeze-2014-aprilAnne-Marie Charrett
Ā 
Huib Schoots Testing in modern times - a story about Quality and Value - Test...
Huib Schoots Testing in modern times - a story about Quality and Value - Test...Huib Schoots Testing in modern times - a story about Quality and Value - Test...
Huib Schoots Testing in modern times - a story about Quality and Value - Test...FiSTB
Ā 
Foundations of software testing - ISTQB Certification.pdf
Foundations of software testing - ISTQB Certification.pdfFoundations of software testing - ISTQB Certification.pdf
Foundations of software testing - ISTQB Certification.pdfSaraj Hameed Sidiqi
Ā 
Understanding User Experience Workshop - Interlink Conference 2012
Understanding User Experience Workshop - Interlink Conference 2012Understanding User Experience Workshop - Interlink Conference 2012
Understanding User Experience Workshop - Interlink Conference 2012Lynne Polischuik
Ā 
Design for complexity
Design for complexityDesign for complexity
Design for complexityLextant
Ā 
Foundations Of Software Testing
Foundations Of Software TestingFoundations Of Software Testing
Foundations Of Software TestingTony Ennis
Ā 
Software Testing Foundation
Software Testing FoundationSoftware Testing Foundation
Software Testing Foundationalessandro100
Ā 
Systematic inventive thinking and game testing
Systematic inventive thinking and game testingSystematic inventive thinking and game testing
Systematic inventive thinking and game testingJohan Hoberg
Ā 
Lecture4 requirement engineering
Lecture4 requirement engineeringLecture4 requirement engineering
Lecture4 requirement engineeringShahid Riaz
Ā 
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013TEST Huddle
Ā 
How to do usability testing and eye tracking
How to do usability testing and eye trackingHow to do usability testing and eye tracking
How to do usability testing and eye trackingObjective Experience
Ā 
Usability--What is it?
Usability--What is it?Usability--What is it?
Usability--What is it?Ann Krause
Ā 
Software Testing As a Career Path
Software Testing As a Career PathSoftware Testing As a Career Path
Software Testing As a Career PathRock Interview
Ā 
You aren't your target market. - UX Research Basics
You aren't your target market. - UX Research BasicsYou aren't your target market. - UX Research Basics
You aren't your target market. - UX Research BasicsAngela Obias
Ā 
Democratizing Online Controlled Experiments at Booking.com
Democratizing Online Controlled Experiments at Booking.comDemocratizing Online Controlled Experiments at Booking.com
Democratizing Online Controlled Experiments at Booking.comLukas Vermeer
Ā 
Intro to user experience design
Intro to user experience designIntro to user experience design
Intro to user experience designyaluna
Ā 
Democratizing Online Controlled Experiments at Booking.com - Lukas Vermeer
Democratizing Online Controlled Experiments at Booking.com - Lukas VermeerDemocratizing Online Controlled Experiments at Booking.com - Lukas Vermeer
Democratizing Online Controlled Experiments at Booking.com - Lukas VermeerSavage Marketing
Ā 

Similar to How to think smarter about software development (20)

Approaches to unraveling a complex test problem
Approaches to unraveling a complex test problemApproaches to unraveling a complex test problem
Approaches to unraveling a complex test problem
Ā 
Testing trapeze-2014-april
Testing trapeze-2014-aprilTesting trapeze-2014-april
Testing trapeze-2014-april
Ā 
Huib Schoots Testing in modern times - a story about Quality and Value - Test...
Huib Schoots Testing in modern times - a story about Quality and Value - Test...Huib Schoots Testing in modern times - a story about Quality and Value - Test...
Huib Schoots Testing in modern times - a story about Quality and Value - Test...
Ā 
Foundations of software testing - ISTQB Certification.pdf
Foundations of software testing - ISTQB Certification.pdfFoundations of software testing - ISTQB Certification.pdf
Foundations of software testing - ISTQB Certification.pdf
Ā 
Understanding User Experience Workshop - Interlink Conference 2012
Understanding User Experience Workshop - Interlink Conference 2012Understanding User Experience Workshop - Interlink Conference 2012
Understanding User Experience Workshop - Interlink Conference 2012
Ā 
Design for complexity
Design for complexityDesign for complexity
Design for complexity
Ā 
Foundations Of Software Testing
Foundations Of Software TestingFoundations Of Software Testing
Foundations Of Software Testing
Ā 
Software Testing Foundation
Software Testing FoundationSoftware Testing Foundation
Software Testing Foundation
Ā 
Systematic inventive thinking and game testing
Systematic inventive thinking and game testingSystematic inventive thinking and game testing
Systematic inventive thinking and game testing
Ā 
QA is Broken, Fix it!
QA is Broken, Fix it!QA is Broken, Fix it!
QA is Broken, Fix it!
Ā 
Software Testing
Software TestingSoftware Testing
Software Testing
Ā 
Lecture4 requirement engineering
Lecture4 requirement engineeringLecture4 requirement engineering
Lecture4 requirement engineering
Ā 
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Graham Thomas - Software Testing Secrets We Dare Not Tell - EuroSTAR 2013
Ā 
How to do usability testing and eye tracking
How to do usability testing and eye trackingHow to do usability testing and eye tracking
How to do usability testing and eye tracking
Ā 
Usability--What is it?
Usability--What is it?Usability--What is it?
Usability--What is it?
Ā 
Software Testing As a Career Path
Software Testing As a Career PathSoftware Testing As a Career Path
Software Testing As a Career Path
Ā 
You aren't your target market. - UX Research Basics
You aren't your target market. - UX Research BasicsYou aren't your target market. - UX Research Basics
You aren't your target market. - UX Research Basics
Ā 
Democratizing Online Controlled Experiments at Booking.com
Democratizing Online Controlled Experiments at Booking.comDemocratizing Online Controlled Experiments at Booking.com
Democratizing Online Controlled Experiments at Booking.com
Ā 
Intro to user experience design
Intro to user experience designIntro to user experience design
Intro to user experience design
Ā 
Democratizing Online Controlled Experiments at Booking.com - Lukas Vermeer
Democratizing Online Controlled Experiments at Booking.com - Lukas VermeerDemocratizing Online Controlled Experiments at Booking.com - Lukas Vermeer
Democratizing Online Controlled Experiments at Booking.com - Lukas Vermeer
Ā 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
Ā 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
Ā 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
Ā 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
Ā 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
Ā 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
Ā 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
Ā 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
Ā 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
Ā 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
Ā 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
Ā 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
Ā 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
Ā 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
Ā 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
Ā 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
Ā 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
Ā 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 

Recently uploaded (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
Ā 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Ā 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Ā 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
Ā 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
Ā 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Ā 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
Ā 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Ā 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Ā 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
Ā 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Ā 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Ā 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Ā 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Ā 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Ā 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Ā 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
Ā 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 

How to think smarter about software development

  • 1. How to Think Smarter about Software Development Nilanjan Bhattacharya Counterfactuals
  • 2. What scientific concept would improve our cognitive toolkit?Edge.org is a website where some of the most renowned intellectuals discuss ideas and express opinions. Every year, the Edge, asks a question which is answered by a large number of leaders in various scientific fields. The question in 2011 was - What scientific concept would improve everybodyā€˜s cognitive toolkit? There were 166 responses from eminent thinkers. All the responses are available online as well as in a printed book In this presentation I have listed the concepts which are most relevant to software development.
  • 3. Presentation format I have included a link to the concepts, followed by brief commentary on the relevance to software development. You must read each link before my commentary. I recommend you take printouts of the web pages and highlight relevant portions. Some of these articles are heavy reading. If you wish you can read one or more every day. When reading the links, try to put aside any preconceptions you might have about software development.
  • 5. Wicked Problems Creating software can be challenging. Software development is definitely a wicked problem. Developers and testers are good at solving difficult problems. Wicked problems require a different mindset. I like to think that a smart developer has already tried to solve a wicked problem. This makes testing even more wicked.
  • 7. The Name Game The best example of the ā€˜Name Gameā€™ is the word ā€˜testā€™ (related to software). There is no one in the world (including grandma) who would admit to not knowing the meaning of the word ā€˜testā€™. In reality the word ā€˜testā€™ is highly misunderstood (in the context of software). It is important to understand what ā€˜testā€™ really means. Another word which is a victim of the ā€˜Name Gameā€™ is ā€˜agileā€™.
  • 9. Experimentation As in real life, when you are trying to determine what works (or may not work), you need to experiment. The agile movement has created practices which make software increments available in a few days. There is no reason not to start experimenting immediately and all the time. We would be better off if we realized that ā€˜user storiesā€™ (as used in agile) are experiments. Many incorrectly view experiments as synonymous with ā€˜frivolousā€™ as opposed to deliberate. Later concepts dispel that idea.
  • 11. Gedankenexperiment In the case of software, unlike physics, you can conduct physical experiments (on the software). However, the gedankenexperiment is a great concept to stimulate thinking and can be an alternative or precursor to physical experiments. Itā€˜s another alternative to the heinous word ā€˜testā€™.
  • 13. Double-blind control experiments Itā€˜s worth understanding double-blind control experiments from Wikipedia A control experiment is much more specific and rigorous compared to the previous two concepts Many online companies conduct A/B testing which is a controlled experiment Itā€™s more powerful to understand software development as a series of experiments Instead of solely relying on customers you can use customer support, developers, testers or other proxies
  • 15. Cummulative Error Software development itself is an elaborate game of ā€˜postmanā€™ With agile practices, the importance of verbal communication is emphasized as opposed to ā€˜messagesā€™ inscribed on paper. Many engineers still struggle with this cognitive fallacy ā€œThe illusion of Platonic information is confounding because it can easily defeat our natural skeptical impulsesā€
  • 16. The virtues of negative results
  • 17. The virtues of negative results Agile retrospectives result in learning from failure We can go a step further and intentionally make software fail in order to understand flaws in design
  • 18. You can show something is definitely dangerous, but not definitely safe
  • 19. You can show something is definitely dangerousā€¦. Since you cannot prove that the software being developed will cause no harm (to users), you continue to find ways in which it can cause harm (defects). Tester redeemed
  • 21. Uncertainty Uncertainty is a virtue when dealing with complex systems, as long as it is quantified With complex systems there is limited value in pursuing precision as a goal in itself. It is more valuable to qualify uncertainty. When testing software you can qualify uncertainty by describing what has been done and how you measure coverage
  • 23. The uselessness of certainty We donā€™t need ā€˜scientifically provenā€™ We need enough information which will allow us to make decisions and act. Instead of Tayloresque management adopted a personal, direct approach based on valuing people and their skills and personal needs In traditional testing, quality and management, the word ā€˜scientificā€™ still shows up as the preferred approach
  • 24. The uselessness of certainty ā€˜Scientificā€™ implies well documented and detailed, and engineers who follow instructions Even though we donā€™t demand following instructions, the bigger point is that there is no value in certainty Even if the software doesnā€™t crash when connected to eight servers, you could be proven wrong when the environment changes The key challenge in software development is to correctly qualify your level of uncertainty.
  • 26. Scienceā€™s methods arenā€™t just for science Science is not about hard truths ā€˜Science is a way of thinking, of making better approximations of how things are.ā€™ Software testers can use scientific methods such as A/B testing Of course, this isnā€™t about ensuring that customers see value ā€“ itā€™s more about quantifying the uncertainty about risks to that value
  • 27. Scienceā€™s methods arenā€™t just for science Scientific methods donā€˜t need to include conducting experiments. They could be activities like a ā€˜journal clubā€™ or applying different ways of thinking such as vertical, horizontal, or learning to take meaningful notes when observing software behavior.
  • 29. Q.E.D. Moments You need to experience the divine moment of proving a logical or mathematical problem When developing and testing software, i.e., determining value and what might go wrong, you can conduct investigations to validate your hypothesis.