SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
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?

Mais conteúdo relacionado

Semelhante a Alphageeks #4: Example Embedding By Ohad Barzilay

Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship ChecklistRyan Polk
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical DebtHayim 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 designRick van der Arend
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology
 
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 answersHopeTutors1
 
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 qaAruna 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 & PythonTharindu Weerasinghe
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingtuanvu8292
 
Keynote at-icpc-2020
Keynote at-icpc-2020Keynote at-icpc-2020
Keynote at-icpc-2020Ralf 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 Inputijseajournal
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architecturesMajong 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 effectivelyMakoto SAKAI
 
Introduction to Object Oriented Programming.pdf
Introduction to Object Oriented Programming.pdfIntroduction to Object Oriented Programming.pdf
Introduction to Object Oriented Programming.pdfManishBej3
 
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 EngineeringWolfgang Reinhardt
 
01 fse software&sw-engineering
01 fse software&sw-engineering01 fse software&sw-engineering
01 fse software&sw-engineeringMohesh Chandran
 
Managing Agile Software Development Projects
Managing Agile Software Development ProjectsManaging Agile Software Development Projects
Managing Agile Software Development ProjectsMartina Š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 DevelopmentRandy Connolly
 

Semelhante a 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
 

Último

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Último (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

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?