Stories
Slash Boxes
Comments

SoylentNews is people

SoylentNews is powered by your submissions, so send in your scoop. Only 17 submissions in the queue.
posted by cmn32480 on Thursday January 04 2018, @02:11PM   Printer-friendly
from the what-if-you-can't-program-your-way-out-of-a-paper-bag? dept.

Agile Development is hip. It's hot. All the cool kids are doing it.

But it doesn't work.

Before I get into why this "Agile" stuff is horrible, let's describe where Agile/Scrum can work. It can work for a time-sensitive and critical project of short duration (6 weeks max) that cross-cuts the business and has no clear manager, because it involves people from multiple departments. You can call it a "Code Red" or call it a Scrum or a "War Room" if you have a physical room for it.

Note that "Agile" comes from the consulting world. It suits well the needs of a small consulting firm, not yet very well-established, that lands one big-ticket project and needs to deliver it quickly, despite changing requirements and other potential bad behavior from the client. It works well when you have a relatively homogeneous talent level and a staff of generalists, which might also be true for an emerging web consultancy.

As a short-term methodology when a firm faces an existential risk or a game-changing opportunity, I'm not opposed to the "Code Red"/"crunch time"/Scrum practice of ignoring peoples' career goals and their individual talents. I have in mind that this "Code Red" state should exist for no more than 6 weeks per year in a well-run business. Even that's less than ideal: the ideal is zero. Frequent crises reflect poorly on management.


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: 2) by turgid on Thursday January 04 2018, @08:59PM (1 child)

    by turgid (4318) Subscriber Badge on Thursday January 04 2018, @08:59PM (#617949) Journal

    The waterfall method works fine in every other engineering discipline (try replacing a bridge in an agile way).

    You can't directly compare physical engineering with software engineering.

    The reason it doesn't work for software development is simple (at least imnsho): software development as currently practiced is neither engineering, nor a discipline. Software development is practiced the same way that the Egyptians practiced astronomy: we know just about enough to predict seasons and to tell the time, but other than that we're very much beholden to rituals (as in TFA), cultism (see any programming language discussion) and handwaving (see any software documentation).

    Agreed, but there's more too it than that. I've thought a lot about this over the years, and I have my very own Secret Plan for World Domination(TM) which I am working on. If it ever gets useful, I'll GPL it.

    It's hard enough to take any software seriously these days without everyone cargo-culting along with the latest fad.

    It's always been like that. Even when my father was a young man in about 1969 when he first wrote some engineering code on a mainframe.

    But the development process isn't even the core of the problem

    You can open the bonnet of a car and look at the engine. You can't "see" software. You can't evaluate it just by looking at it. You have to read the source. You have to execute it in test harnesses. Everyone who reads the code will have a slightly different understanding of it. Good luck getting any PHBs to remotely comprehend any of it, and people who use Eclipse and Visual Studio.

    Big software is developed in teams and it takes many months for a team to come together. Even then, everyone has their own pet ideas about how to do things. Ten years ago I landed on my feet, and it has set me up well. Too much to talk about here...

    it's almost impossible to easily adapt code from one silo to another, leading to massive wasted effort on solving already-solved problems -- they're just not solved in your framework-du-jour.

    That does have its advantages, though. Monocultures are bad, in nature and engineering.

    There is a book (for physical engineering) I must read some time. It's called Simplified Triz (? IIRC). Design Patterns are kind of like that for software but... I need to read it.

    And naturally, all players seem more focused on expanding their captive base than improving software development as a whole.

    Indeed.

    That's one thing where I hope that data-driven architectures and microservices (cult alert!) can improve the situation: at least the microservice approach requires a documented interface layer for every minor component.

    Sounds like attention to detail in modelling and specification... But still too manual.

    I really must do some more work on my secret plan.

    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2  
  • (Score: 0) by Anonymous Coward on Friday January 05 2018, @01:20AM

    by Anonymous Coward on Friday January 05 2018, @01:20AM (#618146)

    You can open the bonnet of a car and look at the engine. You can't "see" software. You can't evaluate it just by looking at it. You have to read the source. You have to execute it in test harnesses.

    Yes, this complicates things, but that also applies to microelectronics and (cellular) biology. Yet, we seem to know a lot more about those mechanisms than we know about the software we use in our programs. And that's odd, given that the software has been designed by ourselves, not by nature -- we shouldn't need to "discover" anything about it.

    In order for software development to become proper engineering (in other words, to advance from astrology to astronomy), what we need is better tooling. And I don't mean that in the compiler/editor sense, but in the scientific sense: better language to unambiguously describe it, better metrics to evaluate it (not just performance, but reliability, robustness, completeness), better analysis to predict future behaviour (fuzzing and testing frameworks are a step in the right direction at least).

    That does have its advantages, though. Monocultures are bad, in nature and engineering.

    Yup, I didn't mean to imply monoculture here. I very much want a diverse software ecology, but one where interfacing with other components is as easy as just importing it into your build system -- the component specs should be extensive enough for your build system to automatically generate the correct bindings. Ah, one can dream...