Papers
Topics
Authors
Recent
Search
2000 character limit reached

Concept-centric Software Development

Published 28 Apr 2023 in cs.SE and cs.HC | (2304.14975v3)

Abstract: Developers have long recognized the importance of the concepts underlying the systems they build, and the primary role concepts play in shaping user experience. To date, however, concepts have tended to be only implicit in software design with development being organized instead around more concrete artifacts (such as wireframes and code modules). Palantir, a software company whose data analytics products are widely used by major corporations, recently reworked its internal representation of its software development process to bring concepts to the fore, making explicit the concepts underlying its products, how they are clustered, used within and across applications, and governed by teams. With a centralized repository of concepts, Palantir engineers are able to align products more closely based on shared concepts, evolve concepts in response to user needs, and communicate more effectively with non-engineering groups within the company. This paper reports on Palantir's experiences to date, analyzing both successes and challenges, and offers advice to other organizations considering adopting a concept-centric approach to software development

Definition Search Book Streamline Icon: https://streamlinehq.com
References (36)
  1. Christopher Alexander. 1977. A Pattern Language: Towns, Buildings, Construction. Oxford University Press.
  2. Ron Amadeo. 2021. A decade and a half of instability: The history of google messaging apps. https://arstechnica.com/gadgets/2021/08/a-decade-and-a-half-of-instability-the-history-of-google-messaging-apps/
  3. Frederick Brooks. [n. d.]. The Mythical Man-Month: Essays On Software Engineering. Pearson Education.
  4. Frederick Brooks. 1987. No Silver Bullet: Essence and accidents of software engineering. IEEE computer 20, 4 (1987), 10–19.
  5. Lyra J Colfer and Carliss Y Baldwin. 2016. The mirroring hypothesis: theory, evidence, and exceptions. Industrial and Corporate Change 25, 5 (2016), 709–738.
  6. Melvin E Conway. 1968. How do committees invent. Datamation 14, 4 (1968), 28–31.
  7. Terry Crowley. 2017. Complexity and Strategy. https://hackernoon.com/complexity-and-strategy-325cd7f59a92
  8. Edsger W Dijkstra and Edsger W Dijkstra. 1982. On the role of scientific thought. Selected writings on computing: a personal perspective (1982), 60–66.
  9. Steven D Eppinger and Tyson R Browning. 2012. Design structure matrix methods and applications. MIT press.
  10. Eric Evans. 2004. Domain-driven design: tackling complexity in the heart of software. Addison-Wesley Professional.
  11. Design patterns. Pearson Education Incorporated.
  12. Shawn Gilmore. [n. d.]. Narrative String Theory. https://www.vaultofculture.com/nst Online; accessed September 7, 2023.
  13. William Harrison and Harold Ossher. 1993. Subject-oriented programming: a critique of pure objects. In Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications. 411–428.
  14. Hamilton Helmer. 2016. 7 Powers: The Foundations of Business Strategy. Deep Strategy LLC.
  15. Mike Isaac. 2019. Zuckerberg plans to integrate WhatsApp, Instagram and Facebook Messenger. https://www.nytimes.com/2019/01/25/technology/facebook-instagram-whatsapp-messenger.html
  16. Daniel Jackson. 1995. Structuring Z specifications with views. ACM Transactions on Software Engineering and Methodology (TOSEM) 4, 4 (1995), 365–389.
  17. Daniel Jackson. 2021. The Essence of Software: Why Concepts Matter for Great Design. Princeton University Press.
  18. Michael Jackson and John Cameron. 1983. System Development. Vol. 85. Prentice-Hall Englewood Cliffs, NJ.
  19. Steve Jobs. 1997. Apple’s World Wide Developers Conference 1997 with Steve Jobs. https://youtu.be/GnO7D5UaDig?t=3135 Accessed on April 26, 2023.
  20. Aspect-oriented programming. In ECOOP’97—Object-Oriented Programming: 11th European Conference Jyväskylä, Finland, June 9–13, 1997 Proceedings 11. Springer, 220–242.
  21. Bertrand Meyer. 2014. Agile!: The good, the hype and the ugly. Springer Science & Business Media.
  22. Architecture anti-patterns: Automatically detectable violations of design principles. IEEE Transactions on Software Engineering 47, 5 (2019), 1008–1028.
  23. Casey Newton. 2022. Google reminders are now Google Tasks. https://twitter.com/CaseyNewton/status/1572269982704349185
  24. Donald Norman and Stephen Draper. 1986. User Centered System Design: New Perspectives on Human-Computer Interaction. L. Erlbaum Associates Inc.
  25. David Lorge Parnas. 1972. On the criteria to be used in decomposing systems into modules. Commun. ACM 15, 12 (1972), 1053–1058.
  26. David Lorge Parnas. 1976. On the design and development of program families. IEEE Transactions on software engineering 1 (1976), 1–9.
  27. Working with objects: the OOram software engineering method. Greenwich: Manning.
  28. Nelson P Repenning and John D Sterman. 2001. Nobody ever gets credit for fixing problems that never happened: creating and sustaining process improvement. California management review 43, 4 (2001), 64–88.
  29. Paul M. Romer. 1992. Two Strategies for Economic Development: Using Ideas and Producing Ideas. The World Bank Economic Review 6 (12 1992), 63–91. https://doi.org/10.1093/wber/6.suppl_1.63
  30. Richard Rorty. 1999. Achieving Our Country: Leftist Thought in Twentieth-century America. Harvard University Press.
  31. Object-oriented modeling and design. Vol. 199. Prentice-Hall Englewood Cliffs, NJ.
  32. James Scott. 1999. Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed. Yale University Press.
  33. Mary Shaw and David Garlan. 1996. Software architecture: perspectives on an emerging discipline. Prentice-Hall, Inc.
  34. Steven Sinofsky and Marco Iansiti. 2009. One Strategy: Organization, Planning, and Decision Making. Wiley.
  35. Joel Spolsky. 2005. The Project Aardvark Spec. https://www.joelonsoftware.com/2005/08/17/the-project-aardvark-spec/ Accessed on April 26, 2023..
  36. Ezra Vogel. 2011. Deng Xiaoping and the Transformation of China. Harvard University Press.
Citations (1)

Summary

  • The paper demonstrates that a systematic concept inventory can reduce conceptual entropy and strengthen cross-team collaboration.
  • It details the methodology of implementing concept sketches, clusters, and aliases to iteratively refine software concepts.
  • The study provides actionable recommendations, emphasizing AI-driven concept extraction and strategic integration in software development.

Concept-Centric Software Development

Palantir's approach to concept-centric software development represents a strategic integration of concept design theory into industrial software practices. By explicitly cataloging and managing the concepts underpinning their software, Palantir aims to enhance cross-team collaboration, evolve products in response to user feedback, and streamline communication. This paper presents their experiences, challenges, and insights from implementing a concept inventory.

Introduction to Concept-Centric Development

The concept-centric approach prioritizes the design and explicit representation of concepts within software systems, aligning with principles outlined in "The Essence of Software" by Daniel Jackson. Concepts are treated as independent units that cater to user needs, with an emphasis on modularity, specificity, and user familiarity. This methodology deviates from traditional methods where concepts often remain implicit within code and design artifacts.

Palantir's implementation involved restructuring their internal ontology to accommodate concepts as first-class entities, linking them to existing code modules, team responsibilities, and design documents. This integration is illustrated with tools like Palantir's Foundry, enabling seamless interaction between concepts, resources, and team dynamics. Figure 1

Figure 1: A graph of Palantir's concept clusters and resources in Foundry, showcasing how concepts are integrated into the company’s software ecosystem.

Theory of Concept Design

The theoretical foundation for concept-centric development builds on the notion that software usability and quality are inherently tied to the clarity of its conceptual models. By focusing on explicit, reusable concepts, the approach aims to improve product usability and coherence across applications. This aligns with historical concepts in HCI and software design that advocate for clear, user-centered design principals.

Managing Complexity and Conceptual Entropy

Palantir's products, consisting of extensive applications and backend services, face inevitable complexity as they scale. The paper introduces "conceptual entropy" to describe the degradation of system coherence due to misalignment and redundancy in concepts. This entropy is akin to technical debt, representing unrecognized dependencies and inconsistencies within the conceptual framework of large software ecosystems.

Through a structured concept-centric approach, Palantir aims to address this entropy, streamline development processes, and promote systemic clarity.

Implementation of Concept Inventories

The development of a concept inventory at Palantir involves several key elements:

  1. Concept Sketches: Visual representations that capture the essence of a concept, aiding in comprehension and communication (Figure 2). Figure 2

    Figure 2: A concept sketch for the Databank concept, illustrating its role in data pipeline construction.

  2. Concept Clusters: Grouping related concepts into thematic categories to simplify management and accountability, assigning ownership to specific teams or managers.
  3. Aliases and Names: Allowing multiple terminologies for a single concept to facilitate transition and communication across teams.

These elements collectively form the infrastructure for organizing and evolving the concept inventory, ensuring it remains a relevant and powerful tool for software development at scale.

Concepts in Action: Case Studies

The paper provides detailed case studies illustrating the evolution and refinement of concepts:

Clip Concept

The Clip concept, born out of a need for dynamic embedding of content, underscores the iterative nature of concept design. Initial implementation led to challenges in user understanding of version control semantics. A metaphorical exploration led to the formalization of a cluster of related sub-concepts, clarifying user interactions with live and static data views. Figure 3

Figure 3: An astronomy metaphor used to refine the Clip concept's understanding and application.

Entity Resolution

The evolution from ObjectContainer and ResolutionGraph to Atom and Bag concepts demonstrates a shift in handling data aggregation and resolution. This change simplified processes and clarified user interactions with entity data, reducing complexity and increasing flexibility. Figure 4

Figure 4: Transition from resolution graph-based object handling to atom and bag models for improved flexibility and clarity.

Impact Assessment and Challenges

Palantir's adoption of concept-centric methodologies led to significant organizational and product-level impacts:

  • Increased Clarity and Collaboration: Enhanced product documentation and clearer communication among non-engineering roles.
  • Career Growth for Product Managers: New pathways for PMs to progress without leaving technical roles, emphasizing concept management.
  • Adoption Challenges: Initial resistance and bootstrapping difficulties, addressed through strategic seeding and integration into existing workflows.

Recommendations and Future Directions

For organizations considering similar practices, the paper offers recommendations centered on the systemic adoption of concept inventories, integration into planning, and commitment to concept ownership. As industry practices evolve, the role of AI and automation in concept extraction and management could revolutionize how concepts are integrated during development, marking a promising avenue for future research and application in software engineering.

Conclusion

Palantir's experience with concept-centric software development illustrates the potential benefits of making concepts explicit and central to software practices. Despite challenges, the strategic application of concept design theory has shown promise in reducing complexity, enhancing collaboration, and aligning software systems more closely with user needs.

Paper to Video (Beta)

No one has generated a video about this paper yet.

Whiteboard

No one has generated a whiteboard explanation for this paper yet.

Open Problems

We haven't generated a list of open problems mentioned in this paper yet.

Collections

Sign up for free to add this paper to one or more collections.

Tweets

Sign up for free to view the 10 tweets with 38 likes about this paper.

HackerNews