Slashdot Mirror


A Decade of Agile Programming — Has It Delivered?

snydeq writes "InfoWorld offers a look back at the first decade of agile programming. Forged in February 2001 when a group of developers convened in Utah to find an alternative to documentation-driven, 'heavyweight' software development practices, The Manifesto for Agile Software Development sought to promote processes that accommodate changing requirements, collaboration with customers, and delivery of software in short iterations. Fast-forward a decade, and agile software development is becoming increasingly commonplace, with software firms adopting agile offshoots such as Scrum, Extreme Programming, and Kanban — a trend some see benefiting software development overall."

31 of 395 comments (clear)

  1. Maybe they did it wrong... by TheFakeMcCoy · · Score: 5, Interesting

    A team in my the company I worked for was designing a new set of software and were utilizing Agile development. Well, seems they spent so much time going back and changing the software due to the changing demands that they never got anything finished to demonstrate so they wiped out the project team.

    1. Re:Maybe they did it wrong... by MadKeithV · · Score: 5, Insightful

      "You are doing it wrong" is the perpetual excuse of Agilists when you say that agile methods have not worked for you. They are hiding behind a certain impossible to define or explain "something" that you supposedly are not doing or not doing right that causes your project to fail, because if you were Doing Agile Right (tm) (whatever that means) your project would have been a resounding success.

      In the end Fred Brooks got it right decades ago: "there is no silver bullet". Software development is just hard. Anything promising massive gains in success or effectiveness is snake oil.

    2. Re:Maybe they did it wrong... by 91degrees · · Score: 5, Insightful

      Well, they are doing it wrong.

      The something is possible to define and explain but is typically different in different cases.

      In this case it seems that the problem is changing requirements. That will kill any project no matter what the methodology.

    3. Re:Maybe they did it wrong... by MadKeithV · · Score: 5, Insightful

      In this case it seems that the problem is changing requirements. That will kill any project no matter what the methodology.

      This is exactly one of the key points that the Agile community keep trying to drill into us! The Agile Manifesto explicitly states "Responding to change over following a plan", which is translated into the principle "Welcome changing requirements, even late in development."

    4. Re:Maybe they did it wrong... by Superken7 · · Score: 4, Interesting

      I fail to understand why that failing was related to the methodology?

      "Due to changing demands"

      It doesn't matter which methodology you use, if your goal is constantly changing you won't get anything finished, almost "by definition". If it wasn't that bad, maybe they weren't familiar enough with the methodology?

      In fact, I'd say that agile software development methodologies work best for such projects, because they are aimed at constantly changing demands.
      That's why almost all startups use agile software development, because *every* startup goes through a process like (very grossly, mind you):

      1. search a business model
      2. execute business model
      3. realize 1) wasn't realistic, change it
      4. goto 1

      The transition process (usually referred to as pivoting) needs to occur *rapidly* and *continuously*, hence the agile software development.

      Of course, if you keep changing the initial goal, you will never get finished, doesn't matter which methodology you use.

    5. Re:Maybe they did it wrong... by William+Robinson · · Score: 3, Insightful

      Software development requires Creativity, Discipline and many more things apart from Agile, and the process goes through lot of iterations, training, discussions and confidence building among developers to motivate them to follow process in the company. Also, the process to be adapted should be close to the type of Software company is focused on and what developers are comfortable with. Many process designers/implementers forget this fact and blindly throw something at them and expect results overnight and get surprised when it ends up disastrous.

      It takes time to show them the processes are here to improve quality. Agile or any other Software Engineering process is not bad. The process of process implementation could be bad.

      Also, process implementation is a difficult task if upper management believes that it is job of juniors.

      So yes, I agree with you that Maybe they did it wrong way. If somebody believes Agile is going to work like a switch, they are mistaken.

      My 2 cents.

    6. Re:Maybe they did it wrong... by JLangbridge · · Score: 5, Interesting

      I was fired from a job because of Agile... I'm a C developper, and one part of the server had Java development. Well, guess who had to take the post-it, because "that is the way things are done". So here I was doing Java, on a ticket that was supposed to take a day, I did it in 4. I had to take the ticket, because that is what Agile is about. During the scrum meetings, I said I had problems with it, but I couldn't ask for help, because I took the ticket, and "that is the way things are done". I was a 6-month trial period, so they sacked me with no warning, because I was crap at my job. Since then I've been working with multinationals, and the previous company has made one single iPhone App that has a rating of 1-star, their previous flagship application is now one-star too (and on the verge of a lawsuit because of a dodgy change of contract for the application). Since then, I've had real Agile training, and the trainer explained the way things were really done, and at least I know I wasn't in the wrong. Still, my first Agile experience cost me my job. That's what I remember.

      --
      The urgent is done, the impossible is on the way, for miracles expect a small delay.
    7. Re:Maybe they did it wrong... by Entrope · · Score: 5, Insightful

      Agile principle #2 (from http://agilemanifesto.org/principles.html): "Welcome changing requirements, even late in
      development." Other methodologies typically draw a line in the sand to recognize the costs of changing requirements late in development. They don't often forbid crossing that line, but they encourage people to honestly evaluate the trade-offs involved in changing requirements.

    8. Re:Maybe they did it wrong... by dkleinsc · · Score: 4, Informative

      Well, yes and no.

      There have been some developments since Brooks wrote No Silver Bullet that have helped by attacking the accidental complexity of software development - widespread use of garbage collection, for instance. But Brooks is still absolutely correct that the complexities of software have a lot more to do with the complexities of the human mental modeling, heuristics, and decisions that software replaces than they do with the challenge of converting that to something the computer can understand.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    9. Re:Maybe they did it wrong... by Jurily · · Score: 4, Funny

      Shhh, we're talking about Agile. Put your logic away and break out the Bib^Wmanifesto.

    10. Re:Maybe they did it wrong... by iangoldby · · Score: 4, Insightful

      I was fired from a job because of Agile... Since then, I've had real Agile training... Still, my first Agile experience cost me my job.

      I don't know enough about Agile to make a judgment myself, but you've practically said it yourself: your first experience wasn't Agile, it was just something that someone called 'Agile'.

    11. Re:Maybe they did it wrong... by gutnor · · Score: 5, Insightful
      The change are welcome in Agile indeed. That does not mean that there is no consequence of that change. A lot of changed requirement means a later release and if you keep changing, you will never release anything. But there is no methodology that can prevent that.

      To take a car analogy - using Agile is like using a GPS: it is a methodology that tells you were you are, and can adapt if you take a wrong turn or if you change the destination. Like the GPS, if you cannot make up your mind where you are going (or do follow the indication of the GPS gives - been there, ...) you will not get anywhere.

    12. Re:Maybe they did it wrong... by jfanning · · Score: 3, Insightful

      Uh, that's not Agile. Nearly everything you mentioned there is so anti-agile I can't even start breaking it down. Slapping an Agile tag on it doesn't make it agile. No mater what most companies think.

      I have seen frequently referenced that the switch to agile takes up to 18 months to produce results. And even then there have been studies that find no significant enhancement in productivity.

      As far as I can see there is no actual benefit in productivity at all moving to agile. It just gives greater clarity to the current state of development and should produce software with lower levels of faults through automated testing and continuous integration.

    13. Re:Maybe they did it wrong... by elrous0 · · Score: 5, Insightful

      Your post reminds me of a Muslim friend who told me once (dead seriously) that Muslims didn't attack the World Trade Center. They weren't REAL Muslims, you see.

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
    14. Re:Maybe they did it wrong... by Anonymous Coward · · Score: 3, Insightful

      Firstly, I think Agile has delivered. The real problem is that most companies (people) have used the term, "agile" to mean I don't really have to have discipline because I'm being so agile. In my experience, management loves the "code done in two weeks" part, but they hate that the rest of it has to be done in two week increments part. In my opinion, Agile methodologies have had the least affect on developers. Most of the rest of IT is used to a leisurely pace where they have meetings for six months to decide what programmers should do in two weeks. Using an agile methodology, these same folks are under the gun to deliver and, in my experience, they don't like it.

    15. Re:Maybe they did it wrong... by Barlo_Mung_42 · · Score: 4, Informative

      No true Scotsman fallacy:
      http://en.wikipedia.org/wiki/No_true_Scotsman

    16. Re:Maybe they did it wrong... by blair1q · · Score: 3, Insightful

      Well, there's a consistency there, then.

      One of the basic tenets of Agile is that you don't use inexperienced people.

      Much of the agility comes from the fact that your team consists of pros who don't have to hack so much as lay down code and keep going.

      If you give someone a task for which they aren't trained, you're shoving logs under the bogies of your train. The whole thing will stop, but not all at once, and the spot where it starts stopping will be the least happy about it.

  2. Captain Obvious by MadKeithV · · Score: 4, Insightful

    Quoth TFA: "Despite potential pitfalls, experts in the agile space agree that implementation of agile practices has benefited software development overall."
    And in other news, despite potential pitfalls, the pope agrees that Catholicism has benefited religion overall.

  3. Re:A point of view by drewhk · · Score: 4, Insightful

    The original manifesto's key message was "people over processes" which I still agree with. On the other hand the word "Agile" now means just as many processes as waterfall or RUP meant in the past. Shame.

  4. "Agile", no -- "agile", yes by CyberDong · · Score: 4, Interesting

    I've worked in 100% waterfall, and in good agile environments, and I've found the key is to keep things small-a "agile", not to concentrate on capital-a Agile. Some places embrace Agile as a process, and fill binders with process documentation around their Agile process - at which point it's no better than any other.

    I think the key to success is summed up in this line from T3FA:

    "Most teams are not adopting scrum, extreme programming, or another specific Agile approach, but are embracing agile as an ethos or philosophy and cherry-picking the best bits from many different process models to develop a formula unique to their own situation," according to the report.

    1. Re:"Agile", no -- "agile", yes by drewhk · · Score: 4, Insightful

      The original Manifesto:

      "We are uncovering better ways of developing
      software by doing it and helping others do it.
      Through this work we have come to value:

      Individuals and interactions over processes and tools
      Working software over comprehensive documentation
      Customer collaboration over contract negotiation
      Responding to change over following a plan

      That is, while there is value in the items on
      the right, we value the items on the left more."

      I think it is hard to disagree with the original statement. What is frustrating now, is that "Agile" degraded to a bunch of buzzwords and processes (SCRUM, XP, TDD, BDD, etc.) which it was going against originally. Of course it is more business in selling these (by consulting companies) than the vague "do what fits you best" statement.

      Also, the problem is not with particular practices, or processes but the mindless, inflexible application of them to every project and team on earth. Teams are different, software are different, why should we all use the same processes then?

  5. Why don't they ask by JamesP · · Score: 3, Insightful

    if waterfall has delivered?!

    It seems most projects work in spite of waterfall, not because of it.

    I'm not saying it doesn't work. That is for small/medium projects with a very tight scope it does.

    What's the name of that FBI project again?! Virtual case file?! Oh well...

    --
    how long until /. fixes commenting on Chrome?
  6. First decade? Not likely by netsavior · · Score: 5, Interesting

    In my experience, software development methodologies are more of a way of describing how teams already work. Sure you can put a name to it, polish it a bit, and other people can work toward that name, but there were tons of "Agile" projects and "Agile" groups before the manifesto. Maybe "Software companies" didn't do it before 2001 I don't know... but "software departments" of other companies have pretty much doing this since I have been around, which is a lot more than a decade.

    The truth is that electronic delivery created agile development, at least for software companies. Internal departments have had the connectiviety for 2+ decades to deploy new releases often, but it wasn't till the late 1990s or early 2000s that a "boxed" software company could provide regular working releases to their customers (who wants to mail a CD or a stack of floppies every 3 weeks, and what customer would actually apply them?) Web-based apps and self-updating software just brought dedicated software development in line with corporate development practices, and then it was given a name.

  7. Scrum is *not* a replacement for good management by Gopal.V · · Score: 5, Interesting

    I appreciate good management. I can live with no management, but I can't handle bad management.

    SCRUM has sort of become a device for a manager to avoid managing. The human in the picture is replaced with a sprint chart and backlog tracker. It lets bad managers get by, while good managers are really thrown out of the picture.

    I hated scrum in my old job. But the new job just throws out a list of features to implement, ranks it and throws it at one of us. There are no punishments for missing a day, no tracker to guilt-trip you and most importantly, the stand-up meetings are just before lunch. And mostly, serves to keep our communication channels open across the team.

    I hated the time-keeping TPS report style scrum, but I'm cool with the new approach. I love the idea of sprints and taking a week out of a month to hammer something out. But this system only works with motivated teams with a fair scrum-master.

    But I repeat, it is not a replacement for good management. It is as good as a way of letting me manage my tasks,but please (for the love of God, please) do not use it to manage me.

  8. Re:No by mcgrew · · Score: 3, Interesting

    From languages I've seen, programming has regressed in the last decade. When Grace Hopper wrote the first compiler, her dream was an english-like language that computers and people could both understand easily with a minimum of training. She co-wrote COBOL as the second compiler.

    Older languages, like the mainframe DBMS NOMAD and the PC DBMS dBase were IMO brilliant. They needed little documentation, and no curly braces or other such nonsense you find in modern languages like C or Java.

    The "language" I hate most is MS Access. Convoluted and unintuitive, you don't really write anything, and what's produced is "visual basic" and the equally unreadable SQL.

    I hate it. I'd rather program in assembly, so I can know what registers are being accessed, whether I pushed or popped a stack (and which stack), etc.

    I hate programming in a language that doesn't let me feel the metal. Hell, I'd tale old fashioned 1980 BASIC over the newer languages; it doesn't take long to learn not to write spagetti.

  9. Re:A point of view by JaredOfEuropa · · Score: 3, Insightful

    "People over process" is an important tenet in more ways than one, and not only in IT. Often, this message is taken to mean that teams and individuals are given more freedom to organise their own work, and are managed on outcome rather than activities. This is true in some ways, but it's more than that.

    "People over process" to me also means acknowledging the value of each individual's skills and abilities. That starts with resourcing: instead of posting jobs for "2 junior programmers, 1 senior programmer, 1 encryption specialist (part time) and 1 PM", one would think "Together, Alice and Bob are up to the task of writing this module, Alice knows enough about encryption to cover that part of the job, and Bob is a good team lead". No two people are alike, and if you value people, that means that you account for their differences as well. Yes, it also means that if Alice calls in sick, you have a problem on your hand, but it's by no means an insurmountable problem.

    And it goes beyond that. "People over process" to me also means that you let people do what they are good at beyond the call of their assignment. (as long as it benefits the company). As an individual, it means that you sometimes take responsibility for stuff that is not strictly your job. If someone contacts me with a problem I can solve, I do not answer with "Contact the helpdesk"... if it's likely the problem will get kicked down 3 layers, taking 2 weeks to come up with a non-answer. Instead I will take an hour off my regular work to provide a helpful answer (of course with the suggestion that they contact the helpdesk, and copying in support as well). This helps everyone, including the company.

    Yes, accounting for individual differences makes budgeting, resourcing, managing continuity, and people management a lot harder. That's why managers hate "people over process" and why Agile IT gets loaded down with more process: resources are so much easier to manage than people.

    --
    If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
  10. Indeed, THERE IS NO SILVER BULLET by SmallFurryCreature · · Score: 4, Insightful

    IT, or at least some people in IT suffer from what I call the "Oprah" syndrome. No, not the weight issue. The idea that a problem is just one problem and that it can be solved with a single solution. Or the silver bullet that will solve all your problems at once.

    Software development is bloody hard, partly because it doesn't deal with a real product and testing a software product is extremely abstract.

    If I design a better brake pad, I can test this fairly simply AND thorougly. We know exactly what it is supposed to do, how it does it and how we can compare performance. There is no magic, if the brakepad reaches 198 degrees on a sunday, the trunk will pop open. Also nobody will ask a brake pad engineer to add a christmas special to it, on the 25th of december, at 8 in the evening.

    Web development especially suffers from the idea that if only we implement magic method number #45324521, all the hassle of web development will go away. Writing specs is long boring and not very sexy. So lets do agile and not write them anymore. Problem solved... eh no because spec writing is long boring and not very sexy because getting the requirements out of a user is like sucking cock. The user might enjoy it but you are just left with a bad taste in your mouth and a desire to throw up over the user. Or maybe that is just my dates.

    "But if you do agile right", but if you do documentation driven development right! Any method, done right will most likely work. That is the definition of doing it right. Why is it so hard to do agile right? Why are there so many variants already?

    I see a lot of "magic" solutions in web development.

    Database abstraction, so we can magically switch database!!!

    Question: When have you EVER switched database on a web application and HOW easy was it? Is there ANYONE out there who only use pure SQL that is 100% understood by all databases the same? Then go stand in the corner, because your code lacks any optimization. Real developers optimize their code for the specific environment they are using. This includes making use of database specific features. Don't use Mysql auto-increment and PDO and think you are database independent.

    Frameworks take all the hardship out of writing code!!!

    Question: How smart do you think it is to hire a coder who hates to code? It is like hating a singer who hates to sing, a spokeperson who doesn't like talking.

    This is where a lot of the silver bullets come from, from people that don't actually want to be a developer but just cash the paycheck. You don't hire a cook who only knows how to nuke frozen meals do you? If you go to the supermarket and buy a microwave meal thinking wow, this makes cooking easy, then here is a hint: IT AIN'T COOKING. It is heating up food.

    I see time after time some framework or tool promosing a complete working website without writing a line of code... EEK! That is my JOB! Luckily they are all wrong because what at most they do is create a straight CMS for your database, which is rarely what the customer wants. After all, there are already plenty of tools to graphically maintain your database content.

    No, Agile hasn't delivered... for those looking for a silver bullet to the problems of development. For others, it is a valid method with its own problems that puts it along side more traditional models, not ahead of them.

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

    1. Re:Indeed, THERE IS NO SILVER BULLET by Xest · · Score: 4, Interesting

      "Question: When have you EVER switched database on a web application"

      Earlier this year, because expenditure needed to be kept to a minimum during the recession starting in 2008 so the initial build used MySQL with the goal of moving to MS SQL Server when profit forecasts were a lot safer and more stable, which they were (and still are!) earlier this year.

      "HOW easy was it?"

      Effortless, precisely because I'd used database abstraction. It was done and tested in around 20 minutes thanks to the well written unit tests accompanying our abstraction layer demonstrating that the switch worked as required.

      "Is there ANYONE out there who only use pure SQL that is 100% understood by all databases the same?"

      Yes, I did, for this particular project, for precisely this reason.

      "Then go stand in the corner, because your code lacks any optimization."

      That's a rather broad statement, there's plenty of optimisation you can do even with just standard SQL, whilst you may lose some additional DBMS specific optimisation features, you may still be able to reach suitable levels of optimisation with ease-

      "Real developers optimize their code for the specific environment they are using."

      What was that about magic solutions? Optimisation is something you prioritise like everything else. If your application runs at no more than 10% CPU usage and the load isn't going to increase because the userbase is fairly static and this provides plenty of room for increases your application would be expected to see then it's far better to ensure your code is maintainble, than it is to sacrifice maintainability for unnecessary and time consuming optimisation and save the company money by focussing on the priority that best suits the task at hand. "Real developers" should recognise that they simply don't need to optimise at all if in the specific case they are considering it is an unnecesary task.

      To use a typical Slashdot car analogy, even the car industry gets this, this is why not every car is in a fight to be the fastest in the world, car manufacturers understand that when a lot of people are limited to a set speed limit anyway, there's no point optimising the car beyond that point and ensuring other things, like having enough room for children to sit in the back, are a priority. The speed of the car just has to be good enough to fulfil the end user's needs not be able to reach speeds which the vehicle will never ever be pushed to in practice at an unnecessary and possibly unaffordable level of cost to the end user.

      I actually agree with pretty much everything else you said, but your viewpoint seems a bit contradictory- on one hand you seem to be arguing the basic principle that it's all about using the right tool for the job, but on the other you then seem to be arguing against ways of doing things that are perfectly valid in some scenarios. If you hadn't taken a pop at database abstraction and insisted that all "real programmers" optimise their code then I find little fault with everything else you said. As it stands it sounds like you're saying "You should use the best tool for the job, except in a few cases where I don't like that tool". Sometimes database abstraction has value, sometimes optimisation doesn't.

  11. Agile Misinterpretations by hsoftdev17 · · Score: 3, Insightful

    Absolutely not. Never before have I experienced a method of programming that can be more aggressively mismanaged than agile. Many developers think agile is a means to produce better code, faster, and with better specs. Most management sees it as an excuse to provide no specs, to change their minds on what they want every 5 minutes, and call all of that "agile" development. These things ruin the name of agile development and provide such a bad experience for anyone stuck working with it, that it simply can't have managed to do anything but fail utterly to deliver. People have been fired over misinterpretations of what agile is. Others have left because of a misinterpretation that was shoved down their throats by management. And that's just all where I work... Perhaps it's better in other places, but I've never heard a story of it going well.

  12. Of course, there is always the exception by SmallFurryCreature · · Score: 3, Insightful
    But you knew during all your development that you had to switch databases. AND you didn't have to worry about speed. Often you don't have that luxury.

    While you have a valid example of why database abstraction CAN be useful, you have not actually proven that it must be done every time just in case you might switch sometime in the future.

    Seen to many developments throw speed out of the door for a migration that will never happen.

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  13. Re:No by fwarren · · Score: 3, Funny

    Old School here too. I do what I have to, to make a living. For fun, I program in FORTH and store my source code in 1K Screens represented as 16 lines of 64 characters each.

    Simplicity and elegance is what I am looking for. A new Forth definition should be about 7 to 9 words long (not including noise like + - / ). If I somehow end up in a situation where I run out of room, It means I have used 15 lines for creating my definition. Which is another way of saying "Hey! your doing it wrong".

    I think programming should be taught on an emulator of a Commodore64. Once you learn the computer from one end to the other and how to take advantage of all of it and understand all of its concepts, then you can move onto programming in a more abstract environment.

    --
    vi + /etc over regedit any day of the week.