I agree with your post SO much. It is usually easier to have a system with a couple of simple rules that are extremely robust and that can be composed and reused than it is to have a system with a separate toggle or setting for every scenario.
In general, I'm finding that I prefer very small systems that favor consistency over bigger systems that are supposedly more 'intuitive' because they have a bunch of extra layers on top of their internals. It's kind of amazing how much simpler and easier it is to teach things like testing, browser automation, build tools, and so when you strip out all of the stuff that gets shoved on top of them and just start working at the implementation level.
that's one weird assumption. I always worked with shape the data as the real world and shape the ux as the user workflows, with businness logic doing whatever transformation needed
that's the only way I see that works for long term project. if you try to semplify the real world model, you'll always come to regret it later
i.e. I'm modelling now leaflets. We're supporting many grid per spread om the datamodel, eac with their shape position and dimension, but the ux will only show one grid unless a client happens to need more than one
I guess need and solutions change dramatically between a project and a saas
or, splitting hair, yeah if the ui needs some hierarchy rendered out of a flat table then the javascript controller should transform it before passing to the renderer.
depends where you place the cut at this point.
I've first had this intuition when working with d3, where the visualization becomes trivial if your data is in the right shape.
Workflowy is another example of an app where there is a minimal disparity between data structure and interface.
Does anybody have other examples of apps or games that share this deep integration of structure and interaction?
For examples of games I've played that I consider fairly systemic and enjoyed on this level: the deus ex series, minecraft (a very strongly systemic game), factorio, watchdogs. Apps-wise I can only think of my own app right now but I'm sure they're out there. Actually, come to think of it, the product planning software I use (productboard.com) is pretty great in this regard but not to the extent that games are. Most software just isn't big enough to have enough features to be truly "systemic" in my eyes.
A lot of effort has gone into making interactions consistent and universal, so really interesting stuff can happen and it's not difficult to figure out why it happened.[0]
Spelunky was a big motivator for me to think more about building what I think of as these kind of "honest" systems, for lack of a better word.
[0]: https://www.pentadact.com/2012-07-13-shopstorm-a-spelunky-st...
The closer I get to following this principle in my designs, the more practical and reusable the implementations become, alongside the major benefit that it's easy to reason intuitively about the behaviours that will arise from their interactions.
When you build software you can go down two routes - you can find the "correct" implementation that matches your design's intent, and not have to deal with many (if any) edge cases and escape hatches. Or, more commonly, you can find a close-but-not-quite-right implementation and spend way too much time coding explicit edge case handling that ends up acting like a translation layer between the theoretical best implementation and your chosen implementation anyway.