Towards an Ideal Development Workflow
2024-10-04
Ideal Dev environment:
Phase 1 Development
Develop product ideas iteratively
try out an idea
test idea(s) using fail-fast approaches
build prototype code as quickly as possible, then use it and try it out
poke at the idea and try to find out why it doesn’t work as well as expected and figure out how to improve on the idea
revise the idea
try again
repeat until satisfied
Tools for Phase 1
REPL
late binding
dynamic languages, like Lisp, Smalltalk, Self, Prolog, etc.
nano-DSLs to succinctly describe each aspect of the design
use nano-DSLs to describe intended actions and operations instead of dealing with niggly details of implementation
Lispers use macros as a form of nano-DSLs
shell pipelines
It’s OK to use heavy-weight processes - on development machines - to rough-in product functionality (Production Engineering will get rid of the inefficiencies)
Phase 2 MVI
Minimum Viable Implementation
Build a working version of the best idea from Phase 1
Steal code from Phase 1
Skimp on efficiency, don’t skimp on product features
Phase 2 might turn out to be a no-op, since code from Phase 1 might be “good enough” for an MVI
Phase 3 Production Engineering
Production engineer the best variant of the solution, i.e. improve the efficiency of the MVI
Tools for Phase 3
tools & languages that help create an assembler version of the solution
use strong typing
use static scoping, syntactic binding
white box testing, path (coverage) testing
most modern languages are geared for this kind of activity, e.g. Python, Haskell, etc.
conflating Development and Production Engineering results in accidental complexity
current crop of languages emphasize Production Engineering, thus, they make Development more difficult
Phase 4 Send to Q/A
completely different team - can’t rely on developers to evaluate their own work
black box testing
test for UX acceptability
test for code reliability
Phase 5 Production
market and sell solution
maintenance
gather ideas for UX & product improvements
Phase 6 Revise Product, Repeat Process
send improvement ideas back to Phase 1 to begin a new cycle of development for a new product or for V2.0 of product
See Also
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: https://guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/qtTAdxxU
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Gumroad: https://tarvydas.gumroad.com
Twitter: @paul_tarvydas

