Hacker News new | ask | show | jobs
by zb 5821 days ago
Thanks for the reply; I wasn't sure if you were following this thread. So, if I understand your argument correctly, you're advocating that domain experts create software in high-level languages so that we don't have to write code.

The problem with this theory is that it relies on what I've seen best expressed as "the neat separability of ends and means." This is also the fundamental principle of top-down design, and it's the reason people hire armies of (<cough>Java<cough>) programmers, give them no domain knowledge and ask them to construct the code while waffling about how projects are like houses.

In the real world that's simply not true. Engineering is where ends and means meet and overlap and are reconciled through the process of design. The result is, for civil engineers, blueprints; for software engineers, code. That's why I think you have code on the wrong side of the relation: because code embodies both ends and means it cannot be merely constructed, it must be designed.

1 comments

I agree that that's how things are now. My argument is that software development today is not an engineering discipline. You're right that I know almost nothing about "real" engineering. However, what I do know seems to suggest that commercial software development, even in the best of circumstances and with the best people, does not possess necessary characteristics that are relied upon in commercial engineering.

The thing is, so much of what software developers do could be systematized, or at least codified into what would often manifest as what we'd call "tools" that are then used to far more productive effect by those domain experts.

I've mentioned Matlab and Mathematica elsewhere as an example of delivering domain-specific notation, but they're also a great widespread example of delivering a domain-appropriate environment. What if these tools didn't exist, and any time someone needed to do some math, they had to cajole some programmers somewhere to help them get the job done? That'd be a disaster in relative terms, but that's the status quo of so many other "domains" where software development is regularly involved.