Unweaving Code Search Toward Remixing-Centered Programming Support

  • Kumiyo Nakakoji
  • Yasuhiro Yamamoto
  • Yoshiyuki Nishinaka


Recognizing that programming is basically remixing, this chapter looks into the cognitive, social, and practical aspects of searching for and using existing code in a programming task. A code search mechanism undoubtedly plays an essential supporting role in a developer’s search for code in his or her own programming task. Supporting code search activities, however, demands more than code search mechanisms. At the same time, code search mechanisms also help a developer in a wider spectrum of programming activities. We present the anatomy of the cognitive activity in which a developer searches for existing code, and we propose efficacy and attitude as two dimensions depicting code search activity. We discuss areas of necessary technical and socio-technical support for code search activities in addition to code search mechanisms. We conclude the chapter by calling for a developer-centered remixing-oriented development environment.


Mailing List Search Mechanism Usable Code Code Segment Programming Task 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. [1]
    Ackerman, M.S.: Augmenting organizational memory: A field study of Answer Garden. ACM Trans Info Sys, 16(3), 203–224 (1998)CrossRefGoogle Scholar
  2. [2]
    Bajracharya, S.K., Ossher, J., Lopes, C.V.: Leveraging usage similarity for effective retrieval of examples in code repositories. Proc. FSE ’10, ACM, New York, 157–166 (2010)Google Scholar
  3. [3]
    Bar-Yossef, Z., Gurevich, M.: Mining search engine query logs via suggestion sampling, Proc. VLDB’08, Auckland, New Zealand, 54–65 (2008)Google Scholar
  4. [4]
    Boardman, R., Sasse, M.A.: Stuff goes into the computer and doesn’t come out: A cross-tool study of personal information management, Proc. CHI ’04, ACM, New York, 583–590 (2004)Google Scholar
  5. [5]
    Brandt, J., Guo, P.J., Lewenstein, J., Dontcheva, M., Klemmer, S.R.: Two studies of opportunistic programming: interleaving web foraging, learning, and writing code, Proc. CHI ’09, ACM, New York, 1589–1598 (2009)Google Scholar
  6. [6]
    Brandt, J., Dontcheva, M., Weskamp, M., Klemmer, S.R.: Example-centric programming: integrating web search into the development environment, Proc. CHI ’10, ACM, New York, 513–522 (2010)Google Scholar
  7. [7]
    Clarke, S.: Measuring API usability. Dr Dobb’s Journal Special Windows/NET Supplement, (2004)
  8. [8]
    Cross R., Borgatti, S.P.: The ties that share: Relational characteristics that facilitate information seeking. In: Huysman M., Wulf V., Social Capital and Information Technology, pp. 137–161. The MIT Press, Cambridge, MA (2004)Google Scholar
  9. [9]
    Duala-Ekoko, E., Robillard, M.P.: Clone region descriptors: Representing and tracking duplication in source code. ACM Trans. Softw. Eng. Methodol. 20, 1, Article 3, 3:1–3:31 (July 2010)Google Scholar
  10. [10]
    Duala-Ekoko, E., Robillard, M.P.: Using structure-based recommendations to facilitate discoverability in APIs, Proc. 25th European Conf. on Object-Oriented Programming, 79–104 (July 2011)Google Scholar
  11. [11]
    Dumais, S., Cutrell, E., Cadiz, J.J., Jancke, G., Sarin, R., Robbins, D.C.: Stuff I’ve seen: A system for personal information retrieval and re-use, Proc. ACM SIGIR Conference on Research and Development in Information Retrieval, Toronto, Canada, 72–79 (2003)Google Scholar
  12. [12]
    Eisenberg, D.S., Stylos, J., Myers, B.A.: Apatite: a new interface for exploring APIs. Proc. CHI ’10, ACM, New York, 1331–1334 (2010)Google Scholar
  13. [13]
    Fourney, A., Mann, R., Terry, M.: Query-feature graphs: Bridging user vocabulary and system functionality, Proc. UIST ’11, ACM, New York, 207–216 (2011)Google Scholar
  14. [14]
    Fourney, A., Mann, R., Terry, M.: Characterizing the usability of interactive applications through query log analysis, Proc. CHI ’11, ACM, New York, 1817–1826 (2011)Google Scholar
  15. [15]
    Gallardo-Valencia, R.E., Sim, S.E.: What kinds of development problems can be solved by searching the web?: A field study, Proc. SUITE ’11, ACM, New York, 41–44 (2011)Google Scholar
  16. [16]
    Gerstberger P.G., Allen T.J.: Criteria used by research and development engineers in the selection of an information source. J. Appl. Psych. 52(4), 272–279 (1968)CrossRefGoogle Scholar
  17. [17]
    Goldhaber M.H.: The attention economy. First Monday 2(4), (1997).Google Scholar
  18. [18]
    Hartmann, B., MacDougall, D., Brandt, J., Klemmer, S.R.: What would other programmers do: Suggesting solutions to error messages, Proc. CHI ’10, ACM, New York, 1019–1028 (2010)Google Scholar
  19. [19]
    Henning, M.: API design matters, ACM Queue 5(4), 24–36 (May 2007)CrossRefGoogle Scholar
  20. [20]
    Hou, D., Li, L: Obstacles in using frameworks and APIs: An exploratory study of programmers’ newsgroup discussions, Proc. Program Comprehension (ICPC) 2011, IEEE, 91–100 (June 2011)Google Scholar
  21. [21]
    Illich, I.: Deschooling sSociety, Harper and Row, New York (1971)Google Scholar
  22. [22]
    Ko, A.J., Myers, B.A., Coblenz, M.J., Aung, H.H.: An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Transactions on Software Engineering, 33(12),971–987 (December 2006)CrossRefGoogle Scholar
  23. [23]
    Ko, A.J., DeLine, R., Venolia, G.: Information needs in collocated software development teams. Proc. ICSE 2007, 344–353 (May 2007)Google Scholar
  24. [24]
    Ko, A. J., Riche, Y.: The role of conceptual knowledge in API usability. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), Pittsburgh, PA, 173–176 (2011)Google Scholar
  25. [25]
    Marchionini, G.: Exploratory search: From finding to understanding. Commun. ACM 49(4), 41–46 (April 2006)CrossRefGoogle Scholar
  26. [26]
    Nakakoji, K., Ye, Y., Yamamoto, Y.: Supporting expertise communication in developer-centered collaborative software development environments. In: Finkelstein, A., Grundy, J., van den Hoek, A., Mistrik, I., Whitehead, J. (eds.), Collaborative Software Engineering, chap. 11, pp. 152–169. Springer-Verlag, (May 2010)Google Scholar
  27. [27]
    Nakakoji, K., Ye, Y., Yamamoto, Y.: Comparison of coordination communication and expertise communication in software development: Motives, characteristics, and needs, In: Nakakoji, K., Murakami, Y., McCready, E. (eds.) New Frontiers in Artificial Intelligence, pp. 147–155. Springer-Verlag, LNAI6284 (August 2010)Google Scholar
  28. [28]
    Robillard, M.P., DeLine, R.: A field study of API learning obstacles. Empirical Software Engineering, 16(6), 703–732 (2011)CrossRefGoogle Scholar
  29. [29]
    Shirai, Y., Yamamoto, Y., Nakakoji, K.: A history-centric approach for enhancing Web browsing experiences, Extended Abstracts of CHI2006, 1319–1324 (April 2006)Google Scholar
  30. [30]
    Stylos, J., Myers, B.A.: Mica: A Web-search tool for finding API components and examples. Proc. VLHCC ’06, IEEE Computer Society, Washington, DC, 195–202 (2006)Google Scholar
  31. [31]
    Terry, M., Mynatt, E.D., Nakakoji, K., Yamamoto, Y.: Variation in element and action: Supporting simultaneous development of alternative solutions, Proc. CHI2004, ACM, New York, 711–718 (2004)Google Scholar
  32. [32]
    Ye, Y., Fischer G.: Supporting reuse by delivering task-relevant and personalized information. Proc. ICSE ’02, ACM, New York, 513–523 (2002)Google Scholar
  33. [33]
    Ye, Y., Fischer G.: Reuse-conducive development environments. Int. J. Automat. Softw. Eng. 12(2), 199–235 (2005)CrossRefGoogle Scholar
  34. [34]
    Ye, Y., Yamamoto, Y., Nakakoji, K.: A socio-technical framework for supporting programmers, Proc. ESEC/FSE 2007, ACM Press, Dubrovnik, Croatia, 351–360 (September 2007)Google Scholar
  35. [35]
    Ye, Y., Yamamoto, Y., Nakakoji, K., Nishinaka, Y., Asada, M.: Searching the library and asking the peers: Learning to use Java APIs on demand, Proc. PPPJ2007, ACM Press, Lisbon, Portugal, 41–50 (September 2007)Google Scholar
  36. [36]
    Ye, Y., Nakakoji, K., Yamamoto, Y.: Understanding and improving collective attention economy for expertise sharing, Proc. CAiSE 2008, Montpellier, France, 167–181, Lecture Notes in Computer Science, Vol. 5074, Springer, Berlin, Heidelberg (June 2008)Google Scholar
  37. [37]
    Ye, Y., Nakakoji, K.: CodeDepot: A one-stop code search environment based on the character and structural search methods, J. Digital Practices, Information Processing Society of Japan, 2(2), 117–124 (in Japanese) (April 2011)Google Scholar

Copyright information

© Springer Science+Business Media New York 2013

Authors and Affiliations

  • Kumiyo Nakakoji
    • 1
  • Yasuhiro Yamamoto
    • 2
  • Yoshiyuki Nishinaka
    • 1
  1. 1.Software Research Associates Inc.TokyoJapan
  2. 2.Tokyo Institute of TechnologyYokohamaJapan

Personalised recommendations