Share via


Skillful software design and the scientific method

Many professionals have observed the commonality between skillful software design and the application of the processes of science —also known collectively as “the scientific method”:

The mapping of hypothesis with an initial design, experimentation with emergent design and the general style of closed-loop feedback control processes.

If someone say “this is a very important software project for our organization, and we need best-of-breed practices and technology”, then she should consider to get on-board those professionals that are fully aware of this important parallel with science.

Problem with a popular and misleading notion of science is that scientific work is just about isolated work on labs and not about work done in presence of hard constrains. But this notion is just an imaginary wall people build in their minds, and it is just that, an imaginary wall.

Here are two important related articles:

Programming as Theory Building by Peter Naur — plus writings by Pelle Ehn and Miyamoto Musashi. Part of Appendix B: Naur, Ehn, Musashi of Agile Software Development: The Cooperative Game (2nd Edition) by Alistair Cockburn.

The nature of scientific “proof” and the development of software by Joe Marasco.