
My sabbatical research pivot - salmonellaeater
https://blogs.uw.edu/ajko/2016/05/13/my-sabbatical-research-pivot/
======
salmonellaeater
> _In my experience, faster development didn’t matter much. Developers’ speed
> mattered somewhat, but only to the extent that we made effective product
> design choices based on the valid understanding of customer, user, and
> stakeholder needs._

Lately I've been thinking that most of the value a good engineer provides is
in making a vague specification concrete. Building something that works is
easy; deciding _what it is_ that you are building is the hard part. You can
think of the process of writing software as the process of deciding exactly
how every unspecified edge case and detail in a specification will be
resolved.

I wish there were more and better tools for declarative programming. Most of
the time imperative programming produces overly specific solutions that are
brittle and difficult to understand. It's really hard to infer the original
intent of such code. A lot of solutions don't even require a Turing-complete
language in the first place! For example, a library for mutating a datastore
and keeping it consistent can be entirely specified using SQL-like
expressions. Yet there are all these frameworks and ORMs for writing such
libraries by hand using Turing-complete languages. It baffles me. /rant

