Skip to main content

Toward Patterns of Exploratory Programming Practice

  • Chapter
  • First Online:
Design Thinking Research

Part of the book series: Understanding Innovation ((UNDINNO))

Abstract

Patterns document best practices in many domains. For a long time, practitioners in the field of software engineering have been collecting and using such patterns too, to approach recurring design challenges. However, the challenges of efficient problem understanding and solution revising have no such form for efficiently communicating programming practice. It takes a long time to discover and learn such exploratory skills when using programming tools as is, without thorough reflection. We want to apply the idea of patterns to capture traditional and modern practices of exploratory programming. In this chapter, we begin to draft a pattern language, starting with four patterns to enable and control exploration, which we extracted from personal programming practice and experience.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 149.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 199.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 199.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  • Alexander, C. (1979). The timeless way of building. Oxford University Press.

    Google Scholar 

  • Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I., & Angel, S. (1977). A pattern language—Towns, buildings. Oxford University Press.

    Google Scholar 

  • Csikszentmihalyi, M. (2008). Flow:The psychology of optimal experience. Harper Perennial Modern Classics

    Google Scholar 

  • DeGrace, P., & Stahl, L. (1990). Wicked problems, righteous solutions: A catalogue of modern software engineering paradigms. Yourdon Press Computing Series. Yourdon Press. URL https://books.google.de/books?id=__omAAAAMAAJ

  • Freudenberg, B., Ohshima, Y., & Wallace, S. (2009). Etoys for one laptop per child. In 2009 Seventh International Conference on Creating, Connecting and Collaborating Through Computing (pp. 57–64). IEEE

    Google Scholar 

  • Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design patterns: Elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co.

    Google Scholar 

  • Goldberg, A., & Robson, D. (1983). Smalltalk-80: The language and its implementation. Addison Wesley Longman Publishing Co.

    Google Scholar 

  • Iba, T. (2014). Presentation patterns: A pattern language for creative presentations. Lulu. com.

    Google Scholar 

  • Iba, T., & Sakamoto, M. (2011). Learning patterns III: A pattern language for creative learning. In L. B. Hvatum (Ed.) Proceedings of the 18th Conference on Pattern Languages of Programs, PLoP 2011 (pp. 29:1–29:8), Portland, Oregon, USA, October 21–23, 2011. ACM. https://doi.org/10.1145/2578903.2579166.

  • Ingalls, D., Felgentreff, T., Hirschfeld, R., Krahn, R., Lincke, J., Röder, M., Taivalsaari, A., & Mikkonen, T. (2016). A world of active objects for work and play: the first ten years of lively. In E. Visser, E. R. Murphy-Hill, & C. Lopes (Eds.) 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (pp. 238–249), Onward! 2016, Amsterdam, The Netherlands, November 2–4, 2016. ACM. https://doi.org/10.1145/2986012.2986029

  • Ingalls, D., Kaehler, T., Maloney, J., Wallace, S., & Kay, A. (1997). Back to the future: The story of squeak, a practical smalltalk written in itself. In Proceedings of OOPSLA, 32, 318–326. ACM. http://doi.acm.org/https://doi.org/10.1145/263698.263754

  • Kay, A., & Goldberg, A. (1977). Personal dynamic media. Computer, 10(3), 31–41.

    Article  Google Scholar 

  • Kery, M. B., & Myers, B. A. (2017). Exploring exploratory programming. In A. Z. Henley, P. Rogers, & A. Sarma (Eds.) 2017 IEEE Symposium on Visual Languages and Human-Centric Computing, VL/HCC 2017 (pp. 25–29), Raleigh, NC, USA, October 11–14, 2017. IEEE Computer Society (2017). https://doi.org/10.1109/VLHCC.2017.8103446.

  • Lincke, J., Krahn, R., Ingalls, D., Röder, M., & Hirschfeld, R. (2012). The lively partsbin-a cloud-based repository for collaborative development of active web content. In 45th Hawaii International International Conference on Systems Science (HICSS-45 2012), Proceedings (pp. 693–701), 4–7 January 2012, Grand Wailea, Maui, HI, USA. IEEE Computer Society (2012). https://doi.org/10.1109/HICSS.2012.42.

  • Lincke, J., Rein, P., Ramson, S., Hirschfeld, R., Taeumel, M., & Felgentreff, T. (2017). Designing a live development experience for web-components. In L. Church, R.P. Gabriel, R. Hirschfeld, & H. Masuhara (Eds.) Proceedings of the 3rd ACM SIGPLAN International Workshop on Programming Experience, PX/17.2 (28–35), Vancouver, BC, Canada, October 23–27, 2017. ACM. https://dl.acm.org/citation.cfm?id=3167109

  • Maloney, J., Resnick, M., Rusk, N., Silverman, B., & Eastmond, E. (2010). The scratch programming language and environment. ACM Transactions on Computing Education (TOCE), 10(4), 1–15.

    Article  Google Scholar 

  • Niephaus, F., Felgentreff, T., Pape, T., Hirschfeld, R., & Taeumel, M. (2018). Live multi-language development and runtime environments. The Art, Science, and Engineering of Programming, 2(3). https://doi.org/10.22152/programming-journal.org/2018/2/8

  • Niephaus, F., Rein, P., Edding, J., Hering, J., König, B., Opahle, K., Scordialo, N., & Hirschfeld, R. (2020). Example-based live programming for everyone: Building language-agnostic tools for live programming with lsp and graalvm. In Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (pp. 1–17), Onward! 2020. Association for Computing Machinery, New York, NY, USA. https://doi.org/10.1145/3426428.3426919

  • Rauch, D., Rein, P., Ramson, S., Lincke, J., & Hirschfeld, R. (2019). Babylonian-style programming design and implementationof an integration oflive examples into general-purpose sourcecode. Programming Journal, 3(3), 9. https://doi.org/10.22152/programming-journal.org/2019/3/9

  • Rein, P., Lincke, J., Ramson, S., Mattis, T., Niephaus, F., & Hirschfeld, R. (2019). Implementing Babylonian/s by putting examples into contexts: Tracing instrumentation for example-based live programming as a use case for context-oriented programming. In Proceedings of the Workshop on Context-oriented Programming (pp. 17–23).

    Google Scholar 

  • Rein, P., Ramson, S., Lincke, J., Hirschfeld, R., & Pape, T. (2019). Exploratory and live, programming and coding—A literature study comparing perspectives on liveness. Art Science Engineering Program, 3(1), 1. https://doi.org/10.22152/programming-journal.org/2019/3/1.

  • Sheil, B. (1983). Power tools for programmers. Datamation Magazine

    Google Scholar 

  • Steinert, B., Cassou, D., & Hirschfeld, R. (2012). Coexist: overcoming aversion to change. In A. Warth (Ed.) Proceedings of the 8th Symposium on Dynamic Languages, DLS ’12 (pp. 107–118), Tucson, AZ, USA, October 22, 2012. ACM. https://doi.org/10.1145/2384577.2384591.

  • Taeumel, M. (2020). Data-driven tool construction in exploratory programming environments (Ph.D. thesis). University of Potsdam, Digital Engineering Faculty, Hasso Plattner Institute. https://doi.org/10.25932/publishup-44428

  • Taeumel, M., Perscheid, M., Steinert, B., Lincke, J., & Hirschfeld, R. (2014). Interleavingofmodification and use in data-driven tool development. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (pp. 185–200), Onward!. ACM, New York, NY, USA. http://doi.acm.org/https://doi.org/10.1145/2661136.2661150

  • Taeumel, M., Steinert, B., & Hirschfeld, R. (2012). The VIVIDE programming environment: Connecting run-timeinformationwithprogrammers’systemknowledge. In G. T.Leavens & J.Edwards(Eds.) ACM Symposium on New Ideas in Programming and Reflections on Software (pp. 117–126), Onward! 2012, part of SPLASH ’12, Tucson, AZ, USA, October 21–26, 2012. ACM. https://doi.org/10.1145/2384592.2384604

  • Trenouth, J. (1991). A survey of exploratory software development. The Computer Journal, 34(2), 153–163. https://doi.org/10.1093/comjnl/34.2.153

    Article  Google Scholar 

  • Ungar, D., & Smith, R. Self. In Proceedings of the Conference on History of Programming Languages (HOPL) 2007, HOPL III (pp. 9–1). ACM, New York, NY, USA. https://doi.org/10.1145/1238844.1238853

  • Wegner, P. (1990). Concepts and paradigms of object-oriented programming. OOPS Messenger, 1(1), 7–87. https://doi.org/10.1145/382192.383004.doi:10.1145/382192.383004

    Article  Google Scholar 

Download references

Acknowledgements

We gratefully acknowledge the financial support of the HPI Research School on Service-oriented Systems Engineering (www.hpi.de/en/research/research-schools) and the Hasso Plattner Design Thinking Research Program (www.hpi.de/en/dtrp).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marcel Taeumel .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Taeumel, M., Rein, P., Hirschfeld, R. (2021). Toward Patterns of Exploratory Programming Practice. In: Meinel, C., Leifer, L. (eds) Design Thinking Research . Understanding Innovation. Springer, Cham. https://doi.org/10.1007/978-3-030-76324-4_7

Download citation

Publish with us

Policies and ethics