2 ms·
This is a very common counter argument to software engineering as a discipline. > But if I make a pet software project millions of people might decide to use i
by krschultz 11y ago
This is a very common counter argument to software engineering as a discipline.
> But if I make a pet software project millions of people might decide to use it to "drive around town", and some portion will hurt themselves.
That is a legitimately unique aspect of software and deserves consideration.
> I think that if you build stuff for certain things (such as 1 ton objects zooming around at 70+ miles per hour), it's obvious. But what about financial software? What about social networks (privacy issues)?
Likely some portions of the system matter and some don't. Which ones likely require engineering judgement. For physical products it's pretty easy to make that call for a paper weight and for an airplane, but all the products in between need that decision. We are generally building software systems that are about as complex as a Black & Decker power drill. When designing something like that you need to make damn well sure you are not electrocuting the user, but if the gears break and it doesn't function you aren't hurting anyone. Therefore most drills are 'double insulated', but there is no backup for the actual function. In software we should make that same call. What is the consequence of failure? If it's small then we live with it. If it's not, then we should build a fail safe / backup system.
I'm super in favor of software engineering licensing and all that it entails, but I do think large swathes of software are completely immune because failure has no consequences. Your D&D utility is an example. Most open source licenses rightly have a clause that should protect them from civil lawsuits, much less prosecution.
- sbov 11y ago> Likely some portions of the system matter and some don't. ....... but I do think large swathes of software are completely immune because failure has no consequences This is where software seems unique - this seems false to me. A common failure mode of software is code execution, which has nearly unlimited consequences. E.g. my D&D utility could read and write files. But it might have a bug in the file reading code (Edit: or anywhere in the code), which someone could exploit with a properly crafted file to gain access to the user's computer. But you said this utility was immune to failure. It seems clear to me that it isn't. There is no physical object analogy here that makes sense to me. It would be like - if you used your black and decker drill on a piece of wood someone gave you, it could electrocute you if there were a flaw in the drill bit. Or it could turn off your refrigerator. Or it could play a song to you. This makes no sense, but this is the world software lives in. Edit: or do you mean no physical consequences, so only software controlling physical devices require the proper licensing?
- krschultz 11y agoI was thinking more physical consequences. There's no way that a program running on my desktop can hurt me other than privacy / security / availability of my data. But I'm not going to the hospital because your D&D utility was written in a weekend and crashes sometimes. But you do raise a point about the real costs of mistakes even in trivial systems. Arguably that makes the point that operating systems should have stronger sandboxes between apps. An operating system is effectively infrastructure, you probably want higher quality standards there.