docs: add workflow examples for iterative build/test and running e2e tests.
== Developing `dfx`
-Run `nix-shell` in the `dfx` directory to bring the right version of `rustc` and
-`cargo` into scope. Inside the shell use `cargo` to build and test the Rust
-packages (crates).
+Run `nix-shell` in the root directory of this repo to bring the right version
+of `rustc` and `cargo` into scope.
+
+Inside the shell use `cargo` to build and test the Rust packages (crates).
+
+[source,bash]
+----
+sdk $ nix-shell
+[nix-shell:~/d/sdk]$ cargo build
+[nix-shell:~/d/sdk]$ cargo test
+----
+
+Open a second window to run `dfx`, since we usually run it in a different
+subdirectory and running it does not require a `nix-shell`.
+
+----
+sdk $ alias dfx=$(pwd)/target/debug/dfx
+sdk $ dfx --version
+dfx 0.5.7-1-gad81116
+----
+
+=== Other Development Workflows
+
+==== Running End-to-End Tests Locally
+
+[source,bash]
+----
+sdk $ nix-shell -A e2e-tests default.nix
+[nix-shell:~/d/sdk]$ cd e2e/bats
+[nix-shell:~/d/sdk]$ bats *.bash
+----
+
+==== Running End-to-End Tests Locally Against Reference IC
+
+This runs the end-to-end tests against the
+https://github.com/dfinity-lab/ic-ref[reference implementation of the Internet Computer].
+
+[source,bash]
+----
+sdk $ nix-shell -A e2e-tests-ic-ref default.nix
+[nix-shell:~/d/sdk]$ cd e2e/bats
+[nix-shell:~/d/sdk]$ USE_IC_REF=1 bats *.bash
+----
== Conventional Commits
