4 ms·
I'm working towards a similar system-oriented design but for a web app builder, and I'm starting to believe that this principle is actually one of the key missi
by beaconstudios 8y ago
I'm working towards a similar system-oriented design but for a web app builder, and I'm starting to believe that this principle is actually one of the key missing features of the normal software development practice. It's closely related to the idea that the data representation of a UI should match the shape of the UI (a list should be represented by an array, a tree by a tree, and so on), but more philosophical and with more far-reaching effects.
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.
- danShumway 8y agoI tried to keep this article shorter, because it's doing double-duty as promotion for the game, but this could be such a longer, more generalized topic. 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.
- beaconstudios 8y agoAbsolutely. I think it's a fundamental fact of human psychology that we are attuned to subconsciously figure out the underlying rules behind a system and then plan and act based those rules, meaning that a system that does in fact follow fundamental rules is both predictable and a pleasure to use - that's probably partly why systemic games are so enjoyable. With the corollary that systems without an underlying and consistent ruleset are harder to understand, provide less venue for the user to produce innovative use cases, and seem to come (at least for me) with an unconscious sense of unease with using them. It's like UX but at a more fundamental level.
- LoSboccacc 8y ago> the idea that the data representation of a UI should match the shape of the UI 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
- beaconstudios 8y agoyou do still need to differentiate between the data as presented to the renderer, and the data storage format. For example, you may have a hierarchical UI that wants hierarchical data, but there's no reason you can't serialize that data to a relational data store.
- LoSboccacc 8y agodepends. if you need to expose your data trough api your api will likely follow the relational model. it's then more convenient for the interpretation to happen in the presentation layer. 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.
- ahane 8y agoi've had a similar intuition and remember also reading somewhere that eventually your underlying data structure will shine through into the user interface, and if it doesn't make sense the whole application feels off. 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?
- beaconstudios 8y agoI would say if you look into systemic games, you will find similar characteristics. I don't think it's so much that the data structure is tied with the interface that is the root cause of the emergent beauty, but the fact that the representation of the concept is accurate and true with minimal compromises. This is a very hard thing to do well. So from end to end it's more like the interface represents the data & logic which represents the design which represents the concept. 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.
- danShumway 8y agoOn the game side of things, also check out Spelunky. 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-story/ https://www.pentadact.com/2012-07-13-shopstorm-a-spelunky-st...