4 ms·
Over time, I think I am coming to agree with you. I went to an engineering school. People who designed bridges had a wide, but constrained parameter space, and
by ci5er 7y ago
Over time, I think I am coming to agree with you.
I went to an engineering school. People who designed bridges had a wide, but constrained parameter space, and well-accepted design patterns.
I started out in semiconductor (MCU) systems and sometimes circuit design, and we had a broader (but not yuuuge!) parameter space, but it was growing as transistors got cheaper. Less well-accepted design patterns, because what you do with 50K transistors and 500K transistors and 5M transistors and 50M transistors - to use effectively - you need different patterns - and that changed so fast!
I did software-ish things with my h/w teams, and they would mock me because "software is easy". "You can do anything". And to do a rev, you didn't need to burn a $50K and 6 weeks (or whatever it is now) at the fab for each turn.
The problem with software is that it is SO unconstrained. You truly CAN do anything - except engineer in an unconstrained environment. I guess this realization (and Python blowing up on me in run-time environments) have taught me that: Constraints suck. But they are good. Software could use more of them, because they force discipline at dev time, at compile time, which reduces blow-ups at run-time.
- agumonkey 7y agoI can recall a few articles where software felt like engineering. bits derived data needs, complexity based hardware sizing. Real solid constraints to use as foundations. rare
- WalterBright 7y ago> People who designed bridges had a wide, but constrained parameter space, and well-accepted design patterns. And yet they still fall down due to stupid mistakes that nobody noticed. https://www.usatoday.com/story/news/nation/2019/10/22/design-error-blamed-florida-international-university-pedestrian-bridge-collapse/2449316001/ https://www.usatoday.com/story/news/nation/2019/10/22/design...
- ci5er 7y agoYes, they do. And they make the news. I was always amazed about the stories of resonant frequency issues, not just from walking but also from wind! - https://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge_(1940) https://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge_(1940)
- WalterBright 7y ago> I went to an engineering school. My father attended MIT in the 1940s. He said that the engineers at MIT designed the new chemistry building, with all the latest features to support laboratories. Only when the building was completed and scientists were moving in did anyone realize that there were no toilets.
- ci5er 7y agoHa! No women - what did they care? :-)
- redis_mlc 7y agoRumor has it that the U. of Waterloo was designed without including the weight of ... books. So the building is sinking.
- sachdevap 7y agoThis rumor also exists for the Robarts Library at UofT, and in both cases, I am quite certain, it is just that - a rumor.
- a_wild_dandan 7y agoI think that's why frameworks are so popular: They extensively constrain the solution space. Folks lament their usefulness. ("You don't need React for that! Just use jQuery.", "Why not use raw SQL instead of an ORM?") I don't mean to belittle framework criticisms. Leaky abstractions, over-engineering, and peculiar implementations encouraged by a framework's model are legitimate commonplace warts. We've seemingly converged on these super-APIs because flowing through such a narrow (but not too narrow!) solution space is worth the relatively minor headaches.
- raxxorrax 7y agoEngineering has a long tradition of trial and error. That is how the field of architecture got its current knowledge that currently probably focuses more on material research. I don't see how software is different. We try new patterns, languages, deployment techniques and think about the optimal way to store data with specific operations in mind. And here you cannot just do anything if you want to solve a problem efficiently. If we find better practices or more use cases, the environment becomes more restricted. We already have quite a few constrains for a relatively young field because there are many developers. On the contrary I believe engineering to be a creative process. Of course lacking constrains might make it seem unfocused, but I still call that engineering.
- atoav 7y ago> Engineering has a long tradition of trial and error. That is how the field of architecture got its current knowledge that currently probably focuses more on material research. Imagine you are building a cathedral and every month the material you use changes to something that behaves totally different. While there is knowledge you can extract even when the material you work with and the fundament you work on seems to change every time, we live in a world that has given up to build systems that last. In times where deploying a patch meant sending out CDs, software that didn't have to do that was quality software. Nowadays that feeling has flipped: if software doesn't offer updates at least once a month people feel like there is something wrong with it. To me it feels like we collectively gave up on building things that last in software.
- WalterBright 7y agoThe grand cathedrals in Europe do sort of last, but not without continuing efforts to keep them from collapsing. Nearly everyone I've looked at had centuries of reinforcement of various kinds added.
- floriol 7y agoStrangely, I am on the opposite site - that programming is more of a subset of mathematics (or at least should be) than engineering and since theoretically many parts of the program can be inferred without running, trial and error should not be as acceptable as it is (I don't mean it on a small scale like I do feel sometimes all I do is try different word combinations until the compiler is happy :D).
- etripe 7y ago> Constraints suck. But they are good. Software could use more of them, because they force discipline at dev time, at compile time, which reduces blow-ups at run-time. Can I take that to mean you're in favour of compile-time enforced strong and static typing?
- AdmiralGinge 7y agoNot the parent, but that would be very much a yes from me. Writing something safety-critical in a language like Python or JS would terrify me.
- pyrale 7y agoIf you enjoy having a language which enforces some constraints on you, you may enjoy languages of the ML family. Elm, for instances, enforces constraints such that the generated js never crashes your browser. Haskell has evolved a powerful system that lets you check web apis against their implementations, which can be pretty handy to enforce that clients should still be able to consume it.