Using Philosophy in IT architecture
In my years in IT, I’m experiencing an increasing tendency towards using the philosophical rather than the logical when it comes to IT architecture. And there’s one particular tool I want to share.
This tool is a thought-process to determine how to best break an IT system into its individual parts. Without the use of buzzwords like microservices, design patterns, big data or cloud. Over the years it’s proven to be one of my most used tools while developing, analyzing and designing IT systems. (…And exploring the world for that matter, because it can be used to explore everything.)
It is about asking four philosophical questions of being, which I’ve derived from the field of existential phenomenology:
- Existential — Studies the concrete existence
- Phenomenology — Studies ‘structures of experience’
Philosophers use these fields to study humans, the existential questions concerning our being and the structures of our experiences within the world we live in and how they contribute to our being.
Now, since we are human, we have the ability to ‘view things from another perspective’; We can imagine ourselves as being someone else, or even, a thing. In this case we want to experience being an IT system. Or a component/aspect in an IT system.
Here are the four questions:
What is my purpose?
What’s the existential purpose of me (being the software part) being myself? Which functions can I perform? And what do I deliver to my environment?
To improve: Is my purpose clear, constant and consistent to my environment?
What am I composed of?
To fulfill my purpose which parts of me help me to do so? Which parts of me perform which functions and what do they amount to when they are combined into me? And what value do I add myself?
To improve: Can I stay who I am, or do I need to split to represent clearer, more atomic existential purposes?
What’s in my environment?
Looking outward, to which other parts (in the application or app. landscape) am I connected? What is the purpose of those connections and how do they contribute to me fulfilling my purpose?
To improve: Are there connections I can make that help me to fulfill my purpose even better?
What do I communicate?
Looking into each connection: What is being said to me? What do I reply? Which parts of the conversation are vital to fulfilling my purpose?
To improve: Can something be added to/removed from the conversation to fulfill my purpose even better?
These are the questions you can use to constantly move across the parts/aspects of an application to see if it contributes to ‘the whole’ in the most meaningful way possible. Doing so, this creates a detailed overview that allows you to reason about conception of new IT systems and changes and impact on existing IT systems. This, in turn, allows creation of a (more) purposeful architecture within its specific context.