Think of "Event Storming".
A great way to talk about the "why" and to grow an understanding of how a problem can be solved.
The result can be multiple "flows" that describe a series of events from the first command to the expected outcome.
We have the option to directly translate a flow to code.
And by keeping the flow in one place, we also keep a direct mapping from our code to the EventStorming-results.
The "why" will not be lost.
The code can contain multiple flows and every flow can have a scenario-like description like:
"the user is able to select a product"
This is what my passion is all about.
To keep the "why" in one place.
This also enables better collaboration between multiple disciplines (like UX <-> DEV)
I understand that there are sometimes practical reasons for not being able to use ClojureScript, but have you given it a go? It's really very, very nice (much nicer than JS in pretty much every way).
I've been trying to move towards ClojureScript for a while, but there are so few introductory resources out there that allow you to navigate between the Clojure world and the JavaScript world in a way that makes sense to people who come from JS backgrounds exclusively.
I wish OReileys would issue an expanded version of their Intro ClojureScript book!
It's definitely a lot to take on. I'd probably start with just plain Clojure to learn the syntax and how to do functional programming, then look into ClojureScript.
Get comfortable using Lein and editing your project.clj, then check out this plugin:
It's a big investment but learning Lisp will repay you. There's tons of classic CS literature that you'll now be able to unlock and immutability really is the future, so it's good to start getting acquainted with it.
Totally. Since I started following React and digging into various links and resources the FP paradigm is really starting to make sense in terms of long-term benefit. Time for the next step, however.
it's really unfortunate clojurescript is not written in javascript (or clojurescript, like coffeescript compiler is written in coffeescript ). I wanted to integrate a lisp to a toy jsbin app (https://mparaiso.github.io/playground/), but no way, right now i'm using outlet. See the use case? clojurescript is never going to be big in javascript land if one cant compile it in the browser.
Looking forward to that. I'm a JS dev who learned Clojure through Clojurescript (and D.Nolen's blog). In trying to entice my colleagues to try it, the JVM bit seems to be a bit of a barrier... but the LightTable development loop blows them away.
Yep, camus2 points out environments like jsbin. Bookmarklets are another place you wouldn't use something like ClojureScript.
I'd argue once you go beyond "small" things though switching to ClojureScript is preferable to duplicating large parts of its functionality in separate JS libs.
- immutable data
- immutable vdom
- global state atom, no hidden local state.
- no manual DOM manipulation code (read or write).
- a single top down flow of data from input to output
- Events and Signals from FRP that can be manipulated using pure higher order functions.
etc.
As a bonus it's very modular, so if it doesn't fit your needs at least some subset of it will.
Think of "Event Storming". A great way to talk about the "why" and to grow an understanding of how a problem can be solved. The result can be multiple "flows" that describe a series of events from the first command to the expected outcome.
We have the option to directly translate a flow to code. And by keeping the flow in one place, we also keep a direct mapping from our code to the EventStorming-results. The "why" will not be lost. The code can contain multiple flows and every flow can have a scenario-like description like: "the user is able to select a product"
This is what my passion is all about. To keep the "why" in one place. This also enables better collaboration between multiple disciplines (like UX <-> DEV)
This is the idea behind scenario based programming. I am working on an open source project: https://github.com/ThomasDeutsch/flowcards
Write me a line if you would like to get involved.
Have you found other solutions for this problem?