4 ms·
Also, there isn't that much in the way of scientific grounding. Mechanical engineering has physics as a foundation. Chemical engineering has chemistry as a fo
by afarrell 5y ago
Also, there isn't that much in the way of scientific grounding.
Mechanical engineering has physics as a foundation.
Chemical engineering has chemistry as a foundation.
What is the scientific foundation of software engineering?
I suspect it is a mix of cognitive science, linguistics, and anthropology.
- NikolaeVarius 5y agoMath. Which seems that many practitioners are proud of not knowing
- katbyte 5y agoLogic maybe but a very large amount of software written does not use much if any math beyond the very basics.
- mywittyname 5y agoLots of people in other engineering disciplines don't use math beyond the very basics either. A large amount of parts are designed in CAE software which handles most/all of the mathematics. And in some larger companies, the person designing the part and the person testing the part are on different teams.
- Epa095 5y agoMath provides no answer for a lot of the problems one encounter in day to day software development. It does not help you decide how much test coverage you need,it does not help you decide how to review, it does not help you figure out what features are desired, it does not help you collaborate with the juniors etc etc. I agree that math describes limitation to computer science and formalisation. But software engineering is more than computation.
- choeger 5y agoHow about math? Complexity theory, all kinds of logic, computational theory, category theory?
- Verdex 5y agoHonest question. How does that help? Category theory: I suspect that category theory (well, really just abstract algebra) will tend to make software engineers better at writing code. However, on the other hand, the category theory operator soup that sometimes shows up in haskell, et al makes me think that too much and not enough restraint isn't a good thing. Computational theory: After 14 years of software engineering, I only needed to care about this once. It looks like the answer is try not to make loops inside of loops, use the standard library, know the bare minimum, and if all else fails then find a way to cheat with hardware (graphics cards, simd, massive distributed systems, asci, etc). Logic: So ... like type checking? Or prolog? I mean, knowing logic is good. But, like, where exactly do you expect the benefits to show up. Complexity theory: Are you talking computational complexity? If so then I guess my answer for computational theory (also what did you mean by computational theory then? like lambda calculus and turing machines? When does that help?).
- optymizer 5y agoComputer Science? Edit: this is a discussion forum. The downvote button is not an agree/disagree button, it's to penalize irrelevant comments. If you'd like to disagree, please reply and state your thinking instead.
- edejong 5y agoWell, if you make broad generalizations like that, then software engineering has mathematics as a foundation. Perhaps you don't want to make broad generalizations?
- shagie 5y agoAn old HN post - https://news.ycombinator.com/item?id=20912718 https://news.ycombinator.com/item?id=20912718 and its corresponding material - https://cse.buffalo.edu/~rapaport/Papers/phics.pdf https://cse.buffalo.edu/~rapaport/Papers/phics.pdf looks to address some of that. Section 3 gets into the "what is computer science". 3.10 through 3.13 get into the engineering aspect. Section 6.5 puts it into historical context.
- floverfelt 5y ago> cognitive science, linguistics, and anthropology. Would love to hear your thoughts on this, esp. the linguistics and anthropology piece.
- xtracto 5y ago> I suspect it is a mix of cognitive science, linguistics, and anthropology. Computer Science (more abstract) and Computing Science (less abstract) are branches of Science that have given a foundation to Software Engineering. The problem is that most of the programming and software development that happens nowadays (and what people pay for) doesn't use it. I compare it as Chemistry and Alchemy. We are still in the "alchemy" stage of software development. Sure, people who see themselves as "experts" are combining existing stuff to create new things. But there is a few set of experts that use the science expertise to implement systems.
- tdeck 5y agoI'm a computer science and computer engineering major, and I've never once heard the term "computing science". Is there a context in which this term is regularly used?
- lucumo 5y ago> I suspect it is a mix of cognitive science, linguistics, and anthropology. I agree. Creating a solution that is clear to navigate for future developers is valuable, as is one that is flexible for future modifications. These things depend much more on how humans understand the code than on how machines understand it. That said, other engineering disciplines aren't entirely bereft of that kind of human aspect either. Take architecture for example. It's critical for a building to handle the forces put on it. But it's also important that humans can use it. Having a good building layout is much more a matter of understanding humans than of understanding physics. And then there's the whole style thing that architecture has. A building is not always only functional. It can very much be a work of art. And that style is not just decorative. A style can conjure up certain emotions to put people in a certain mindset when dealing with the building. (E.g. putting a modern art museum in a neo-classical building would be dissonant.)