Infrastructure / data tooling has been following this cycle:
1. Declarative specs (HCL, SQL)
2. #1 lacks expression. Use a "real" programming language (Airflow, CDKTF, Spark)
3. Number 2 is a mess
I think we want a mostly declarative design with an imperative escape hatch.