SlideShare a Scribd company logo
1 of 34
Download to read offline
GPW 2013


          Konstruktive Paranoia
                    Vitaly Rudovich
                          Vit R
http://www.vit-r.com/Projects/ErrorLog/ConstructiveParanoia/
Background
●   20 years in IT: SW Dev , QA, RE, PM
●   C, Fortran, Java, Prolog, Tcl/Tk...
●   C++ SIL-4
    ●   Safety Integrity Level - 4
    ●   Probability of Failure per Hour 0.00000001
●   Shlaer-Mellor aka. xtUML
    ●   fair model-driven development, model check, model test
    ●   100% code generation from model
●   DOORS / DXL
    ●   What is the worst programming language you ever
        worked with?
                           Vit R, gpw2013,                   2
                         Konstruktive Paranoia‎
Why Perl?
●   Typical tasks of a consultant
    ●   This piece of ... code does not work.
    ●   We have some data. What does this data mean?
    ●   We have a problem.
●   Perl
    ●   CPAN
         –   Perl is CPAN
    ●   available and permitted
         –   Most big firms have some Perl version in their archives.
    ●   fast
    ●   highly plastic
                                 Vit R, gpw2013,                        3
                               Konstruktive Paranoia‎
How about good parts?
●   A dialog with a customer:
       –   This is a nice solution with recursion.
       –   What?
       –   OK. How about a "foreach" cycle?
●   This presentation describes how to cut the Perl wings
    off but keep flying.




                                Vit R, gpw2013,             4
                              Konstruktive Paranoia‎
Software Development as sculpting




●   We pretend to sculpt in stone, although we are making
    pottery. (or playing with plasticine)
●   Clay vs. stone
                         Vit R, gpw2013,                5
                       Konstruktive Paranoia‎
Proof




●   You have seen such software many times

                       Vit R, gpw2013,        6
                     Konstruktive Paranoia‎
The Legend of The Right Process
             ●   We pretend we build pyramids.
             ●   Waterfall, spiral, scrum, XP...
                 are similar: Our product can
                 only grow. Differences are only
                 in the ways of growth.
             ●   We pretend we cannot throw
                 anything away. We do not
                 reduce waste but deny it.




             Vit R, gpw2013,                       7
           Konstruktive Paranoia‎
The real life: How to save money,
             time and quality
●   Stop, find the errors and redesign.
●   Stop, find the errors and develop new version form
    scratch.
●   Stop, find the errors, recalculate budget, estimate
    profit and declare a failure.




                         Vit R, gpw2013,                  8
                       Konstruktive Paranoia‎
The real life: How to waste money
      and time and loose your hope
●   Dangerous sentences
       –   Anything we did is an investment.
       –   We are good, but something is probably not optimal.
       –   If we find and kill all the bugs, we succeed.
●   Zombie
       –   Our project is 90% ready.
       –   How long are you in this state?
       –   Third year




                               Vit R, gpw2013,                   9
                             Konstruktive Paranoia‎
Software project outcomes
●   Source code
●   Documentation
●   Knowledge
    ●   most valuable part
    ●   most ignored part
    ●   usually is not documented




                           Vit R, gpw2013,        10
                         Konstruktive Paranoia‎
Bugs vs. errors: Bugs
●   The process
    ●   find, catch, discover, remove, find the bugs created by
        bug removal, repeat
●   This is a MMORPG
    ●   Developers create the features.
    ●   Testers find the bugs.
    ●   Developers reclassify bugs into features.
    ●   Managers confirm the bugs being bugs and assign the
        bug removing tasks.
    ●   Developers claim they have no time; they create new
        features.
                            Vit R, gpw2013,                       11
                          Konstruktive Paranoia‎
Bugs vs. errors: Errors
●   The process
    ●   find
    ●   correct
    ●   learn
●   This is boring




                       Vit R, gpw2013,        12
                     Konstruktive Paranoia‎
The error Sources
●   User requirements
●   Management decisions
●   SW architecture
●   SW design
●   SW development
●   Libraries
●   User data
●   User commands
●   SW environment
●   ...
                      Vit R, gpw2013,        13
                    Konstruktive Paranoia‎
Paranoia
●   Anything can be wrong
●   "Can be" or "is"?
●   Welcome to the real world




                        Vit R, gpw2013,        14
                      Konstruktive Paranoia‎
Prevention
●   If you X, your code will be better.
●   paranoia mode on:
    ●   Why?
    ●   How do you measure the effects of X?
    ●   Does X have unintended consequences?
    ●   Is the cost of X less than the cost of the errors that it
        prevents?
●   If you X, you feel better.




                             Vit R, gpw2013,                        15
                           Konstruktive Paranoia‎
The silver bullets
●   It is impossible to add quality.
●   Tests, QA, Processes, Methods...
    ●   This is verification
    ●   You can verify against requirements
         –   Do we develop our product in a right way?
    ●   You cannot validate.
         –   Do we develop a right product?
●   "Industry proven" X
    ●   Maybe it contains or generates errors
    ●   Maybe it is not applicable for your conditions
    ●   Your implementation may be not correct
                                Vit R, gpw2013,          16
                              Konstruktive Paranoia‎
Solution
●   Measure and compare
    ●   Don't believe any statistics you don't make up yourself
●   Do not repeat errors
●   Do not hide errors
●   Be prepared
    ●   Do not hope you can create an error-free world
    ●   You can predict errors
    ●   You can reduce the cost of errors




                            Vit R, gpw2013,                       17
                          Konstruktive Paranoia‎
The cost of errors
●   Direct harm
●   Indirect harm
●   The error correction cost
    ●   can be reduced




                           Vit R, gpw2013,        18
                         Konstruktive Paranoia‎
The error correction processes
●   error detection
●   communication
●   search for the error sources
●   analysis of the error conditions
●   analysis of correct behavior
    ●   How it must be?
●   development
●   proof of the error correction



                            Vit R, gpw2013,        19
                          Konstruktive Paranoia‎
Error correction: highest cost
●   Communication
    ●   slow
    ●   inaccurate, erroneous, incomplete
    ●   harmful
●   Analysis
    ●   What?
    ●   Why?
    ●   What instead?
●   The "heaviest" process is the context load.


                           Vit R, gpw2013,        20
                         Konstruktive Paranoia‎
Errors: highest cost
●   Errors in requirements
    ●   Test with the real data.
    ●   Test in the real conditions.
●   Old errors are more expensive
    ●   Reduce the errors lifespan




                             Vit R, gpw2013,        21
                           Konstruktive Paranoia‎
Do not hide errors
●   <program state is correct> or die()
●   <data state is known> or die()
●   Do not believe in logs.
●   All unknown errors must stop execution.
●   Report errors on the appropriate level.




                         Vit R, gpw2013,        22
                       Konstruktive Paranoia‎
Comments (1)
●   A message in the bottle
●   Anything that is not in the source code will be lost,
    forgotten or ignored
●   Do not hide
    ●   your errors
    ●   alternatives
    ●   your assumptions
    ●   your knowledge




                             Vit R, gpw2013,                23
                           Konstruktive Paranoia‎
Comments (2)
●   If possible, comment out but not delete
●   Remove something only if it is necessary to remove
●   If you have something to say, say it
    ●   The most valuable comments by search for problems
        –   !!!
        –   ???
        –   OMG!
        –   F.CK!




                          Vit R, gpw2013,                   24
                        Konstruktive Paranoia‎
Custom diagnose module
●   project specific output
    ●   STDERR
    ●   dialog
    ●   socket
    ●   log file
    ●   CSV file
    ●   ...
●   project specific errors



                           Vit R, gpw2013,        25
                         Konstruktive Paranoia‎
Most frequent functions
●   set_debug_mode(); # 0 or 1
●   DBG(), LIFESIGN()
●   ASSERT(), ERROR(), WARN()
    ●   send high level information
    ●   why is the state or the data not correct
    ●   what assumption is not correct
    ●   describe what you know about the error conditions
●   DUMP_HASH_AS_JSON()
    ●   Json file 2 MB
    ●   Manuell verification
    ●   Perl script to check state
                             Vit R, gpw2013,                26
                           Konstruktive Paranoia‎
Negative filters
●   Preconditions
    ●   check: data, internal state, assumptions
●   Postconditions
    ●   check: end state, results, errors
●   Invariants
    ●   detect: infinite cycles, incorrect states
●   Anything that is not proved to be correct is suspicious




                             Vit R, gpw2013,                  27
                           Konstruktive Paranoia‎
Discover errors as soon as possible
●   Test your assumptions
●   Test your algorithms
●   Test before you move forward
●   Prove each step
●   die "OK";




                        Vit R, gpw2013,        28
                      Konstruktive Paranoia‎
Bulletproof against maintenance
●       Harvard management methodology wizards claim that
        the human resources quality is not important, if you
        have the right management process.
●       Be prepared.




    ●   Your software must be recoverable after all types of
        maintenance.

                            Vit R, gpw2013,                    29
                          Konstruktive Paranoia‎
Do not believe in interfaces
●   Software produce errors
●   Users produce errors
●   Errors can be creative
    ●   Number of employers
        –   "-3" (correction value for another table)
        –   "TBD" (manual user correction )
    ●   Date
        –   "2013-02-31" (the last Sunday of February. User calculations
            in Excel)
    ●   User Name
        –   "1@23F32" (XML export was wrong)
●   Crosscheck input values if possible
                                 Vit R, gpw2013,                           30
                               Konstruktive Paranoia‎
Talk to user
●   User is always right (but frequently dumb)
    ●   Developer:
        –   The output is garbage: each third record is wrong.
    ●   User:
        –   Why garbage? Two thirds of values are correct.
●   Users ignore errors
    ●   whenever they can




                                Vit R, gpw2013,                  31
                              Konstruktive Paranoia‎
Talk to user: Report to the
              appropriate level
●   Stop execution
●   Block the dialogs
●   Present the errors in a simple way
●   Deliver the error messages with results
●   Shout




                         Vit R, gpw2013,        32
                       Konstruktive Paranoia‎
Talk to user: Prevent unnecessary
              communication
●   Make your error descriptions user friendly
    ●   What is wrong?
    ●   Who is responsible?
    ●   How to correct?




                           Vit R, gpw2013,        33
                         Konstruktive Paranoia‎
Project page
New versions and additional information will be available on
http://www.vit-r.com/Projects/ErrorLog/ConstructiveParanoia/




                       Vit R, gpw2013,                         34
                     Konstruktive Paranoia‎

More Related Content

Viewers also liked

Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3
Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3
Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3Nordic Growth Hackers
 
Attitude
AttitudeAttitude
AttitudeVishal
 
RSA USA 2015 - Getting a Jump on Hackers
RSA USA 2015 - Getting a Jump on HackersRSA USA 2015 - Getting a Jump on Hackers
RSA USA 2015 - Getting a Jump on HackersWolfgang Kandek
 
Sakai11 Migration Planning: When Paranoia Leads to Success
Sakai11 Migration Planning: When Paranoia Leads to SuccessSakai11 Migration Planning: When Paranoia Leads to Success
Sakai11 Migration Planning: When Paranoia Leads to Successrobin0red
 
Healthy Paranoia: What Keeps Me Up at Night
Healthy Paranoia: What Keeps Me Up at NightHealthy Paranoia: What Keeps Me Up at Night
Healthy Paranoia: What Keeps Me Up at NightMatt Wurst
 
How to Identify Managers Paranoia
How to Identify Managers ParanoiaHow to Identify Managers Paranoia
How to Identify Managers ParanoiaTrailukya Dutta
 
On Going Evaluations
On Going EvaluationsOn Going Evaluations
On Going EvaluationsTheJellehKed
 
How to Protect Your Oracle Database from Hackers
How to Protect Your Oracle Database from HackersHow to Protect Your Oracle Database from Hackers
How to Protect Your Oracle Database from HackersJeff Kayser
 
Pledge, Turn, Prestige - The Snowden Pitch
Pledge, Turn, Prestige - The Snowden PitchPledge, Turn, Prestige - The Snowden Pitch
Pledge, Turn, Prestige - The Snowden PitchMarcus John Henry Brown
 
Adventures in paranoia with sinatra and sequel
Adventures in paranoia with sinatra and sequelAdventures in paranoia with sinatra and sequel
Adventures in paranoia with sinatra and sequelEleanor McHugh
 
romantic paranoia
romantic paranoiaromantic paranoia
romantic paranoia_numbers
 
Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...
Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...
Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...Kaido Kikkas
 
Paranoia
ParanoiaParanoia
ParanoiaJames
 
Hacks, hackers and data journalism
Hacks, hackers and data journalismHacks, hackers and data journalism
Hacks, hackers and data journalismGlen McGregor
 
HIMSS Summit of the Southeast: Compliance and Controls
HIMSS Summit of the Southeast: Compliance and ControlsHIMSS Summit of the Southeast: Compliance and Controls
HIMSS Summit of the Southeast: Compliance and ControlsTony Gambacorta
 
Pants policies and paranoia
Pants policies and paranoiaPants policies and paranoia
Pants policies and paranoiaPracticalHT
 
Paranoia2(The Scream)
Paranoia2(The Scream)Paranoia2(The Scream)
Paranoia2(The Scream)Andrew Voyce
 

Viewers also liked (20)

'Paranoia’
'Paranoia’'Paranoia’
'Paranoia’
 
Media 2
Media 2Media 2
Media 2
 
Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3
Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3
Jonas Gyalokay, Airtame @ Nordic growth Hackers event #3
 
Attitude
AttitudeAttitude
Attitude
 
RSA USA 2015 - Getting a Jump on Hackers
RSA USA 2015 - Getting a Jump on HackersRSA USA 2015 - Getting a Jump on Hackers
RSA USA 2015 - Getting a Jump on Hackers
 
Sakai11 Migration Planning: When Paranoia Leads to Success
Sakai11 Migration Planning: When Paranoia Leads to SuccessSakai11 Migration Planning: When Paranoia Leads to Success
Sakai11 Migration Planning: When Paranoia Leads to Success
 
Healthy Paranoia: What Keeps Me Up at Night
Healthy Paranoia: What Keeps Me Up at NightHealthy Paranoia: What Keeps Me Up at Night
Healthy Paranoia: What Keeps Me Up at Night
 
How to Identify Managers Paranoia
How to Identify Managers ParanoiaHow to Identify Managers Paranoia
How to Identify Managers Paranoia
 
On Going Evaluations
On Going EvaluationsOn Going Evaluations
On Going Evaluations
 
How to Protect Your Oracle Database from Hackers
How to Protect Your Oracle Database from HackersHow to Protect Your Oracle Database from Hackers
How to Protect Your Oracle Database from Hackers
 
Pledge, Turn, Prestige - The Snowden Pitch
Pledge, Turn, Prestige - The Snowden PitchPledge, Turn, Prestige - The Snowden Pitch
Pledge, Turn, Prestige - The Snowden Pitch
 
Adventures in paranoia with sinatra and sequel
Adventures in paranoia with sinatra and sequelAdventures in paranoia with sinatra and sequel
Adventures in paranoia with sinatra and sequel
 
romantic paranoia
romantic paranoiaromantic paranoia
romantic paranoia
 
Hackers & Crackers (+ Software Freedom)
Hackers & Crackers (+ Software Freedom)Hackers & Crackers (+ Software Freedom)
Hackers & Crackers (+ Software Freedom)
 
Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...
Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...
Of Hobbits, Amish, Hackers and Technology (or, is technology for humans or vi...
 
Paranoia
ParanoiaParanoia
Paranoia
 
Hacks, hackers and data journalism
Hacks, hackers and data journalismHacks, hackers and data journalism
Hacks, hackers and data journalism
 
HIMSS Summit of the Southeast: Compliance and Controls
HIMSS Summit of the Southeast: Compliance and ControlsHIMSS Summit of the Southeast: Compliance and Controls
HIMSS Summit of the Southeast: Compliance and Controls
 
Pants policies and paranoia
Pants policies and paranoiaPants policies and paranoia
Pants policies and paranoia
 
Paranoia2(The Scream)
Paranoia2(The Scream)Paranoia2(The Scream)
Paranoia2(The Scream)
 

Similar to Gpw 2013, Konstruktive Paranoia, 2013-03-15

Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme ProgrammingKnoldus Inc.
 
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Peter Kofler
 
Estimation or, "How to Dig your Grave"
Estimation or, "How to Dig your Grave"Estimation or, "How to Dig your Grave"
Estimation or, "How to Dig your Grave"Rowan Merewood
 
GDC '13 Going Rogue
GDC '13 Going RogueGDC '13 Going Rogue
GDC '13 Going RogueThePouncer
 
Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)Lorna Mitchell
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...Steve Lange
 
Is there a future for devops ?
Is there a future for devops ?Is there a future for devops ?
Is there a future for devops ?Kris Buytaert
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplateStanislav Petrov
 
Continuous Infrastructure First
Continuous Infrastructure FirstContinuous Infrastructure First
Continuous Infrastructure FirstKris Buytaert
 
Legacy code rehab.
Legacy code rehab.Legacy code rehab.
Legacy code rehab.johnnonolan
 
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...Steve Lange
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?Kris Buytaert
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPIoannis Baltopoulos
 
Nightmare on Docker street
Nightmare on Docker streetNightmare on Docker street
Nightmare on Docker streetKris Buytaert
 
From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove Kris Buytaert
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsMarcello Duarte
 

Similar to Gpw 2013, Konstruktive Paranoia, 2013-03-15 (20)

Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
MSL2008. Debugging
MSL2008. DebuggingMSL2008. Debugging
MSL2008. Debugging
 
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)Coding Dojo: Fun with Tic-Tac-Toe (2014)
Coding Dojo: Fun with Tic-Tac-Toe (2014)
 
Ploneide
PloneidePloneide
Ploneide
 
Estimation or, "How to Dig your Grave"
Estimation or, "How to Dig your Grave"Estimation or, "How to Dig your Grave"
Estimation or, "How to Dig your Grave"
 
GDC '13 Going Rogue
GDC '13 Going RogueGDC '13 Going Rogue
GDC '13 Going Rogue
 
Sensible scaling
Sensible scalingSensible scaling
Sensible scaling
 
Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World (phpbnl10)
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
 
Is there a future for devops ?
Is there a future for devops ?Is there a future for devops ?
Is there a future for devops ?
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
I Develop Videogames
I Develop VideogamesI Develop Videogames
I Develop Videogames
 
Continuous Infrastructure First
Continuous Infrastructure FirstContinuous Infrastructure First
Continuous Infrastructure First
 
Legacy code rehab.
Legacy code rehab.Legacy code rehab.
Legacy code rehab.
 
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
 
Can we fix dev-oops ?
Can we fix dev-oops ?Can we fix dev-oops ?
Can we fix dev-oops ?
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEP
 
Nightmare on Docker street
Nightmare on Docker streetNightmare on Docker street
Nightmare on Docker street
 
From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove From Config Management Sucks to #cfgmgmtlove
From Config Management Sucks to #cfgmgmtlove
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 

Recently uploaded

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Recently uploaded (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

Gpw 2013, Konstruktive Paranoia, 2013-03-15

  • 1. GPW 2013 Konstruktive Paranoia Vitaly Rudovich Vit R http://www.vit-r.com/Projects/ErrorLog/ConstructiveParanoia/
  • 2. Background ● 20 years in IT: SW Dev , QA, RE, PM ● C, Fortran, Java, Prolog, Tcl/Tk... ● C++ SIL-4 ● Safety Integrity Level - 4 ● Probability of Failure per Hour 0.00000001 ● Shlaer-Mellor aka. xtUML ● fair model-driven development, model check, model test ● 100% code generation from model ● DOORS / DXL ● What is the worst programming language you ever worked with? Vit R, gpw2013, 2 Konstruktive Paranoia‎
  • 3. Why Perl? ● Typical tasks of a consultant ● This piece of ... code does not work. ● We have some data. What does this data mean? ● We have a problem. ● Perl ● CPAN – Perl is CPAN ● available and permitted – Most big firms have some Perl version in their archives. ● fast ● highly plastic Vit R, gpw2013, 3 Konstruktive Paranoia‎
  • 4. How about good parts? ● A dialog with a customer: – This is a nice solution with recursion. – What? – OK. How about a "foreach" cycle? ● This presentation describes how to cut the Perl wings off but keep flying. Vit R, gpw2013, 4 Konstruktive Paranoia‎
  • 5. Software Development as sculpting ● We pretend to sculpt in stone, although we are making pottery. (or playing with plasticine) ● Clay vs. stone Vit R, gpw2013, 5 Konstruktive Paranoia‎
  • 6. Proof ● You have seen such software many times Vit R, gpw2013, 6 Konstruktive Paranoia‎
  • 7. The Legend of The Right Process ● We pretend we build pyramids. ● Waterfall, spiral, scrum, XP... are similar: Our product can only grow. Differences are only in the ways of growth. ● We pretend we cannot throw anything away. We do not reduce waste but deny it. Vit R, gpw2013, 7 Konstruktive Paranoia‎
  • 8. The real life: How to save money, time and quality ● Stop, find the errors and redesign. ● Stop, find the errors and develop new version form scratch. ● Stop, find the errors, recalculate budget, estimate profit and declare a failure. Vit R, gpw2013, 8 Konstruktive Paranoia‎
  • 9. The real life: How to waste money and time and loose your hope ● Dangerous sentences – Anything we did is an investment. – We are good, but something is probably not optimal. – If we find and kill all the bugs, we succeed. ● Zombie – Our project is 90% ready. – How long are you in this state? – Third year Vit R, gpw2013, 9 Konstruktive Paranoia‎
  • 10. Software project outcomes ● Source code ● Documentation ● Knowledge ● most valuable part ● most ignored part ● usually is not documented Vit R, gpw2013, 10 Konstruktive Paranoia‎
  • 11. Bugs vs. errors: Bugs ● The process ● find, catch, discover, remove, find the bugs created by bug removal, repeat ● This is a MMORPG ● Developers create the features. ● Testers find the bugs. ● Developers reclassify bugs into features. ● Managers confirm the bugs being bugs and assign the bug removing tasks. ● Developers claim they have no time; they create new features. Vit R, gpw2013, 11 Konstruktive Paranoia‎
  • 12. Bugs vs. errors: Errors ● The process ● find ● correct ● learn ● This is boring Vit R, gpw2013, 12 Konstruktive Paranoia‎
  • 13. The error Sources ● User requirements ● Management decisions ● SW architecture ● SW design ● SW development ● Libraries ● User data ● User commands ● SW environment ● ... Vit R, gpw2013, 13 Konstruktive Paranoia‎
  • 14. Paranoia ● Anything can be wrong ● "Can be" or "is"? ● Welcome to the real world Vit R, gpw2013, 14 Konstruktive Paranoia‎
  • 15. Prevention ● If you X, your code will be better. ● paranoia mode on: ● Why? ● How do you measure the effects of X? ● Does X have unintended consequences? ● Is the cost of X less than the cost of the errors that it prevents? ● If you X, you feel better. Vit R, gpw2013, 15 Konstruktive Paranoia‎
  • 16. The silver bullets ● It is impossible to add quality. ● Tests, QA, Processes, Methods... ● This is verification ● You can verify against requirements – Do we develop our product in a right way? ● You cannot validate. – Do we develop a right product? ● "Industry proven" X ● Maybe it contains or generates errors ● Maybe it is not applicable for your conditions ● Your implementation may be not correct Vit R, gpw2013, 16 Konstruktive Paranoia‎
  • 17. Solution ● Measure and compare ● Don't believe any statistics you don't make up yourself ● Do not repeat errors ● Do not hide errors ● Be prepared ● Do not hope you can create an error-free world ● You can predict errors ● You can reduce the cost of errors Vit R, gpw2013, 17 Konstruktive Paranoia‎
  • 18. The cost of errors ● Direct harm ● Indirect harm ● The error correction cost ● can be reduced Vit R, gpw2013, 18 Konstruktive Paranoia‎
  • 19. The error correction processes ● error detection ● communication ● search for the error sources ● analysis of the error conditions ● analysis of correct behavior ● How it must be? ● development ● proof of the error correction Vit R, gpw2013, 19 Konstruktive Paranoia‎
  • 20. Error correction: highest cost ● Communication ● slow ● inaccurate, erroneous, incomplete ● harmful ● Analysis ● What? ● Why? ● What instead? ● The "heaviest" process is the context load. Vit R, gpw2013, 20 Konstruktive Paranoia‎
  • 21. Errors: highest cost ● Errors in requirements ● Test with the real data. ● Test in the real conditions. ● Old errors are more expensive ● Reduce the errors lifespan Vit R, gpw2013, 21 Konstruktive Paranoia‎
  • 22. Do not hide errors ● <program state is correct> or die() ● <data state is known> or die() ● Do not believe in logs. ● All unknown errors must stop execution. ● Report errors on the appropriate level. Vit R, gpw2013, 22 Konstruktive Paranoia‎
  • 23. Comments (1) ● A message in the bottle ● Anything that is not in the source code will be lost, forgotten or ignored ● Do not hide ● your errors ● alternatives ● your assumptions ● your knowledge Vit R, gpw2013, 23 Konstruktive Paranoia‎
  • 24. Comments (2) ● If possible, comment out but not delete ● Remove something only if it is necessary to remove ● If you have something to say, say it ● The most valuable comments by search for problems – !!! – ??? – OMG! – F.CK! Vit R, gpw2013, 24 Konstruktive Paranoia‎
  • 25. Custom diagnose module ● project specific output ● STDERR ● dialog ● socket ● log file ● CSV file ● ... ● project specific errors Vit R, gpw2013, 25 Konstruktive Paranoia‎
  • 26. Most frequent functions ● set_debug_mode(); # 0 or 1 ● DBG(), LIFESIGN() ● ASSERT(), ERROR(), WARN() ● send high level information ● why is the state or the data not correct ● what assumption is not correct ● describe what you know about the error conditions ● DUMP_HASH_AS_JSON() ● Json file 2 MB ● Manuell verification ● Perl script to check state Vit R, gpw2013, 26 Konstruktive Paranoia‎
  • 27. Negative filters ● Preconditions ● check: data, internal state, assumptions ● Postconditions ● check: end state, results, errors ● Invariants ● detect: infinite cycles, incorrect states ● Anything that is not proved to be correct is suspicious Vit R, gpw2013, 27 Konstruktive Paranoia‎
  • 28. Discover errors as soon as possible ● Test your assumptions ● Test your algorithms ● Test before you move forward ● Prove each step ● die "OK"; Vit R, gpw2013, 28 Konstruktive Paranoia‎
  • 29. Bulletproof against maintenance ● Harvard management methodology wizards claim that the human resources quality is not important, if you have the right management process. ● Be prepared. ● Your software must be recoverable after all types of maintenance. Vit R, gpw2013, 29 Konstruktive Paranoia‎
  • 30. Do not believe in interfaces ● Software produce errors ● Users produce errors ● Errors can be creative ● Number of employers – "-3" (correction value for another table) – "TBD" (manual user correction ) ● Date – "2013-02-31" (the last Sunday of February. User calculations in Excel) ● User Name – "1@23F32" (XML export was wrong) ● Crosscheck input values if possible Vit R, gpw2013, 30 Konstruktive Paranoia‎
  • 31. Talk to user ● User is always right (but frequently dumb) ● Developer: – The output is garbage: each third record is wrong. ● User: – Why garbage? Two thirds of values are correct. ● Users ignore errors ● whenever they can Vit R, gpw2013, 31 Konstruktive Paranoia‎
  • 32. Talk to user: Report to the appropriate level ● Stop execution ● Block the dialogs ● Present the errors in a simple way ● Deliver the error messages with results ● Shout Vit R, gpw2013, 32 Konstruktive Paranoia‎
  • 33. Talk to user: Prevent unnecessary communication ● Make your error descriptions user friendly ● What is wrong? ● Who is responsible? ● How to correct? Vit R, gpw2013, 33 Konstruktive Paranoia‎
  • 34. Project page New versions and additional information will be available on http://www.vit-r.com/Projects/ErrorLog/ConstructiveParanoia/ Vit R, gpw2013, 34 Konstruktive Paranoia‎