Remix.run Logo
BoppreH 2 days ago

I think this eternal discussion persists because we conflate two different aspects of software engineering: the technical and the social.

Technically, we're a mature discipline. The author laments our lack of tools as advanced as architectural CAD systems, but I'm unconvinced. We have static types, tests, linters, version control, benchmarks, standard data formats and protocols, deployment orchestration, debuggers. It's pretty nice.

Socially, our discipline feels immature. As mentioned, we don't know how well TDD works, how best to write documentation, or how to pick a flavor of agile. But these are meta-problems that plague every discipline! I challenge you to find a high quality study comparing imperial vs metric units in architecture, or the ideal number of architects for a given project size.

atmavatar 2 days ago | parent [-]

> We have static types

But several of our most popular languages don't (e.g., Javascript, Python), with Javascript having particularly ugly behavior.

> standard data formats

We're moving from more formalized data formats (XML) to far lesser formalized data formats (JSON). For example, the former gives relatively powerful tools (through XSD) to define types and what constitutes valid values, while the latter doesn't even have a standard date format. Perhaps JSON schema will one day invalidate most of this concern, but it's still pretty young and not widely utilized AFAICT.