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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Alexander, C. (1979). The timeless way of building. Oxford University Press.
Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I., & Angel, S. (1977). A pattern language—Towns, buildings. Oxford University Press.
Csikszentmihalyi, M. (2008). Flow:The psychology of optimal experience. Harper Perennial Modern Classics
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
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design patterns: Elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co.
Goldberg, A., & Robson, D. (1983). Smalltalk-80: The language and its implementation. Addison Wesley Longman Publishing Co.
Iba, T. (2014). Presentation patterns: A pattern language for creative presentations. Lulu. com.
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.
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.
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).
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
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
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
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this chapter
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
DOI: https://doi.org/10.1007/978-3-030-76324-4_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-76323-7
Online ISBN: 978-3-030-76324-4
eBook Packages: Business and ManagementBusiness and Management (R0)