5 ms·
Most engineering projects have standards. Not the cutting edge stuff, but most of it does. Many are from regulations and safety laws setting specifications for
by moksly 5y ago
Most engineering projects have standards. Not the cutting edge stuff, but most of it does. Many are from regulations and safety laws setting specifications for this and that, but some are simply there because they won by being the most popular.
Software Development by contrast has no standards. You can hire two different enterprise sized companies with this and that certification in the exact same technologies, who claim to adhere to the exact same principles for best practices and what not. They mean it too, often they’ve even gone through the same sort or internal re-education processes with the same consultant companies at the same time, yet they still manage to build software projects so different that transferring ownership from one to the other, or setting up a multiple supplier open source project, is sooooo much work you wouldn’t believe it.
If computer science wants to be engineering, I need to be capable of hiring an architect who makes plans that can be implemented by any supplier, and I need to be able to switch supplier/contractor 2-3 times during the process without issues because the plans can only be implemented one way. We’re probably a lot further away from that world today than we were 30 years ago. The only company that seems to have smelled the music on this stuff is Microsoft and their cloud.
- whateveracct 5y agoIt shouldn't want to be engineering in most cases. What a waste if so.
- historyloop 5y agoStandards can only happen when an industry has matured and moves slow enough for these standards not to be obsolete by next year. We have plenty of laws and standards regarding handling private information, payment systems, independent pen testing and so on. So it's incorrect to say we have "no standards" at all. Where it matters, we do. But to try and standardize a process that's evolving faster than a standard can spread is pointless. This doesn't make software engineering any less engineering. Engineering isn't about standards. It's about the design, construction and use of systems.
- moksly 5y agoIt happens with slow technologies that ought to have standards as well. I do work with OS2.eu (Danish public sector owned open source software organisation) and we recently brought the first project into multiple supplier territory. It’s a Drupal PHP project, and as I understand that means that everything that gets build should follow Drupal standards that are pretty much set in stone. After 6 months of governance going this and that way, and the countries second largest city (and biggest PHP developer) as a mediator, we are only now moving into the blissful world of compliance where everyone has agreed to develop Drupal modules in the same way. Compare this to when we build a new city hall. A massive project involving almost 500 smaller local contractors, in a business that actually moves forward pretty fast. Some of the materials they ended up using weren’t even invented when they began. The project was finished a head of schedule and under budget. I know construction isn’t always like this. We’ve had our share of catastrophic projects, one elder-care center in particular, but compared to buying software it’s almost child’s play, even when things go wrong. So I think it’s perfectly fair to say that software engineering isn’t engineering. If you can even build a simple webpage, without two suppliers disagreeing so much on the “standards” that it takes 6 months of governance to achieve compliance, then there is just so far for the industry to go before it’s anything that even resembles engineering.
- jbluepolarbear 5y agoDrupal and PHP is the standard chose? How? Were alternatives explored? This seems very odd as the choice for standardized websites. A better solution would be standardize a backend apis and setup standards around how data is queried and stored. Next standardize how that data is presented to the user and how the user can manipulate that data. None of this requires a specific technology and sounds like decisions were made by people that don’t understand the problem they’re trying to solve or are being influenced by others with something to gain (like your big Drupal house).
- VampireWillow 5y agoYou make a strong case for software not being engineering. Who should the client trust when every expert has something to sell, is not bound by an ethical code, and has experience that is incommensurable with every other expert's experience? Who are you to the client but another expert with a different solution to sell?
- hellisothers 5y agoYou’ve identified an aspect of other fields of engineering and are saying since you feel this aspect may be missing from software engineering that it therefore isn’t engineering. But if you look up what engineering means broadly this isn’t part of the definition at all. Which I guess goes on to say it depends on what you mean when you say “engineering”; a specific manifestation of engineering or the general practice.
- robertwt7 5y agoWell said
- montalbano 5y ago> Software Development by contrast has no standards That's not true in the context of medical and car software. See https://en.wikipedia.org/wiki/IEC_62304 https://en.wikipedia.org/wiki/IEC_62304 https://en.wikipedia.org/wiki/ISO_26262 https://en.wikipedia.org/wiki/ISO_26262
- cartoonworld 5y agoThis is a really great point! In medical, automotive, aerospace, military applications, the software that goes into the device is kind of considered part of the object. It needs this validation for obvious reasons, such as the long lifecycle and critical nature of these products. But in cellphone handsets, PC software and firmware such as in IoT home devices, and even IT infrastructure like SoHo routers especially but also other devices, there is no agreed upon standards that I am aware of. Even in payment applications, there isn't much there. Large institutions and banks get by often by using "legacy" infrastructure like mainframes to keep the COBOL stuff running, as it has been vetted over decades. Going further, the architecture of infrastructure, firmware and software should be examined more closely. Recently, IT architecture has been exploited over and over (Kaseya, SolarWinds, MTA) having quite asymmetric effects. In the past it was worms and drive-by malware from janky websites, today it is extremely costly disasters that make the news but roll on bye until the next turd is flipped over. The problem space is very difficult to define, since "software" and "architecture" are such general terms encompassing basically anything. I rate the difficulty in analyzing these problems for sufficient solutions as very high. When I consider neural-net AI applications, it seems to get even more murky. Is anybody aware of other software and infrastructure standards that exist or are in research which could apply to more general fields, or to corporate/business IT infrastructure, or to home devices, etc?
- jhgb 5y agoSo engineering before the rise of standards wasn't engineering?
- hef19898 5y agoSo since the late stone age? When you understand "standard" as an agreed upon common practice, that is. Without that we wont have the pyramids (any of those regardless of continent).
- Karliss 5y agoI would say that plans sufficiently specific to be done by any supplier and ability to switch supplier would be equivalent to final code and the final step should be done by using appropriate frameworks instead of human contractors. Any repetetive software process with precise specification should be automated with better tools or other higher level abstractions. One reason it's not done more for physical engineering is that the robots or machines would be impractically complicated or expensive or other physical limitations. But even then manaual machining is increasingly getting replaced by CNCs and houses built from bigger prefabricated components. You might choose not having a house made from prefabricated blocks due to aesthetic reasons but in software hardly anyone except small fraction of programmers will complain about electron or too many levels of abstraction under the hood.
- jahewson 5y ago> If computer science wants to be engineering, I need to be capable of hiring an architect who makes plans that can be implemented by any supplier You don’t though. This is just an artefact of the structure of your industry, being limited as it is by physical, geographic, and capital constraints. Software has none of those (capital used to be an issue but is no longer - this is perhaps why things are more flexible than 30yrs ago as you note). You think you need these things because you see your role as an integrator - but software engineers already perform that function at a different level, via libraries and protocols.