Today at work, a colleague told me about a very interesting topic I never before thought about; Composable Vs Contextual software. I decided to read a bit more on the topic and just post some brief conclusions.
When designing new software, probably one of the most important questions we want to ask ourselves are:
-Who is going to use it?
-How is going to use it?
By talking to the future users of the solution, we can gather relevant information that will help us give answers to the above questions and therefore, determine if what we have to build has to be composable or contextual.
So what is composable and what is contextual then?
If you type in google "define:composable design" or "define:contextual design" you will get really good definitions(Just in case is not clear what I am about to say next). But I will also try to give a more reductionist definition with my own words:
-Composable: For me a composable system, is boundaryless in what regards the interactions the user can have with its components.
-Contextual: For me a contextual system is a system that defines constraints, flows, etc... to guide the user in a predefined way, when it comes to the interactions with its components.
Pros and Cons
So as I said before the important thing is, to understand who the user is and how is going to use the system, but is also good to be aware of some advantages and disadvantages of both designs:
Composable
Pro: Big flexibility.
Con: With great power comes great responsibility(It can be dangerous if in wrong hands).
Pro: Less maintainability
Con: May require training/mentorship for less experienced users
Pro: Generic/Multipurpose
Con: Non-Specific, could be used for the wrong purpose.
Pro: Fast for experienced users
Con: Slow for less experienced users
Contextual
Pro: Solves a problem
Con: Is limited to just that problem/Not reusable in other problems
Pro: Its easy to use
Con: Needs maintenance
Pro: Fast for less experienced users
Con: A constraint for experienced users
Pro: Does most of what you want fast and easy.
Con: Dietzler’s Law for Access(Does 80% of what the user wants easily, but does another 10% with difficulties and finally is unable to do the other 10%)
Just to complete this post, lets write some examples of Contextual vs Composable:
-GUI Vs Terminal
-Framework Vs Programmatical approach
-Wizard Vs copy&paste files into directories
As a conclusion, all I can say is that the decision on which design to go for, will depends on the type of user you are dealing with.
Resources:
-http://gigaom.com/2013/02/16/devops-complexity-and-anti-fragility-in-it-context-and-composition/
-http://nealford.com/memeagora/2013/01/22/why_everyone_eventually_hates_maven.html
-www.google/com
When designing new software, probably one of the most important questions we want to ask ourselves are:
-Who is going to use it?
-How is going to use it?
By talking to the future users of the solution, we can gather relevant information that will help us give answers to the above questions and therefore, determine if what we have to build has to be composable or contextual.
So what is composable and what is contextual then?
If you type in google "define:composable design" or "define:contextual design" you will get really good definitions(Just in case is not clear what I am about to say next). But I will also try to give a more reductionist definition with my own words:
-Composable: For me a composable system, is boundaryless in what regards the interactions the user can have with its components.
-Contextual: For me a contextual system is a system that defines constraints, flows, etc... to guide the user in a predefined way, when it comes to the interactions with its components.
Pros and Cons
So as I said before the important thing is, to understand who the user is and how is going to use the system, but is also good to be aware of some advantages and disadvantages of both designs:
Composable
Pro: Big flexibility.
Con: With great power comes great responsibility(It can be dangerous if in wrong hands).
Pro: Less maintainability
Con: May require training/mentorship for less experienced users
Pro: Generic/Multipurpose
Con: Non-Specific, could be used for the wrong purpose.
Pro: Fast for experienced users
Con: Slow for less experienced users
Contextual
Pro: Solves a problem
Con: Is limited to just that problem/Not reusable in other problems
Pro: Its easy to use
Con: Needs maintenance
Pro: Fast for less experienced users
Con: A constraint for experienced users
Pro: Does most of what you want fast and easy.
Con: Dietzler’s Law for Access(Does 80% of what the user wants easily, but does another 10% with difficulties and finally is unable to do the other 10%)
Just to complete this post, lets write some examples of Contextual vs Composable:
-GUI Vs Terminal
-Framework Vs Programmatical approach
-Wizard Vs copy&paste files into directories
As a conclusion, all I can say is that the decision on which design to go for, will depends on the type of user you are dealing with.
Resources:
-http://gigaom.com/2013/02/16/devops-complexity-and-anti-fragility-in-it-context-and-composition/
-http://nealford.com/memeagora/2013/01/22/why_everyone_eventually_hates_maven.html
-www.google/com