6 ms·
Speaking from experience, the biggest problem with NASA's software engineering requirements (http://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=7150&s=2B http:/
by thearn4 10y ago
Speaking from experience, the biggest problem with NASA's software engineering requirements (http://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=7150&s=2B http://nodis3.gsfc.nasa.gov/displayDir.cfm?t=NPR&c=7150&s=2B)
is the way that they tend to feed down into non-safety critical projects. It's getting better though.
- hackits 10y agoHaving a look at the engineering requirements there are guidelines that I've seen that are used by medium to large scale organisation just simply to manage the project and code base. Some of them seem to be universal such as statistic code analysis, heave use of sticking to a sub-set of the language that is well defined (Deterministic behavior). Sticking to a over-all coding convention and naming convention. Modulation of the code-base. Avoidance to thread's mutating the state of shared objects between threads (Share state between threads only in a single location eg.. IPC). Similar thing happened with java API with the designers attempting to make the language library thread safe. They soon discovered that was a real bad idea and backed off from that very fast. At work I joke with my collegue's about the java framework they use they've now moved back to static enum's and static control id's for web pages instead of dynamically generating them on the fly. It's to a point where I feel like I'm programming win32 gui's all over again.
- pjmlp 10y agoSadly quality is highly disregarded in our field. I dream of the day when not making use of contracts, static analysis and type based programming is seen as quality smell and not something that only a few are allowed to make use of.
- lambdadmitry 10y agoIt's not "disregarded", it's eclipsed by a need to ship often and ship a lot. There is a tendency to overstate amount of problems that come from bugs because they are painful to debug. Therefore, somewhat experienced programmers are often too defensive and suspect to paralysis by analysis (of which uber-complicated and rigid typing is a sort). Even if some advanced typing system will save a few days of debugging after refactoring down the line, it doesn't matter if a competitor ships buggy RoR-based systems a few months earlier. Advanced typing/static analysis is not a pinnacle of software engineering, it's a set of training wheels. Useful? Yeah. But sometimes you may need to skip them.
- mk89 10y ago> ... it doesn't matter if a competitor ships buggy RoR-based systems a few months earlier. You hit the nail on the head! However, I would like to mention that competition is only one very important factor. I'd add that IT is a cost as it is a baker for a bakery, a cook for a restaurant, a mechanic for a repair shop. Do you want to be the n.1 restaurant? Then you must pay, so that your business is good food, not marketing - notice: the best restaurants don't even have good websites, as the food speaks for them. Yes, you must pay a lot to get the best cook, who will take all the time and require all the staff he wants/needs to prepare the best recipes, and so forth. We think we are in a better business just because IT is something relatively new, which not everyone fully understands, so we think that we are the best in everything we do, because we bring innovation. Sadly, we are not. The current reality is that most companies are average or below-average with no great plans to further develop or to become the next IBM, NASA, Intel, or whatever. Most of them want to survive, some want to get a lot of money fast, and who knows, maybe in 5-10 years sell the company for 1,2,10 mln USD. As long as the mentality is driven by the idea of the acquisition, not by ambition, things won't change - the most efforts will be spent in hiding the pile of s* that employees do, trying to draw the right numbers on the right graphs. And even IBM, Nasa, Intel fail. They do. The difference lies in the ability to stand up and get on their feet again - learn from failures. They have also wasted huge amounts of money - it's documented everywhere, every time one of their projects gets shut down. However, they have a goal in their mind: to be the n.1 whatever they do.
- akavi 10y ago> Do you want to be the n.1 restaurant? Depends on what you mean by "n.1". The "n.1" restaurant in terms of monetary value is McDonalds. They do market (heavily). They don't pay for the best cook (not anywhere near). And they don't have the best recipes. But they are wildly successful. Conversely, michelin star restaurants go bankrupt all the time. There's nothing wrong with aspiring to produce michelin star code. But as McDonalds shows, you can be incredibly ambitious and long-lasting with quality being at best a secondary priority.
- dragonwriter 10y ago
- thearn4 10y agoGood points, but mainly I was referring to the need to maintain extensive documentation purely for the satisfaction of bureaucratic review (though that point was in my head). Example: All projects that are to be released must demonstrate that they are maintaining one of these: http://nodis3.gsfc.nasa.gov/displayDir.cfm?Internal_ID=N_PR_7150_002B_&page_name=AppendixC http://nodis3.gsfc.nasa.gov/displayDir.cfm?Internal_ID=N_PR_...
- cema 10y agoType based programming does not quite work in weakly typed languages.
- davidgrenier 10y agoI think you should take what he said as saying we should get rid of those
- betenoire 10y ago> get rid of those There are many legitimate uses for scripting languages. It would be impossible and undesirable to get rid of them.
- pjmlp 10y agoScripting languages are just that, for plain scripts, not full blown applications.
- betenoire 10y agothat's my point. you don't get rid of the tools you use incorrectly, you learn to use them correctly.
- pjmlp 10y agoI was talking in the context of making full stack applications, not scripts for copying files around, automate software installation and such. And even there I am most likely to use a ML derivative language than Perl, Python or something else.
- brianwawok 10y agoWhat is the correct use of node.js? I claim there is none.
- ska 10y agoweakly typed != scripting.
- brudgers 10y agoFor me, I'd frame NASA's approach to software quality as a core value of the organization. The problem is that determining where a mission critical level of attention to detail is not necessary requires a mission critical approach because failure there means failure to develop mission critical code to support a mission critical function. So the process of determining what does and does not require mission critical rigor has to be handled with mission critical rigor. Adding such a process is just one more point of failure. It requires the same attention as just writing the code "right" but is more subject to political maneuvering and other unproductive mental overhead and subjectivity.