3 ms·
> Everything that's written on the subject -- every bit of research, fad, and personal anecdote -- is just one more experiment flailing around in the darkness w
by egeozcan 3y ago
> Everything that's written on the subject -- every bit of research, fad, and personal anecdote -- is just one more experiment flailing around in the darkness while we try to figure out what it means to "engineer" software.
I think Ian Sommerville does a pretty good job in the book "Software Engineering" (I have the 10th edition), from the section 1.1.1:
> Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. In this definition, there are two key phrases:
> 1. Engineering discipline: Engineers make things work. They apply theories, methods, and tools where these are appropriate. However, they use them selectively and always try to discover solutions to problems even when there are no applicable theories and methods. Engineers also recognize that they must work within organizational and financial constraints, and they must look for solutions within these constraints.
> 2. All aspects of software production: Software engineering is not just concerned with the technical processes of software development. It also includes activities such as software project management and the development of tools, methods, and theories to support software development.
These quotes don't do it justice. I'd really recommend this book.
- thaumaturgy 3y agoThanks for the recommendation! I've added it to my to-read list. I will note though that "Changes from the 9th edition" on page 4 reads to me like it supports my point moreso than contradicts it. I'd also add my favorite quote about engineering, "any idiot can build a bridge that stands; it takes an engineer to build a bridge that barely stands". That's the engineering that is as yet unsettled in software. Any of us, given enough time and financial support, can eventually build some software that does something. Approximately none of us however can agree on the right way to build such a thing (where "right way" means something like "most efficient, cost-effective, and future-proof, according to the users' and owners' needs and specifications"). Hell, pick 10 people from HN and you'll get 12 different recommendations for which language to use.
- pas 3y ago> 12 language Well, as this is also depends on parameters. What languages the team members know, what languages the problem domain maps to well, how much capital do we have, what's the schedule, what's the expected rate of modifications on the system, load, security and safety hardening requirements. All bridges, tunnels, houses, roads, pipes, and dams are more similar than websites, Android, databases, videogames, and embedded software. Mostly because the former had hundreds of years to settle down somewhat. (And of course there are huge advances due to materials science advances and because of better structural modeling, due to software advances.) And that settling down allows for time to develop models for the common scenarios. That's why there are engineering standards (building codes).
- solardev 3y ago> All bridges, tunnels, houses, roads, pipes, and dams are more similar than websites, Android, databases, videogames, and embedded software. Are you sure about this? I feel like somewhere between "dirt driveway I dug out last weekend" and the Hoover Dam, they would've had to figure some hard shit out. I could probably dig a tunnel with a shovel, but it wouldn't survive the next rain, much less be able to go under the ocean or support a vacuum. I mean, outsiders probably couldn't tell apart a WordPress template from whatever gee-whiz app. It's all just computer stuff. And as a web dev, I could probably figure out an Android app given a weekend or two, or learn a new SQL dialect in a few hours. I would have no idea how to, say, frame a window for a house or calculate the right materials and techniques to move water from here to there, even to Roman standards.
- pas 3y agoWhat I mean is if you have a parcel of the Earth and you want to make a road through it you open a specially designed software (Autodesk Civil3D) and you can basically do it. Whether it's a dirt road or a 6 lane highway (or a tunnel or a bridge). Finite element analysis is magic after all :) Sure, that tunnel might not survive, but the way to fix it is pretty clear. More structural support and then protecting the structures from the environment (corrosion, soil erosion from water and wind, underwater currents, etc), and then due to the inherent nature of brick and mortar stuff is they are hard to change after the fact (it's hard to change a skyscraper to have a stronger core to resist more wind loads for example) , so it basically forces the customer to commit to some requirements (eg. how many rooms do you need, how much traffic the bridge/tunnel has to carry, how big floods the dam has to be able to withstand) and this has downstream effects of drastically pruning the search space. And then cost estimation is usually again simpler, because we have measurements (this long, this amount of mass, we need this amount of stainless steel of this grade, this amount of concrete of this type, in this region by this availability, etc...) > frame a window for a house sure, but there are about ten options, and you can go through them pick the one you like and get a craftsmen/contractor Most IT/software problems reduce to very straightforward ones once we have the same degree of constraintedness, but mostly we don't.
- dtgriscom 3y agohttps://software-engineering-book.com/ https://software-engineering-book.com/