All this after a night of getting up to speed on the best frameworks for build a cross-platform (mac/win/ios/android) graphics-heavy app…
In my other life I am a researcher of psychology, or rather of natural systems which happen to include the human mind. I am currently working through my dissertation which will involve looking at the qualities of theories in a move to unite the sciences. A lot of that work has to do with thinking about the way we think, and I am beginning to see some overlap into software design.
I have written a few times about the ideal software toolkit (The Mythical Toolkit, What makes a toolkit great), and it isn’t until now that I am beginning to think that well designed software shares certain organizational qualities with theories in the natural sciences. Now, there is the perspective that “good” software just does it’s job and doesn’t cost us any more money. This is true. However, I think that this quality of “good” is not mutually exclusive with “good” design. That is, a network of conceptual linking which is robust and scalable, and applicable to other problem domains. I suppose if that is the use of a bit of code then it fulfills the aforementioned notion of “good” software.
I imagine that “good” theories in the natural sciences follow that second notion of good software. They are robust in their predictiveness, and stand the test of time and challenge in the face of new information. I would say that “Good” theories have well-developed concepts which apply to more problem domains and even to other fields. This is the reason I am so intrigued with the idea of systems theory, because it provides a robust abstract framework for building specific theories about anything.
So to improve on my writing in The Mythical Toolkit, I would now refine that a “good” toolkit is one that has well-developed concepts that are somehow more in line with principles found elsewhere in the natural world. I realize that this is a stretch into some pretty deep territory. But it seems like we start with some self-imposed idea (i.e. hypothesis, prototype) of what a natural theory or toolkit should be, and then we compare it with our observations (i.e. experiment/refine, test/retest) until it more accurately answers the problem question (i.e. publication, gold master release). This process helps us move from our ham-fisted hypothetical attempts at problem solving into one that is more “in line with nature,” so to speak.