SlideShare a Scribd company logo
EXAMPLE EMBEDDING
   Using Examples in Software Development

                              Ohad Barzilay
          Blavatnik School of Computer Science, Tel-Aviv University, Israel

 PhD research under the supervision of:
 Amiram Yehudai, Blavatnik School of Computer Science, Tel-Aviv University, Israel
 Orit Hazzan, Department of Education in Technology and Science, Technion, Israel


                    AlphaGeeks #4:
December 2009
                    Drink beer while talking about software and technology
It’s the practices, stupid
2


       "I've taken things I've done that have worked well
        and things I've seen done that worked well and
        distilled them to what I think is their purest, most
        'extreme' form“
                         [Kent Beck, “Extreme Programming Explained: Embrace Change”]




                     Can we do the same?
               Beautiful Code
               Leading Programmers Explain How They Think
Agenda
3




    Software              Using
                                         Discussion      Reflection
     Activity           Examples



            Potential    Barriers   Techniques     software
                                                 development
                                                  ecosystem
Software Activity
4


       Software Activity is a collection of fine grained
        techniques which together assemble an abstract key
        notion in software development
       Software Activity may be composed of finer
        grained activities

                       Analysis          Programming            Design
       Examples:
                        Debugging            Coding           Testing



                                    Search         Example          Code
                 Refactoring                      Embedding      Comprehension
Refactoring
5
                   much more than an activity
       Refactoring is a disciplined technique for
        restructuring an existing body of code, altering its
        internal structure without changing its external
        behavior [www.refactoring.com/]

       Although refactoring code has been performed
        informally for years, William Opdyke's 1993 Ph.D.
        dissertation is the first known resource to specifically
        examine refactoring
Appreciating Refactoring
6


      The mere identification of refactoring promoted the
        following important processes:
       Provided name and definition for the activity

       Laid the foundations for building a catalogue

       Enabled the development of software tools

       Promoted new coding practices

       Influenced the development process


    These various aspects serve as an ecosystem that exploits the use of
      refactoring systematically and methodically to leverage its full
             potential and eliminate its pitfalls and deficiencies
Looking for
                                       Goal: Extracting activities
“The Next Refactoring”                 involved with “coding”
7

                                  Observations
                                               Secondary tools for
                                               Data gathering
                               Data Analysis          Literature
                                                        Secondary
                                                        research
                             Identifying software activities

                         Characterizing activity with respect
                                  to the ecosystem

                             Feeding the results back to
                                   the organization
What We Do - Summary
8


                  professional developers at work

                  things with no “official” name (activities)

                        those things with respect to the
        software development ecosystem

                  the software organization how to enhance
        productivity by better exploiting the characterized
        activities
Example Embedding
9


       Example Embedding is the notion of using an
        already existing code fragment (the example)
        within a new context

       We argue that productivity benefits from using
        examples habitually and correctly in example
        supportive environment

       Examples could be used more systematically more
        extensively and more effectively to exploit their
        full potential
Benefits of Example Usage

   Productivity increase
     Better code, faster coding
     Nothing starts from scratch



   The code written is more reusable
       More explicit, better documented and tested

   Examples promote learning
           “* by example”

   Unified design is better enforced
We know all that. Don’t we?
11

     We identify:

        Lack of awareness to example existence
            It is not part of the development routine
            Some developers use examples only on certain contexts but not
             on others (e.g. only on C# but never for cshell)
            Some developers use examples only on certain scale


        Lack of awareness that examples serves various purposes
            Examples are not only relevant for learning, but also for using
            Capturing the spirit of the design
We know all that. Don’t we? (2)
12

     We identify:

        Lack of dexterity required for Example Embedding
            It requires different skills (which sometimes considered inferior
             than doing it old-school)
            “It would be faster to write it by myself than to search-
             evaluate-embed a maybe non existing example”

        Lack of browsable/searchable/trustable/relevant example
         repositories
            The Internet is sometimes not an option (e.g. copyright)
            “Can I trust the guy who wrote it?”
We know all that. Don’t we? (3)
13


     We identify:

        Example Complexity
          A single example might me scattered all over the code
          The example may have hidden side effects, implicit contract
          Example misuse



        Cultural and organizational barriers
          “Not invented here” syndrome
          Copyright issues
Example Embedding Applied
14


        Building example set
        Reference application
        Hansel and Gretel
        StackOverflow.com
        Using examples to solve syntax errors
        Embedding examples as 3rd party code
Purposes for Using Examples
15
Reflection
16



        Rethink and examine
         professional creations
         during and after the
         accomplishment of the
         creation process

        Reflective Practitioner
         [Schön, 1983,1987]
Summary
17




     Software              Using
                                          Discussion      Reflection
      Activity           Examples



             Potential    Barriers   Techniques     software
                                                  development
                                                   ecosystem
18      Thank you!

 Comments?



     More comments?

More Related Content

Similar to Alphageeks #4: Example Embedding By Ohad Barzilay

Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
Ryan Polk
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
Hayim Makabee
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
Rick van der Arend
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineering
Devnology
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
Hayim Makabee
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
HopeTutors1
 
Se chapter 1,2,3 2 mark qa
Se chapter 1,2,3   2 mark  qaSe chapter 1,2,3   2 mark  qa
Se chapter 1,2,3 2 mark qa
Aruna M
 
Reuse Software Components (IMS 2006)
Reuse Software Components (IMS 2006)Reuse Software Components (IMS 2006)
Reuse Software Components (IMS 2006)
IT Industry
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
Tharindu Weerasinghe
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
tuanvu8292
 
Keynote at-icpc-2020
Keynote at-icpc-2020Keynote at-icpc-2020
Keynote at-icpc-2020
Ralf Laemmel
 
Programmer Productivity Enhancement Through Controlled Natural Language Input
Programmer Productivity Enhancement Through Controlled Natural Language InputProgrammer Productivity Enhancement Through Controlled Natural Language Input
Programmer Productivity Enhancement Through Controlled Natural Language Input
ijseajournal
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
Majong DevJfu
 
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
ijcnes
 
Analysis of the interaction between practices for introducing XP effectively
Analysis of the interaction between practices for introducing XP effectivelyAnalysis of the interaction between practices for introducing XP effectively
Analysis of the interaction between practices for introducing XP effectively
Makoto SAKAI
 
Introduction to Object Oriented Programming.pdf
Introduction to Object Oriented Programming.pdfIntroduction to Object Oriented Programming.pdf
Introduction to Object Oriented Programming.pdf
ManishBej3
 
Task Pattern to support Task-centric Social Software Engineering
Task Pattern to support Task-centric Social Software EngineeringTask Pattern to support Task-centric Social Software Engineering
Task Pattern to support Task-centric Social Software Engineering
Wolfgang Reinhardt
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineering
Mohesh Chandran
 
Managing Agile Software Development Projects
Managing Agile Software Development ProjectsManaging Agile Software Development Projects
Managing Agile Software Development Projects
Martina Šimičić
 
OO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented DevelopmentOO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented Development
Randy Connolly
 

Similar to Alphageeks #4: Example Embedding By Ohad Barzilay (20)

Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineering
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
 
Se chapter 1,2,3 2 mark qa
Se chapter 1,2,3   2 mark  qaSe chapter 1,2,3   2 mark  qa
Se chapter 1,2,3 2 mark qa
 
Reuse Software Components (IMS 2006)
Reuse Software Components (IMS 2006)Reuse Software Components (IMS 2006)
Reuse Software Components (IMS 2006)
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Keynote at-icpc-2020
Keynote at-icpc-2020Keynote at-icpc-2020
Keynote at-icpc-2020
 
Programmer Productivity Enhancement Through Controlled Natural Language Input
Programmer Productivity Enhancement Through Controlled Natural Language InputProgrammer Productivity Enhancement Through Controlled Natural Language Input
Programmer Productivity Enhancement Through Controlled Natural Language Input
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
 
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
 
Analysis of the interaction between practices for introducing XP effectively
Analysis of the interaction between practices for introducing XP effectivelyAnalysis of the interaction between practices for introducing XP effectively
Analysis of the interaction between practices for introducing XP effectively
 
Introduction to Object Oriented Programming.pdf
Introduction to Object Oriented Programming.pdfIntroduction to Object Oriented Programming.pdf
Introduction to Object Oriented Programming.pdf
 
Task Pattern to support Task-centric Social Software Engineering
Task Pattern to support Task-centric Social Software EngineeringTask Pattern to support Task-centric Social Software Engineering
Task Pattern to support Task-centric Social Software Engineering
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineering
 
Managing Agile Software Development Projects
Managing Agile Software Development ProjectsManaging Agile Software Development Projects
Managing Agile Software Development Projects
 
OO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented DevelopmentOO Development 1 - Introduction to Object-Oriented Development
OO Development 1 - Introduction to Object-Oriented Development
 

Recently uploaded

Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 

Recently uploaded (20)

Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 

Alphageeks #4: Example Embedding By Ohad Barzilay

  • 1. EXAMPLE EMBEDDING Using Examples in Software Development Ohad Barzilay Blavatnik School of Computer Science, Tel-Aviv University, Israel PhD research under the supervision of: Amiram Yehudai, Blavatnik School of Computer Science, Tel-Aviv University, Israel Orit Hazzan, Department of Education in Technology and Science, Technion, Israel AlphaGeeks #4: December 2009 Drink beer while talking about software and technology
  • 2. It’s the practices, stupid 2  "I've taken things I've done that have worked well and things I've seen done that worked well and distilled them to what I think is their purest, most 'extreme' form“ [Kent Beck, “Extreme Programming Explained: Embrace Change”] Can we do the same? Beautiful Code Leading Programmers Explain How They Think
  • 3. Agenda 3 Software Using Discussion Reflection Activity Examples Potential Barriers Techniques software development ecosystem
  • 4. Software Activity 4  Software Activity is a collection of fine grained techniques which together assemble an abstract key notion in software development  Software Activity may be composed of finer grained activities Analysis Programming Design  Examples: Debugging Coding Testing Search Example Code Refactoring Embedding Comprehension
  • 5. Refactoring 5 much more than an activity  Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior [www.refactoring.com/]  Although refactoring code has been performed informally for years, William Opdyke's 1993 Ph.D. dissertation is the first known resource to specifically examine refactoring
  • 6. Appreciating Refactoring 6 The mere identification of refactoring promoted the following important processes:  Provided name and definition for the activity  Laid the foundations for building a catalogue  Enabled the development of software tools  Promoted new coding practices  Influenced the development process These various aspects serve as an ecosystem that exploits the use of refactoring systematically and methodically to leverage its full potential and eliminate its pitfalls and deficiencies
  • 7. Looking for Goal: Extracting activities “The Next Refactoring” involved with “coding” 7 Observations Secondary tools for Data gathering Data Analysis Literature Secondary research Identifying software activities Characterizing activity with respect to the ecosystem Feeding the results back to the organization
  • 8. What We Do - Summary 8  professional developers at work  things with no “official” name (activities)  those things with respect to the software development ecosystem  the software organization how to enhance productivity by better exploiting the characterized activities
  • 9. Example Embedding 9  Example Embedding is the notion of using an already existing code fragment (the example) within a new context  We argue that productivity benefits from using examples habitually and correctly in example supportive environment  Examples could be used more systematically more extensively and more effectively to exploit their full potential
  • 10. Benefits of Example Usage  Productivity increase  Better code, faster coding  Nothing starts from scratch  The code written is more reusable  More explicit, better documented and tested  Examples promote learning  “* by example”  Unified design is better enforced
  • 11. We know all that. Don’t we? 11 We identify:  Lack of awareness to example existence  It is not part of the development routine  Some developers use examples only on certain contexts but not on others (e.g. only on C# but never for cshell)  Some developers use examples only on certain scale  Lack of awareness that examples serves various purposes  Examples are not only relevant for learning, but also for using  Capturing the spirit of the design
  • 12. We know all that. Don’t we? (2) 12 We identify:  Lack of dexterity required for Example Embedding  It requires different skills (which sometimes considered inferior than doing it old-school)  “It would be faster to write it by myself than to search- evaluate-embed a maybe non existing example”  Lack of browsable/searchable/trustable/relevant example repositories  The Internet is sometimes not an option (e.g. copyright)  “Can I trust the guy who wrote it?”
  • 13. We know all that. Don’t we? (3) 13 We identify:  Example Complexity  A single example might me scattered all over the code  The example may have hidden side effects, implicit contract  Example misuse  Cultural and organizational barriers  “Not invented here” syndrome  Copyright issues
  • 14. Example Embedding Applied 14  Building example set  Reference application  Hansel and Gretel  StackOverflow.com  Using examples to solve syntax errors  Embedding examples as 3rd party code
  • 15. Purposes for Using Examples 15
  • 16. Reflection 16  Rethink and examine professional creations during and after the accomplishment of the creation process  Reflective Practitioner [Schön, 1983,1987]
  • 17. Summary 17 Software Using Discussion Reflection Activity Examples Potential Barriers Techniques software development ecosystem
  • 18. 18 Thank you! Comments? More comments?