Slashdot Mirror


You Call This Agile?

JoelonSoftware's most recent piece is about some of the fallacies in "Agile" software and some of the issues within it. We use Agile in some parts of the company, and have had success with that -- that said, there's always the peril that happens when development and other parts of the company have...miscommunication, which sounds like the problem described in Joel's piece.

18 of 168 comments (clear)

  1. process first or business first? by ab762 · · Score: 3, Informative

    Anytime that the process concerns dominate making product, supporting product, doing business, making money, you're in the soup. Any process, methodology, tool, language, whatever can be used to make product. And any process, etc. can become an idolatrous religion. Except Linux, of course.

  2. fallacies don't exist within methodologies by yagu · · Score: 4, Interesting

    I think one of the blessings and curses of methodologies, in this article's instance, "Agile" (ha!), is they are their own universe. So, unless there is something within the methodology that is self-contradictory methodologies don't have fallacies. Methodologies are theses, usually tepid ones at best.

    Methodologies are someone's or some group's or some company's idea of a way to successfully accomplish a task, project, etc. Fortunately for all who sell these (vapor)wares, methodologies never fail, they merely suffer from those who have improperly used them.

    Methodologies then become the convenient whipping boy for work not done satisfactorily. Sigh.

    Peel away the layers, eventually it all still boils down to knowing what you want to do, knowing how to do it, and doing it with a strong instinct for balancing things that matter and things that don't. Methodologies won't do that for you, good project managers will.

    (Some of the very best and most successful projects I worked on were with a friend who I consider to this day to be one of the best project managers I ever knew (and I knew many). He used no methodology, but had incredible instincts and a strong will. He knew how to handle time frames, important (and not-so-important) crises, difficult workers, and how to prioritize. It's a shame he didn't get better recognition - he might have had he "used a methodology". I found it ironic he was ostracized/admonished by the company, but he continued to be their go-to guy for the important work.

    Bottom line, "Agile" isn't. But "Agile" is just one of a long list of bit players for methodologies in IT.

    1. Re:fallacies don't exist within methodologies by RingDev · · Score: 5, Interesting

      No offence meant to your friend, there are many people who have a knack for project management, but... Methodologies are kind of like stories. There are only a handful of distinct stories to have ever existed, every other story in existence is merely a slight modification or attempt at recreation of one of those original stories. While your friend may not have researched and followed any specific methodology, he likely practiced one with out even knowing it.

      In defense of "Agile", it can be (agile). But it takes the right mindset from the developers, project manager, upper management and customers. Agile will not succeed in environments where anyone in that chain does not have the "Agile" mindset.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  3. At the risk of being modded down... by smbarbour · · Score: 3, Insightful

    This article appears to be written by Captain Obvious and his sidekick, Common Sense.

    Yes, it is nice to have a dogmatic approach to programming, but ultimately it really boils down to "what course of action will have the greatest benefit to the company?" It has always been this way (even outside of software development) and it always will.

  4. The real advantage to Agile... by FortKnox · · Score: 4, Interesting

    ... isn't the whole issue with interuptions. That can be handled differently depending on the work (if you are making life-saving heart monitor software, you had better fix a bug the moment it comes up... if you are making some tool that other developers use once a week, a bug isn't that big of a deal)
    The real advantage is illustrated in the age old swing cartoon. By using scrumm and delivering sprint demos often to the user, they can see how their money is being spent, and can present requirement changes to the user faster, thus eliminating the need to make resounding changes right away... Agile development anticipates requirement changes, instead of ignoring it like past methodologies. Is it the best? Probably not... is it a step in the right direction? You bet your ass...

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    1. Re:The real advantage to Agile... by callistra.moonshadow · · Score: 3, Interesting

      I think people lose the point of Agile. Small, modularized, testable deliverables. User story and test-cases up front (not always practical though). We sort of use Agile at my current job, but often we find that if we do not lock down the high-level requirements you will never see the end of the development. I think what is key is small, discrete end-to-end deliverables. The flux on an interation should be encapsulated to that particular feature and then closed with the end of the iteration regression.

      As to interruptions, there are several ways to deal. The two examples offered are ones I've personally dealt with:

      1. Clearly define a percentage of time to address bugs - or buffer in time in your project plan - this worked out well for when I worked at a security software firm. We had to be reactionary while still being able to deliver our product on time. We added monthly time for dealing with emergency vulnerability response. Sometimes we over-estimated and other times we did not. It was not perfect, but it helped keep a project relatively on track when there were outside influences.

      2. Dedicated QFE (Quick Fix Engineers). This can also work, but it costs time and money to keep folks dedicated to maintenance and also keep them from quitting.

      As with any methodology, things also boil down to how good you do up front - use-case analysis, requirements gathering, support from upper management, testing teams. I have never seen any single methodology work perfectly. Usually you end up taking stuff from different sources and leverage what works and lose what doesn't.


      Cally

      --
      --Cally
  5. Joel has capacity to speak his mind by zoftie · · Score: 4, Insightful

    He has capacity to speak his mind, as he took intensive courses on writing and expression in university, but that doesn't detract that his ideas are his and to each idea there is the opposite side that has just as many positives, if presented correclty.

    Aglie development works, but only if people can be trained. Training is something that is omitted when it is decided on whatever model you want to adhere to. Remember we are all just animals and the more training we get, the better we are at it.

    Agile process is based on feedback, and therefore programmer must be trained to appreciate and nuruture feedback from his practices too. Programmers need candy too, for rewards, and that candy is a feedback from wroking code. Given, if you are writing a disk driver, feedback is limited, compared to game developer, writing graphics or sound enegines. What Agile brings, is that rewards come at a steady pace, therefore propping up motivation of developer from development side of things. Disk driver developer must find his way to recieve rewards from developing driver code, perhaps thats why compensation is higher for the driver developers, because work has no immediately accessible of stimuli and chances to get negative stimuli, like corrupt disk of the user, are quite high.

    If you code not for the sake of itself, I pitiy those people. But then they aren't on the slashdot.

    1. Re:Joel has capacity to speak his mind by supersnail · · Score: 3, Interesting

      The whole point of the "stick to the plan" and "no interuptions" rules
      is to focus project leaders on stopping trivial interuptions of the
      " who knows how to load paper " and " could you check over my presentation"
      type which will happen 10 times a day if there was no rule.

      Worse the avergage program will load the paper or check the presentation
      thus reinforcing the "its ok to interupt these guys there only programmers"
      attitude.
      If you have a rule and a fancy methodoligy its easier for the project
      leader to field interuptions without appearing rude and unhelpful.

      I used to go to the secure telecoms room when I had serious stuff to do
      as hardley anyone had access, nearly always got a chill from the AC though.

      --
      Old COBOL programmers never die. They just code in C.
  6. What universe did this come from? by autophile · · Score: 5, Funny
    From TFA:

    This Is Why Programmers Get The Big Bucks. The whole reason you gave them Aeron chairs, unlimited M&Ms, free catered lunches, and the kickass computers with the 30" LCDs...

    Leakage from an alternate universe far from our own?

    ...is so they can deal with new bugs Microsoft introduced in their code by messing up a DLL that used to work.

    Okay, it's a universe very close to our own.

    --Rob

    --
    Towards the Singularity.
  7. We go through this all the time. by khasim · · Score: 4, Insightful

    I can write any program you want within any time limit you want provided ...

    a. I don't have to support it.

    b. It doesn't have to work.

    Yes, that's funny, but it is not a joke. Processes are supposed to be about functionality and maintenance. A one-off app for a critical issue today doesn't need a process (except how to delete it tomorrow so it doesn't become part of they real system).

    And that is where marketing and development differ. Marketing sees the opportunities in selling "support contracts" for code that was rushed out, filled with bugs and features that don't work.

    Development only sees problems that they're going to have to fix. And fix today. And fix in the quickest possible way because the customers are complaining about a critical issue. And so forth.

    So the various processes (and project managers) are supposed to translate/support both views. Get it out in time to make the sales, with a stated minimum level of functionality and no more than X bugs of various levels.

    But, as you noted, it is easy to follow the process as the religion instead of recognizing that it is just a means of getting product ready for shipment so it satisfies marketing, the developers and the customers.

  8. not Agile by yaphadam097 · · Score: 4, Insightful

    In the hypothetical scenario the customer introduces a critical story in the middle of an iteration. This can and does happen in Agile projects. The only problem is that the team may not be able to deliver something that it thought it would because it will be spending effort on the new story. That is ok. The primary goal of Agile is to give the customer the ability to prioritize work and manage the creation of business value.

    Also this aversion toward "context switching" isn't particularly Agile. The idea behind TDD, evolutionary design, and small time-boxed tasks is to work in small chunks. I would argue that the ability to "context switch" developers while still developing value incrementally is the whole point of the Agile approach.

  9. Not a black and white discussion.... by agilen · · Score: 3, Insightful

    I think the point missed by both articles (Joel's and the one he is commenting on) are that specific examples are bad. The real problem is making a habit of emergencies. When you fly by the seat of your pants and constantly have engineers fixing emergencies, then yes, it has a very negative impact on their productivity. Once in a while, however, is to be expected and is okay.

    Really what any organization should do is instill the resources and culture for proper QA and operational support for developers. If calling the original engineer is the _last_ resort, because QA didn't catch a bug and operations can't fix the problem, thats fine. All too many organizations, however, have an engineer getting called first for a problem that probably should have been caught by QA, or that should have been caught by the operations people. Engineers hunting down problems and finding a reproducible case constantly is really what kills productivity. If the culture is "don't worry, if its broken the engineer who made it can take time out of their current projects to fix it", then your organization is broken.

  10. Context switching, aka, incompetence by SuperBanana · · Score: 3, Insightful

    Why do I see Joel constantly talking about how disturbing it is to "context switch", when sysadmins like myself are expected to handle a dozen or more tasks, most of them "surprise" stuff, daily? Don't tell me "oh, programming is complex"- so are networks.

    So, you get unlimited M&Ms, a 30" screen, aereon chair, and get all upset when you spend an unexpected 2 hours out of your 8 hour workday on an emergency, one a week or so. Meanwhile, I'm working on whatever was left in the IT supply room, have to carry a pager, work 10 hour days because I'm doing 2-3 people's jobs- and I've got a half dozen long term project goals...but I'm getting bugged HOURLY to fix the most trivial shit by programmers who can't be bothered to stick paper in a printer?

    If Sarah was a sysadmin and had to waste a day collecting her thoughts after spending two hours fixing a mysql database, she'd be fired. You programmers need to stop behaving like prima donnas.

    1. Re:Context switching, aka, incompetence by Tim+Browse · · Score: 4, Funny

      So why not become a programmer? Apparently, you'd work less hours, have better conditions, a better defined job, and not get interrupted all the time.

      After all, I'm sure programmers' jobs are easy. Just make the switch.

      In the meantime, junior, pipe down and fix the mail server.

  11. Simple solution really ... by johnlcallaway · · Score: 3, Insightful

    When a project goes to production, the team must remain with it for a period of N days to handle the deployment problems. One would expect the majority of issues occur within the first couple of days, maybe weeks. Since it is fresh in their minds, they are the ones best suited to correcting issues. Other projects can be available, but fixing the prior one needs to be priority.

    Then, find the developers who are good at maintenance programming. I hate working on long projects with the associated paperwork and spending long hours working with the customer trying to tweak a table. Even Scrum requires some process work outside of development. I prefer maintenance programming that gives me a chance to know many, many systems at a high level and then dig into them when there is a problem. This lets me contact Susie for a 5 minute discussion, and then her get back to her project. There are fewer processes because the fix is often smaller, and it has to be done now. It's amazing how many processes get circumvented when customers can't use an app.

    The advantage is you get staff members who may not know the deep details of individual products, but have more information about multiple products and are not tied to specific resource timelines. Plus you get developers with timelines who get fewer interruptions. I agree that context switching is bad, whether you are a sys admin or developer. Finding ways to reduce it, even if the solutions means I spend four hours fixing it instead of two, can have other benefits. For instance, being able to say 'Hmm...we had a similar problem last month on this other application, I wonder if it is a similar problem.' then asking the developer a specific question.

    It's a different mindset, and it's not for everyone. People who do it have to be able to juggle multiple priorities and handle context switching well. They also need to be able to 'see the big picture' more clearly and understand how product A works with product B in detail (since many issues often fall there and result in group A blaming group B and nothing getting fixed.)

    They also have to contain their ego and find the challenges in maintenance programming that are just as rewarding as new development. I love being 'the hero' by solving production problems quickly when no one else can.

    --
    I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
  12. Re:Captain Obvious and his sidekick, Common Sense by mpaque · · Score: 3, Interesting

    This article appears to be written by Captain Obvious and his sidekick, Common Sense.

    But the thing of it is, you see, is that Project Management has trouble seeing the obvious, and needs a regular kick in the pants.

    I am regularly asked about how long some feature or other will take to implement, and generally give a response in terms of man-days or man-weeks. What's fun is to see how this is interpreted by a Project Manager.

    "This feature will take 5 man-days to implement."

    Manager: "So, it will be ready on (20, 1, 2, 3, 4, 5...) the twenty-fifth. I'll put that on the schedule."

    "No. I said 5 man-days. That's not the same as calendar days, and we're shut down the 24th and 25th."

    Manager: "Oh, right. So, next Tuesday, then."

    "No, I said man-days, which are not the same as calendar days. We don't have any one who can start on this at once, and everyone already has work to do."

    Manager: "Oh. Well, can you start on this tomorrow, then?"

    *SIGH* And these are the folks who are creating all the pretty PERT and GANTT charts for senior management.

  13. Re:What friggin planet is he from.... by bentcd · · Score: 3, Informative

    Spolsky comes from a world where management realises that in order to get effeciency out of programmers, you need to treat them right and give them the tools that they need for the job. Now, this may be common or it may be rare, but it most certainly is the right way to run a programming shop. So when he says "this is why programmers get . . ." what he really means is "this is why _my_ programmers get and this is why _everyone's_ programmers should be getting . . ."
    Of course, he's also a but picky about what he'll accept as a proper "programmer" :-)

    --
    sigs are hazardous to your health
  14. Sounded nice by bataras · · Score: 3, Interesting

    It sounded nice to hear Joel debunk the agile anecdote as anti-agile and then offer his own real world example.

    Problem is his example leave his own "agile" slip showing a bit. His example is as follows:

    MS released IE7
    This broke a proxy server DLL thingy
    Which in turn broke their own Copilot app for a few customers
    Which meant he had to divert Ben from a 2 week release, fix the problem, patch the server and delay the release
    And this interruption of their agile development was the right decision because it served the customer better

    Setting aside the issue of an individual programmer (Ben) deploying fixes straight to production, here's the thing Agile-Ben should have asked: "how the hell did we let the big IE7 release come along, hoze some of our users, interrupt me and probably cause the next release to be delayed?"

    Assuming it wasn't part of Ben's agile programming job to regression test and qualify major platform changes for released products, Ben should be saying, "screw this 'it was the right decision to interrupt you' idea. We shouldn't be in the this place to begin with."