Manifesto for

Knowledge-Centric

Software Development

We subscribe to a Knowledge-Centric perspective on software development, treating knowledge as the fuel that drives the software development engine. That means understanding software development in its truest form: the acquisition and application of knowledge. That perspective is a reasonable basis for taking actions that predictably and positively affect both individual well-being and company revenue. Through these combined effects, we aspire to transform not just the software development industry, the lives of those behind it and eventually the world.

Knowledge discovery

  • Knowledge discovery is answering a series of questions for a gradual reduction of the knowledge gap between what a developer knows and what they need to know to effectively do their job[1].
  • Software developers are engaged in a knowledge discovery process that transforms invisible knowledge into visible, tangible working software[2].
  • In a knowledge discovery process, failures and errors are expected and are treated as fuel to drive the expansion of knowledge[2]

Knowledge

  • All software is a representation of knowledge and it is the acquisition of this knowledge that is the real activity of software development[3].
  • Acquired knowledge is always context dependent[12], often interpretable , and sometimes temporary or conflicting. Therefore the process of continuous knowledge discovery is more important than the acquired knowledge itself[13].
  • Knowledge is a property of the system in which individuals and teams operate[6]. Knowledge is the most important resource of an organization[4]. It encompasses the collective knowledge of the team - the insights of the Product Owner, QAs and Architects; the available documentation; the Customer, and external aids such as books and videos on the internet, StackOverflow, Copilot and ChatGPT[5].
  • The most valuable knowledge to acquire is knowledge that no one has[3],

Efficient knowledge discovery

  • Efficient knowledge discovery minimizes the time and effort required to acquire new knowledge, thereby reducing the knowledge gap more quickly and effectively.
  • Achieving efficient knowledge discovery hinges on the effective utilization and management of organizational knowledge resources. These resources encompass the existing knowledge, expertise, and insights available within an organization. They include not only formal documentation like databases, manuals, and standard operating procedures but also the tacit knowledge that resides in the experience and skills of individual team members, the organizational culture, purpose and strategy[6].
  • An organization which continuously increases its efficiency in knowledge discovery is a learning organization[9].

Talent utilization

  • Efficient knowledge discovery is critical for unlocking the full potential of both individuals and teams, which naturally leads to high productivity, cost efficiency and predictability.
  • A developer's capability should be judged by their efficiency in knowledge acquisition and application, rather than the quantity of code produced[7].
  • Every software developer should be allowed to apply their knowledge effectively, as per the level of their expertise. A match between individual capabilities and work challenges enables even junior developers to contribute on par with seasoned professionals. It's not about the years of experience, but about how efficiently individuals and teams can learn and apply new knowledge to maximize their potential.
  • To be effective, every software developer needs to be able to dispose of time in fairly large chunks[8].

Well-being

  • Efficient knowledge discovery enhances the developer work experience and overall well-being
  • When individual capability significantly exceeds task complexity, the knowledge gap becomes too narrow, leading to wasted potential and boredom. On the other hand, if task complexity surpasses individual capability, the knowledge gap widens, leading to stress and low productivity. A proper-sized gap keeps developers in the Flow state, fully immersed and focused on their work, leading to higher productivity and job satisfaction[10][11].

References

1. Wheeler, J. A. (1990). Information, physics, quantum: The search for links. In W. H. Zurek (Ed.), Complexity, entropy, and the physics of information (Vol. 8, pp. 3–28). Taylor & Francis.

2. Bailin, S. (1997). Software development as knowledge creation. International Journal of Applied Software Technology, 3, 75-89. https://scholar.google.com/scholar?cluster=11953880325191724796

3. Armour, P.G. (2003). The Laws of Software Process, Auerbach

4. Spender, J. C. (1996). Making Knowledge the Basis of a Dynamic Theory of the Firm. Strategic Management Journal, 17, 45-62

5. Holsapple, C. W., & Joshi, K. D. (2001). Organizational knowledge resources. Decision Support Systems, 31, 39-54. https://doi.org/10.1016/S0167-9236(00)00118-4

6. Connell, N. A. D., Klein, J. H., & Powell, P. L. (2003). It’s Tacit Knowledge but Not as We Know It: Redirecting the Search for Knowledge. The Journal of the Operational Research Society, 54(2), 140–152. http://www.jstor.org/stable/4101605

7. Holsbeeke, L., Ketelaar, M., Schoemaker, M. M., & Gorter, J. W. (2009). Capacity, Capability, and Performance: Different Constructs or Three of a Kind? Archives of Physical Medicine and Rehabilitation, 90(5), 849–855. https://doi.org/10.1016/j.apmr.2008.11.015

8. Drucker, P. F. 1. (1967). The effective executive. New York, Harper & Row.

9. Senge, P.M. 1990: The Fifth Discipline , Random House, 1990

10. Csikszentmihalyi, M. (1990). Flow: the psychology of optimal experience. United States of America: Harper & Row.

11. Schaffer, O. 2013. Crafting Fun User Experiences: A Method to Facilitate Flow. Human Factors International Whitepaper. https://scholar.google.com/scholar?cluster=9760324565241258858

12. Jovchelovitch, S. (2007). Knowledge in context: Representations, community and culture. London: Routledge.

13. Nonaka, I. (1994). A Dynamic Theory of Organizational Knowledge Creation. Organization Science, 5(1), 14–37. http://www.jstor.org/stable/2635068