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

PDF
Ohad Barzilay - Enhancing Productivity by Example - AgileIL11
PDF
Happily Married or Warring Factions? Open Source and Standards
PDF
Fc25949950
PDF
How does pair programming work?
PDF
Shift AI 2020: Using AI for automatic synthesis | Boris Cergol (Comtrade Digi...
PPTX
Shayke's SCRUM @alphageeks 6
PDF
The secrets of developer happiness - Yuval Goldstein @ alphageeks 5
PPTX
Refael Ackermann @alphageeks on HTML5
Ohad Barzilay - Enhancing Productivity by Example - AgileIL11
Happily Married or Warring Factions? Open Source and Standards
Fc25949950
How does pair programming work?
Shift AI 2020: Using AI for automatic synthesis | Boris Cergol (Comtrade Digi...
Shayke's SCRUM @alphageeks 6
The secrets of developer happiness - Yuval Goldstein @ alphageeks 5
Refael Ackermann @alphageeks on HTML5

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

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

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPT
Teaching material agriculture food technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Encapsulation theory and applications.pdf
Big Data Technologies - Introduction.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
MIND Revenue Release Quarter 2 2025 Press Release
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Dropbox Q2 2025 Financial Results & Investor Presentation
Understanding_Digital_Forensics_Presentation.pptx
Unlocking AI with Model Context Protocol (MCP)
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Encapsulation_ Review paper, used for researhc scholars
Reach Out and Touch Someone: Haptics and Empathic Computing
“AI and Expert System Decision Support & Business Intelligence Systems”
Teaching material agriculture food technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
sap open course for s4hana steps from ECC to s4
Mobile App Security Testing_ A Comprehensive Guide.pdf
Machine learning based COVID-19 study performance prediction
Encapsulation theory and applications.pdf
Ad

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?