skip to main content
10.1145/1640089.1640126acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Writing code for other people: cognitive psychology and the fundamentals of good software design principles

Published:25 October 2009Publication History

ABSTRACT

This paper demonstrates how the cognitive model of the mind can explain the core fundamentals behind widely accepted design principles. The conclusion is that software design is largely a task of chunking analogies and presents a theory that is detailed enough to be accessible to even the most inexperienced programmer. The corollary of which is a pedagogical approach to understanding design principles rather than the necessity of years of software development experience.

References

  1. G. Booch; R. A. Maksimchuk; M. W. Engle; B. J. Young; J. Conallen; K. A. Houston. Object-Oriented Analysis and Design with Applications, Third Edition (2007). Addison-Wesley ISBN 0-201-89551-X Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. F. Brooks. No Silver Bullet - Essence and Accidents of Software Engineering (1986). http://www.lips.utexas.edu/ee382c-15005/Readings/Readings1/05-Broo87.pdf.Google ScholarGoogle Scholar
  3. G. Cooper. Research into Cognitive Load Theory and Instructional Design at UNSW (1998). http://education.arts.unsw.edu.au/staff/sweller/clt/index.htmlGoogle ScholarGoogle Scholar
  4. J. O. Coplien. Multi-Paradigm Design for C++ (2003). Addison-Wesley ISBN 0-201-82467-1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. Cowan. The Magical Number 4 in Short-term Memory: A Reconsideration of Mental Storage Capacity. In Behavioral and Brain Sciences, Vol. 24, No. 1. (February 2001), pp. 87--185. (2001)Google ScholarGoogle Scholar
  6. O. Dahl, E. Dijkstra, C. A. R Hoare. Structured Programming (1972). Academic Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. A. Didierjean, and F. Gobet. Sherlock Holmes - An expert's view of expertise. In British Journal of Psychology 99: 109--125 (2087).Google ScholarGoogle Scholar
  8. D. K. Dirlam. Most efficient chunk sizes. In Cognitive Psychology, 3:355--359, 1972.Google ScholarGoogle ScholarCross RefCross Ref
  9. M. Fowler, K. Beck, J. Brant, and W. Opdyke. Refactoring: Improving the Design of Existing Code (1999). Addison-Wesley ISBN 0-201-48567-2.Google ScholarGoogle Scholar
  10. D. Gentner. Structure-mapping: A theoretical framework for analogy. In Cognitive Science, 7, pp 155--170 (1983).Google ScholarGoogle ScholarCross RefCross Ref
  11. F. Gobet. Discrimination Nets, Production Systems and Semantic Networks: Elements of a Unified Framework (1996). http://people.brunel.ac.uk/~hsstffg/papers/UnifiedFramework/UnifiedFramework.html. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. F. Gobet, P. C. R. Lane, S. Croker, P. C-H. Cheng, G. Jones, I. Oliver, and J. M. Pine. Chunking mechanisms in human learning. In TRENDS in Cognitive Sciences, 5, 236--243. (2001).Google ScholarGoogle ScholarCross RefCross Ref
  13. Gamma, Helm, Johnson and Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. (1995). Addison-Wesley ISBN 0-201-63361-2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Douglas R. Hofstadter. Analogy as the Core of Cognition. In Dedre Gentner, Keith Holyoak, and Boicho Kokinov (eds.) The Analogical Mind: Perspectives from Cognitive Science, Cambridge, MA: The MIT Press/Bradford Book, 2001, pp. 499--538.Google ScholarGoogle Scholar
  15. K. J. Holyoak and P. Thagard. The Analogical Mind (1997). http://cogsci.uwaterloo.ca/Articles/Pages/Analog.Mind.htmlGoogle ScholarGoogle Scholar
  16. J. N. MacGregor. Short-term memory capacity: Limitation or optimization? In Psychological Review, 94(1):107--108, 1987.Google ScholarGoogle ScholarCross RefCross Ref
  17. George A Miller. The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information. In The Psychological Review, 1956, vol. 63, pp. 81--97 (1956)Google ScholarGoogle Scholar
  18. H. Mills, R. Linger, A. Hevner. Principles of Information System Design and Analysis (1986). Academic Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. G. Myers. Composite/Structured Design (1978). Van Nostrand Reinhold. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. M. Page-Jones. The Practical Guide to Structured Systems Design (1988). Yourdon Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. T. Stafford, M. Webb. Mind Hacks (2004). O'Reilly ISBN 0-596-00779-5Google ScholarGoogle Scholar
  22. P. Van den Broek, K. Risden, Y. Tzeng, T. Trabasso, and P. Brasche. Inferential questioning: Effects of comprehension of narrative texts as function of grade and timing. In Journal of Educational Psychology, 93(3): 521--529 (2001).Google ScholarGoogle ScholarCross RefCross Ref
  23. N. Wirth. Program Development by Stepwise Refinement (1983). In Communications of the ACM vol. 26(1). Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. N. Wirth. Algorithms and Data Structures (1986). Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. E. Yourdon, L. Constantine. Structured Design (1979). Prentice-Hall.Google ScholarGoogle Scholar

Index Terms

  1. Writing code for other people: cognitive psychology and the fundamentals of good software design principles

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Article Metrics

          • Downloads (Last 12 months)11
          • Downloads (Last 6 weeks)0

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!