dwyl / dwyl/technology-stack

Keep your experiments separate

Open
#96 0 comments 0 reactions 0 assignees View on GitHub
discuss enhancement
Dominant language
JavaScript
Stars
291
Forks
25
PR merge metrics
No merged PRs in 30d

Description

Fellow **dwyler** Jessica Kerr @jessitron recently published this _excellent_ post [jessitron.com/2022/06/07/keep-your-experiments-separate/](https://jessitron.com/2022/06/07/keep-your-experiments-separate/ ) [**5 min read**] that _superbly_ summarises the _reason_ we have "_so many_" example, tutorial and demo apps **`@dwyl`** ...

The gist is: "_keep it simple, to focus on each new concept or experiment._"

# "_Keep your experiments separate_." ~ [Eric Evans](https://www.domainlanguage.com/)

> "_Eric forks the repository each time, and adds the new feature to the base game.
That way, the learning is not complicated by feature interaction._"

In other words each time Eric adds a feature to his game he isolates it as its' own experiment.
That way the _interaction_ of features can be tested one "variable" at a time instead of trying to observe

_Obviously_ there are always people on HackerNews who haven't quite understood the benefits of simplicity and the scientific method:
https://news.ycombinator.com/item?id=31702975 🙄 these are the same people who claim that [automated] "Testing is too hard".

The world is full of people who skipped learning about science and the [scientific method](https://en.wikipedia.org/wiki/Scientific_method).
***Why***? because it's more _difficult_ in the _short-term_ to adopt the more _rigorous_ approach.

## “_Any intelligent fool can make things bigger, more complex, and more violent.
It takes a touch of genius — and a lot of courage to move in the opposite direction_.”
~ [E.F. Schumacher](https://en.wikipedia.org/wiki/E._F._Schumacher)

By _isolating_ the individual element of a technology, tool, technique or feature we are trying to understand/experiment with we better understand what is going on and can _explain_ it to others.

We have _individual_ "**learn-_xyz_**" repositories for each element of our technology stack.
These are **_beginner_-focussed** ("your first hour with X tech") notes
When we build a module ourselves e.g: [**`elixir-auth-google`**](https://github.com/dwyl/elixir-auth-google), we create the corresponding ***demo*** App: [**dwyl/elixir-auth-google-_demo_**](https://github.com/dwyl/elixir-auth-google-demo)
Finally we _assemble_ the component elements into an **example** apps, e.g: [dwyl/**phoenix-chat-_example_**](https://github.com/dwyl/phoenix-chat-example)

I increasingly feel like I should just short-cut everything and do exactly/whatever Jessica ❤️ says and will save myself a heap of effort! 😜

## Todo

+ [ ] Write this up better and publish it.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.