







Only the engineers who work on a large software system can meaningfully participate in the design process. That’s because you cannot do good software design without an intimate understanding of the concrete details of the system. In other words, generic software design advice is typically useless for most practical software design problems.

Laws of Software Engineering
A collection of principles and patterns that shape software systems, teams, and decisions.

Special Issue Editorial – Accumulation and Evolution of Design Knowledge in Design Science Research: A Journey Through Time and Space
Sir Isaac Newton (1676) famously said, “If I have seen further, it is by standing on the shoulders of giants.” Research is a collaborative, evolutionary endeavor—and it is no different with design science research (DSR), which builds upon existing design knowledge and creates new design knowledge to pass on to future projects. However, despite the vast, growing body of DSR contributions, scant evidence of the accumulation and evolution of design knowledge has been articulated in an organized DSR body of knowledge. Most contributions rather stand on their own feet than on the shoulders of giants, and this continues to limit how far we can see, curtailing the extent of the broader impacts that can be made through DSR. In this editorial, we aim at providing guidance on how to position design knowledge contributions in wider problem and solution spaces. We propose (1) a model conceptualizing design knowledge as a resilient relationship between problem and solution spaces, (2) a model that demonstrates how individual DSR projects consume and produce design knowledge, (3) a map to position a design knowledge contribution in problem and solution spaces, and (4) principles on how to use this map in a DSR project. We show how fellow researchers, readers, editors, and reviewers, as well as the IS community as a whole, can make use of these proposals, and also illustrate future research opportunities.
Domain-Driven Design: Tackling Complexity in the Heart of Software
Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best ...

Convivial design heuristics for software systems
The theme of this workshop is the proliferation of ideas about calling into question the cultural roots of our current programming languages, and the search for alternative paradigms with other cultural bases.
Design System | TanStack
The TanStack Design System — living design tokens and components.

A Design Science Research Methodology for Expert Systems Development
The knowledge of design science research (DSR) can have applications for improving expert systems (ES) development research. Although significant progress of utilising DSR has been observed in particular information systems design – such as decision support systems (DSS) studies – only rare attempts can be found in the ES design literature. Therefore, the aim of this study is to investigate the use of DSR for ES design. First, we explore the ES development literature to reveal the presence of DSR as a research methodology. For this, we select relevant literature criteria and apply a qualitative content analysis in order to generate themes inductively to match the DSR components. Second, utilising the findings of the comparison, we determine a new DSR approach for designing a specific ES that is guided by another result – the findings of a content analysis of examination scripts in Mathematics. The specific ES artefact for a case demonstration is designed for addressing the requirement of a ‘wicked’ problem in that the key purpose is to assist human assessors when evaluating multi-step question (MSQ) solutions. It is anticipated that the proposed design knowledge, in terms of both problem class and functions of ES artefacts, will help ES designers and researchers to address similar issues for designing information system solutions.
Software Bonkers
I’m software bonkers: I can’t stop thinking about software. And I can’t stop building software.
Convivial Computing Salon #6: Convivial design heuristics for software systems
What is good software architecture?
What good architecture looks like, how to improve your skill at building it –and why Architects are not always the answer. Guest post by Matthew Hawthorne, who built large systems at Netflix & Twitter

Inside Design Tokens: Modeling & Communication
Design system architecture with focus on design tokens, that form the vocabulary of your visual design language, helping to streamline the communication amongst stakeholders. Modeling the system with boundaries to ensure clear purpose and predictability for design tokens and stability guarantees wit

Design Cybernetics
This book offers practical guidance for cybernetic processes of design and innovation. It also develops theoretical principles. The authors use accessible, non-technical language, which will help a wide range of readers gain knowledge of this important field.

Principles for crafting software
My principles for deciding what to work on and how to build it.

An introduction to radical participatory design: decolonising participatory design processes
Outside of community-led design projects, most participatory design processes initiated by a company or organisation maintain or even strengthen power imbalances between the design organisation and the community on whose purported behalf they are designing, further increasing the absencing experience. Radical participatory design (RPD) is a radically relational answer to the coloniality inherent in participatory design where the community members’ disappointment is greater due to the greater expectations and presencing potential of a ‘participatory design’ process. We introduce the term RPD to show how research and design processes can be truly participatory to the root or core. Instead of treating participatory design as a method, a way of conducting a method, or a methodology, we introduce RPD as a meta-methodology, a way of doing any methodology. We explicitly describe what participation means and compare and contrast design processes based on the amount of participation, creating a typology of participation. We introduce ‘designer as community member’, ‘community member as designer,’ and ‘community member as facilitator’ models and provide characteristics for the meta-methodology of RPD.

An introduction to radical participatory design: decolonising participatory design processes
Outside of community-led design projects, most participatory design processes initiated by a company or organisation maintain or even strengthen power imbalances between the design organisation and the community on whose purported behalf they are designing, further increasing the absencing experience. Radical participatory design (RPD) is a radically relational answer to the coloniality inherent in participatory design where the community members’ disappointment is greater due to the greater expectations and presencing potential of a ‘participatory design’ process. We introduce the term RPD to show how research and design processes can be truly participatory to the root or core. Instead of treating participatory design as a method, a way of conducting a method, or a methodology, we introduce RPD as a meta-methodology, a way of doing any methodology. We explicitly describe what participation means and compare and contrast design processes based on the amount of participation, creating a typology of participation. We introduce ‘designer as community member’, ‘community member as designer,’ and ‘community member as facilitator’ models and provide characteristics for the meta-methodology of RPD.
