Stories
Slash Boxes
Comments

SoylentNews is people

posted by Fnord666 on Monday August 27 2018, @01:54AM   Printer-friendly
from the programmer-boids dept.

Submitted via IRC for SoyCow4408

Software development is a complicated discipline, especially when you consider that it is performed by several people working together.

Comparing it to emergent systems is useful because it provides a perspective where we can think of software as something that evolves.

Being able to measure that evolution is then crucial if we want to be able to tell if the product we are building is holding up in terms of quality.

I also describe a tool named NDepend that serves exactly this purpose (and as far as I know has no competitors). It provides extensive metrics and allows for the creation of custom rules, all of this while supporting integration with a continuous integration workflow.

Source: https://www.blinkingcaret.com/2018/08/22/software-development-emergent-system-ndepend/


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Insightful) by MichaelDavidCrawford on Monday August 27 2018, @09:49AM (1 child)

    by MichaelDavidCrawford (2339) Subscriber Badge <mdcrawford@gmail.com> on Monday August 27 2018, @09:49AM (#726832) Homepage Journal

    Ten times as much coder-years are spent debugging and maintaining code than implementing new features. Why isn't debugging more of a priority in our educations?

    How many of you have read Robert Ward's "Debugging C"?

    It's long out of date but can be had used for like a dollar. I made seven singing on the street [soggywizards.com] today, so you sorry lot have absolutely No Excuse.

    That I read it in 1988 resulted in my getting hired by Apple in 1995 as a Senior Engineer in the role of Debug Meister. Whenever QA turned up a bug which they had no clue as to where it came from, or that was particularly difficult to reproduce or even if they did know where it came from, it was assigned to my team of five Debug Meisters. Phil Murphy maintained MacsBug. Perhaps you're heard of debuggers?

    Everything I knew about debugging up until I read Ward's book was folklore passed down as oral tradition, sort of like Homer's Odyssey and Illiad were before the Greeks developed that screwy alphabet they're so heavily into.

    Carnegie Mellon offers a Software Engineering major that is distinctly different from Computer Science. In Canada it's unlawful to call yourself a Software Engineer at all unless you have a Software Engineering degree as well as a Professional Engineering license of the sort that Civil Engineers always have. (The Ontario Association of Engineers love nothing more than to haul MCSE into court. They _always_ win.)

    Help me out here, I'm begging you!

    --
    Yes I Have No Bananas. [gofundme.com]
    Starting Score:    1  point
    Moderation   +1  
       Insightful=1, Total=1
    Extra 'Insightful' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   3  
  • (Score: 3, Informative) by fyngyrz on Monday August 27 2018, @04:16PM

    by fyngyrz (6567) on Monday August 27 2018, @04:16PM (#726967) Journal

    Ten times as much coder-years are spent debugging and maintaining code than implementing new features.

    This is only true for poorly built products. Solid design means both narrow and obvious debugging paths, and a lot less of it in the first place, as well as near-zero difficult maintenance (exceptions usually incurred by stupid alterations made by the OS vendor.) In such a design, almost all effort can be exerted in the direction of new features.

    Having said that, the more you / your team uses Other People's Code (libraries, etc.), the more prone your product will be to problems. You can't avoid the OS for most designs (the few custom OS's out there notwithstanding), and again that's a problem that isn't remediable — Microsoft and Apple have both historically been far more concentrated on new products than they have on making the products they already have work as advertised. That's an albatross almost all of us have to carry, but technically, remediation isn't about bugfixing so much as it is writing workarounds for the OS vendor's irresponsibility. Oh, do I ever have stories to tell there. Debugging, however, is often called for. Cursing, too. :) Linux... Linux is a bit better here.

    Why isn't debugging more of a priority in our educations?

    Unit testing (for just one example), which is an extremely powerful tool in this area, is a well understood mechanism and one that is easy to manage if you start with it on day one. Which you should do. If you're not using it, you're not even trying. If it wasn't part of your education, your education sucked. Before anyone says "but my degree was in 1970" or the like, your education should be ongoing, and unit testing is a well-established technology that you should have wrapped your head around long ago... education does not (okay, should not) stop with college. Furthermore, you are responsible for seeing to it that your education covers all the ground required. Degree or no.

    Everything I knew about debugging up until I read Ward's book was folklore passed down as oral tradition

    Well, not knowing when you read it, and considering that it came out in 1989, soon afterwards, at the very least, the Internet became available and shortly after that there was considerably more information on debugging techniques available to everyone who had a network connection. At this point in time, debugging tools, techniques, tips and tricks are there for the taking, so this doesn't seem particularly relevant.

    In Canada it's unlawful to call yourself a Software Engineer at all unless you have a Software Engineering degree

    Sigh. This is exactly the wrong path to take. A degree does not an engineer make. It means you sat in classes and managed to conform to the requirements of the degree well enough to graduate. It does not mean you are any good at all at engineering. I can point to many hardware and software designs that have obvious, stupid problems from companies like Adobe and Microsoft and Apple that came from degreed hardware and/or software engineers. I have worked with many college graduates that were outright incompetent when it came to actually writing decent code, and a few who were just as bad at hardware. While a basic knowledge base (which you certainly don't need a degree to get) is certainly important, nothing beats actual experience in the real world, and the more of it, the better.

    The main issue here isn't that college makes one competent (because it doesn't — nor does it make one incompetent) but that it provides a touchstone for companies to claim (inaccurately) that they tried to ensure that their employees were competent. This is done as a shield against lawyers and courts, who don't know any better than to think that a degree or test certification is actually meaningful in real world terms.

    Education on debugging — and many other areas of quality design — is available from many sources. It's really an embarrassment of riches. That includes very reasonable summaries of the areas in which you need to be at least competent to execute a good design. Those summaries can be used to build a solid foundation at your own speed. Anyone with the smarts required to do software or hardware engineering should be able to self-educate quite well, and in terms of determining who to hire, someone with drive who can also demonstrate a series of solid designs would be a much smarter hire than Joe(line)-I-have-a-new-degree. If they can't self-educate, you really, really don't want them designing your goodies.

    Finally:

    Why Isn't Debugging Taught By CS Departments?

    ...because college degrees tend to be extremely myopic in terms of what they cover, and also tend to be designed and taught by people who do not have real world experience; one of the reasons for the "ivory tower" epithet.

    Yes... autodidact here. :)