rbanffy
38 minutes ago
Not even “engineering” is engineering. It’s equal parts art, craft, and science. And I say that as a classically trained engineer turned software engineer. Every engineering design is a compromise - it can be light, or easy to make, or robust, or cheap, or anything else driven by requirements. There is no such thing as an optimal design unless you pin the requirements down really tight - and this is where the art part comes from.
With “classic” engineering at least you have the immutable laws of physics to judge your work, but with software we have no such luck - software is infinitely pliable in ways equivalent to bending the laws of physics in classical engineering. Your bridge may not be sound at one Earth gravity, or your software might not work reliably with a gigabyte of memory, but it’s like we can place your bridge under half G by giving the software twice as much memory. And we can do all that after building our “bridges”.
I would even suggest software engineering can also be described as “applied poetry”, where we write precise prose designed to elicit specific responses from machines, but I guess that analogy was taken by “prompt engineering”, which feels like “applied sorcery”.
ryandvm
13 minutes ago
I think software "engineering" is far more susceptible to fads than other engineering disciplines. Best practices in engineering evolve with respect to advances in material sciences, whereas best practices in software engineering are mostly just vibes and reactions.
* Object oriented / functional * Thick client, thin client * Blockchain * NoSQL vs relational * Enterprise SOA * Framework churn
This industry is continually rediscovering ancient paradigms and revisiting them in a way that would drive normal engineers nuts. I suspect it's because software engineering doesn't actually have requirements around licensure and education that slow and stabilize the arrow of progress.
summa_tech
29 minutes ago
Right! I think a lot of people, who have not done a lot of "things you can kick" engineering, have a very romantic view of it. Especially the relationship with whoever is nominally setting the goals of the project.
The physics works perfectly, of course. But physics is only a third of the constraint in engineering. The other two thirds are project goals and convention.
Project goals are horribly underspecified, every time. It's incredibly rare to be given a project that is completely constrained on that side, and if you do get one, most of the time it's physically impossible to achieve. This is because the people who write those specifications not doing engineering, they're doing marketing or sales or just had a cool idea. Sometimes that can even be the engineer themselves :-) So it's up to the engineer to fill in the gap, and they do it with experience and a sense of aesthetics, of sorts.
Convention is what constrains the physical possibilities of engineering to the practical. Yes, you can build anything and make it work, possibly even better than what everyone else builds. But you will have to invent and construct a lot of new technologies before you can build your perfect mousetrap. So, you settle on standard components and build a decent one instead. But this introduces a gap between physics and engineering, too. A bit of no-man's land that you can reach into to produce truly great results. But it's up to the engineer to know when it's worth it.
customguy
10 minutes ago
> we write precise prose designed to elicit specific responses from machines
There are programmers who do that, and I think it's the way to make good software, to care about what the machine actually does that is, and not just if it's easier to write one line instead of five (which is where we got this bloated framework mess from)... but it's hardly some sort of standard for the profession, much less the minimum.
With engineering (I would assume), you rarely see, say, some sort of tool (made by an engineer, that is) that has half of another tool sticking out of it in a spot "where it doesn't matter" because they preferred to ship faster. You'll never see a tool that just weighs 100x more than it needs to because hey who cares, it's not like the person who made and sold that thing actually has to use it.
With software, costs are externalized left and right because to see them, you'd have to actively think about stuff, and customers don't know anyway so anything goes, unless you go too far. But if a washing machine is the size of half a city, everyone notices.
> With “classic” engineering at least you have the immutable laws of physics to judge your work, but with software we have no such luck - software is infinitely pliable in ways equivalent to bending the laws of physics in classical engineering. Your bridge may not be sound at one Earth gravity, or your software might not work reliably with a gigabyte of memory, but it’s like we can place your bridge under half G by giving the software twice as much memory. And we can do all that after building our “bridges”.
In that example, software isn't actually "plied" (if that is a word?) though, the amount of RAM is. So the software stays as is, mediocre. And art, like engineering, often benefits from constraints. Imagine if the solution to being a shitty artist would be to just drug the audience so they're happier and like whatever they're seeing more. Even if it benefited them, even if you could tell them and they'd be fine with it, that's not the way to hone a craft, that just seems obvious on the surface to me.
Fire-Dragon-DoL
30 minutes ago
Did you just call me poet sorcerer? Lol
Cool analogies
rbanffy
a minute ago
My wife says I’m a computer charmer. I prefer to say I write executable poetry that moves the hearts of machines.