Software systems work with data. I believe great system should obey the one simple rule
#1. Every possible operation with data does exist
The knowledge of possibility is a really powerful thing. I want to create a software system that has almost no restrictions in a given domain. You should be able to extract any data, present data and change any data.
Let’s imagine you are using an email client. Suddenly, you want to group all incoming messages by sender. You should be able to do that. Or you want to find all emails for October, create October folder and move the emails into this folder. That should be possible as well.
Every software system has a domain model behind and a set of rules. As a minimum, system should provide all kind of operations on this model: change properties, change relations, create entities, etc. Unfortunately, almost all existing systems are restrictive.
If you know that operation is possible, you’ll find it. This knowledge gives you a confidence. The operation can be quite advance and well hidden, but still it is much to know that it does exist than dealing with illogical restrictions. Why the hell I can move a user story into a project, but can’t change it’s owner? Why I can change features in batch, but can’t do that with tasks?
If the rule #1 is applied, you are giving many great things to the end users:
- UI consistency
Pretty cool it seems…