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.

168 comments

  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. Hmm by Anonymous Coward · · Score: 0

    "we use Agile in some parts of the company..." I bet this company isn't doing so hot SINCE YOU'RE ON /.!

    1. Re:Hmm by SirTalon42 · · Score: 1

      I'd hope Hemos would spend MORE time on Slashdot, not less!

  3. 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
    2. Re:fallacies don't exist within methodologies by hhr · · Score: 1

      It sounds like your friend instictivly followed "The Seven Habits of Highly Effective People" a methodoligy that not only applies to software, but every damn thing goal you have.

      In one sentence "Seven Habits" is-- know what's important, know what's not, only work on the important. That's a big over simplification that doesn't do justice to the book.

      I recommend that every developer read "Seven Habits." Developers aren't the only people in the world who have to manage long and complicated projects. You'd do yourself good to learn how the rest of the world copes.

    3. Re:fallacies don't exist within methodologies by Anonymous Coward · · Score: 0

      Agile will not succeed in environments where anyone in that chain does not have the "Agile" mindset.

      Wow! What a great way to blame the victim! Remind me not to use Agile, but to find a "methodology" that can succeed in an environment with normal humans and all of their strengths, frailties, and differing beliefs.

    4. Re:fallacies don't exist within methodologies by drooling-dog · · Score: 2, Interesting

      Formal methodologies won't save you from poor management, but they do serve to get everyone associated with a project on "the same page". I'm often skeptical of the claims made for one methodology vs. the next, but they all look pretty good compared to nothing.

    5. Re:fallacies don't exist within methodologies by Anonymous Coward · · Score: 0

      While your friend may not have researched and followed any specific methodology, he likely practiced one with out even knowing it

      And d***ed if anyone could tell you, no matter how much they watched him. Good project management is like art. Stupid reporters sometimes ask artists "how do you do that?", and the answer is invariably polite and political at best. So. While there's a kernel of truth to what you say, what it really boils down to is that the "friend" picks and choses what, to the less intelligent, appear as "bits of methodology" and uses them when appropriate. In reality, he is simply talented, and there is no way to distill that into a methodolog. If there were, there wouldn't be so much debate about this stuff.

    6. Re:fallacies don't exist within methodologies by Anonymous Coward · · Score: 0

      Your friend may be wonderful but there is only one, or two, or a thousand of him. Methodologies and processes are meant to ensure success of the average worker not the best. If you only have one project at a time you can get away with having one great PM if you have thousands in your portfolio maybe you need a mechanism of control not contingent on a single persons "instincts".

      In addition to scaling issues (one expert scales poorly) as the risks (big money, lives at stake, etc.) go up control becomes and issue and I want a process to ensure control as much as anything else rather than relying on a single person who is not impervious to the local mack truck.

    7. Re:fallacies don't exist within methodologies by Anonymous Coward · · Score: 0

      Being "on the same page" has value when you're talking about goals and requirements, but it can be a problem if you try to push it down to the low-level development details as XP does. Mandating pair programming is really about getting everyone to behave the same way which in general is going to fail.

    8. Re:fallacies don't exist within methodologies by tdenkinger · · Score: 1

      He knew how to handle time frames, important (and not-so-important) crises, difficult workers, and how to prioritize.

      Hmmm, sounds like a methodology.

      --

      TD

    9. Re:fallacies don't exist within methodologies by Anonymous Coward · · Score: 0

      Methodologies are merely theories that upper management uses to justify their existence to CEOs and CIOs. It does not matter if you are talking about the Agile methology or Extreme Programming, they are tools for upper management to do their smoke and mirrors to their boss.

      You can equate this evaluation to the same one Joel on software gave regarding an email he received that is posted on the front of his site.

      quote:
      I didn't understand a thing he wrote. The email contained a lot of words ("benchmarking," "outside in," "performance metrics," "best practice," "process and organization") each of which set off a loud buzzing alarm-like sound in my head.
      end quote

      It is all about trying to define that elusive almost unmeasurable number about how productive you can get a programmer to be. Software managers have been trying to define and increase that number for years and that is why we keep getting these silly theories about different methodologies which implemented in their pure form will rarely ever work in any environment.

      Is there an all purpose silver bullet that will encompass every programmer and every situation out there, most likely not. Are there things that can be taken from methodologies and made useful, for instance better communication between developers, I say sure.

      The reality is methodologies are used to sell books, get your contract company and nice fat contract, and a tool for managers to use as a magic show to their bosses. The best thing about being a manager and promoting a methodology is when the methodology does not produce the tangable results that they are looking for, all they have to do is say, "Well we just weren't ready for that yet" and move on to their next methodology.

    10. Re:fallacies don't exist within methodologies by ivan256 · · Score: 1

      Agile will not succeed in environments where anyone in that chain does not have the "Agile" mindset.

      So the methodology can't cope with a few bad apples?

      Chances are that in any group of 10 or more people, one or more won't carry their weight. This will either be due to incompetence, malice, or most likely, unexpected external events that take the team member away from their work. Nevermind that you included the customers in the chain. Most projects don't get off the ground unless you start with the customer as a theoretical entity...

      None of these team-wide fad methodologies ever pan out. The fact of the matter is that you can't tell a good (engineer|manager|developer) with years of experience in getting the job done correctly a certain way to suddenly do their job in a different way and expect good results. Most of these things have the same unspoken purpose anyway: to verify to the people on top that the people on the bottom are working as much as humanly possible. Unfortunately, the real goal should be a successful project.

    11. Re:fallacies don't exist within methodologies by try_anything · · Score: 1
      Methodologies and processes are meant to ensure success of the average worker not the best.

      Methodologies and processes are about making people with no taste or judgment perform at the same level as people who do. It just isn't possible. The effort would be better spent coaching those people to improve their judgment.

      Analogously, development groups that perform code reviews do much better than development groups that teach dogmatic and limited definitions of good design.

    12. Re:fallacies don't exist within methodologies by angel'o'sphere · · Score: 1

      Agile will not succeed in environments where anyone in that chain does not have the "Agile" mindset.

      So the methodology can't cope with a few bad apples?

      Yes! The main difference between agile methods like XP or SCRUM versus the deterministic methods like water fall or V-Model is: the deterministic methodologies are designed to have a broad mass of low performing developers/project managers, brought on track by a small group of experts. The only thing that is important: make the development of work pieces estimateable and repeatable. So in the long run, if you spend X dollar for one month, you know you will always spend X+/-5% for every month.

      Chances are that in any group of 10 or more people, one or more won't carry their weight. This will either be due to incompetence, malice, or most likely, unexpected external events that take the team member away from their work. Nevermind that you included the customers in the chain. Most projects don't get off the ground unless you start with the customer as a theoretical entity...
      Yes, agile methods try exactly that: cope with those problems and how to tackle, e.g. a customer relation or unexpected outside infulence.

      None of these team-wide fad methodologies ever pan out. The fact of the matter is that you can't tell a good (engineer|manager|developer) with years of experience in getting the job done correctly a certain way to suddenly do their job in a different way and expect good results.
        Thats not what agile methods do: they do the opposite: if one is an extraordinary developer, they copy his work style to the bad, lazy, dumb developers.

      Most of these things have the same unspoken purpose anyway: to verify to the people on top that the people on the bottom are working as much as humanly possible. Unfortunately, the real goal should be a successful project.
      That has nothing to do with being agile or not.

      Anyway: lots of critics against agile methods come from people who don't want to be agile. No offense. But if agile sucks for you, then very likely because you are not fit enough.

      The idea of agile so plain simple: you play basket ball in an unknown highshool or in a NBA team like Dallas Mavericks. The team has one goal: to win. Each team has some good players, and some less good players. You can improve the team by making the good players better, or by making the less good players better, or by making them both better. What you can't do is making a plan: win next game; train penalty shoots for 4 days, relax for 3 days, win second next game. At some point this plan failes, for some stupid reason you don't win. Traditional/deterministic methods are about planning and sticking to the plan. Agile methods are about: make the team better every iteration (season) it does. And back to your first line: yes, if the bad players don't learn from the good players, they get replaced! And if the replacements for the bad players are even better than the good players: they have to start learing again. And if they don't do that, they get replaced.

      To win a basket ball game: you don't need a project manager, but a team that is able to win, and that wants to win.

      Being agiel basically means: the team works liek a NBA team in the finals: all teams there outperform any other basketball team in the world. Translated to development of computer programs: the 5 people on the playing field interact blindly, smoothly, fast. They belong to the best players you ever will find, they realy on each other, and no coach, trainer or any other "manager" in the outside can do anything for them to win, except keeping the moral high. If anyone of them makes a mistake all others wil try hard to compensate, because they are agile. They don't wait to the next break, and make a review, and identify the problem area, and discuss a possible solution, or just ignore the problem and write the expenses of ... at the next break they already have adapted to the problem ... or, they lose.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    13. Re:fallacies don't exist within methodologies by ivan256 · · Score: 1

      Anyway: lots of critics against agile methods come from people who don't want to be agile. No offense. But if agile sucks for you, then very likely because you are not fit enough.

      That's a big honken' load of bull.

      First of all, I never said Agile sucks for me. I wouldn't know. I've only viewed these environments from the outside. It has nothing to do with being 'fit' enough, it has to do with the fact that I like to balance my work with the rest of my life instead of burning out young like the know-it-alls that think they're superstars. The funny thing is, I seem to get just as much work done as they do... Anyway... On to my point...

      When people implement Agile techniques, they don't reward or benefit the people actually accomplishing work, they select the people who appear to be accomplishing work. I know some Agile supporters, people who I've hear describe others as 'unfit' for Agile development, who thing they are hot shit because they work constantly and produce tons of code. I've seen these people have engineers who take a "learn-than-do" approach to their work thrown out for not producing. These people learn everything they need to know about the problem and implement a tactical solution. They are far, far more productive than the Agile workoholics, but they don't appear to be being productive, so they are removed from the environment.

      Let's take your basketball analogy one step further. You don't work your players so hard they can't stand up for the next game, do you? You don't leave your best guy on the court the whole game.. He comes of to sit on the bench for a few minutes now and then. It doesn't matter though, because at the end of the game, his numbers are there.

    14. Re:fallacies don't exist within methodologies by angel'o'sphere · · Score: 1

      First of all in a sentence like: if agile sucks for you, then very likely because you are not fit enough. The you in such a sentence refers to the reader not you as a particular person ;D

      Anyway: you have a missconceptin about the term agile. Agile is not:
      o its not, working more than 8 hours
      o it's not wasting your energy on an attempt to burnout
      o it's not making over hours, over shifts or having no life

      I don't know why that is your impression. Agile is just the opposite of deterministic. In a traditional method you plan to be at a certain time at a certain place, your descissions are mostly done at the project start. In an agile method you make ad hoc decsissions. Agile does not mean you are running, while deterministic does not mean you are walking. The opposite is often true, more traditinal run processes/projects are not able to adapt to change during the project, so they compensate with over work.

      If your impression about agile is as you described in your last post, some one told you wrong.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  4. 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.

    1. Re:At the risk of being modded down... by androidqueen · · Score: 1

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

      very true. but at the same time, people so frequently seek out dogma in order to justify their way of doing things, or even just to find a clear path that doesn't involve much decision-making, that it's important to articulate these things explicitly from time to time, along with the reasoning behind it. besides, it's joelonsoftware, so it's obviously right.

    2. Re:At the risk of being modded down... by bill_kress · · Score: 1

      Close. The actual statement should read more like "what course of action will be generally perceived to have the greatest benefit to those making the decisions"

      Even if you refactor "those making the decisions" to the company, you can't get away from the fact that if you can alter perceptions of the decision makers, you completely alter the course and outcome of the project.

    3. Re:At the risk of being modded down... by Anonymous Coward · · Score: 0

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

      This business needs to hear this once and awhile.

      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.

      But more often it is "perception" of "what course of action will have the greatest benefit to the company?" and not the reality. It is pretty easy in many environments to let interruptions get out of control. When lots of interruptions occur, it usually means you're technically understaffed.

    4. Re:At the risk of being modded down... by plopez · · Score: 2, Insightful

      Was it Voltair that said "Common sense is not so common". Wed have learned precious little in software development over the past 30-40 years it seems. People look for silver bullets and latch on to a methodology, such as Agile Development and end up reinventing waterfalls.

      People still think adding people to a project will in and of itself accellerate a project. They are wrong. Yet we do it over and over again.

      My question is, if supporting version 1.0 of an application is business critcal and developing version 2.0 is business critical, why haven't you trained a maintenence programmer? This is a case where careful hiring and training can pay off.

      The way I have worked and like to work is to use experienced staff for new development and younger hires for maintenence work. This gives you 6 months to a year to train the new developer, adds depth to the organization and allows the senior staff to focus more on larger issues. After 6-12 months you shift the jr. developer to new design and implenetation, under direction of a senior developer. Eventually you have a new senior developer.

      An added bonus is that it trains newer developers to be kind to maintenence programmers.

      --
      putting the 'B' in LGBTQ+
    5. Re:At the risk of being modded down... by Anonymous Coward · · Score: 0

      I would rather put it as written by "Captain Strawman" and her sidekick "Dreamer." The world I live in is one where programmers are asked to work on 6 or 7 projects simultaneously, with constant interruption for phone calls, group meetings, personal reviews, updating their health plans, safety trainings, budget revisions, and hundreds of emails per day all requiring responses. Nobody has two weeks to work on code, they have a few hours a week per project and each deadline is constantly being pulled-in by business managers elsewhere. While some of these projects are canceled before completion, any time freed-up is quickly filled with urgent requests to spec the time it will take to work on replacement projects or to fix recently released code for which the programmer received incomplete specifications due to poor process analysis. This is the most common methodology I have observed.

    6. Re:At the risk of being modded down... by ucblockhead · · Score: 1

      Yes. I've noticed that those two guys often complain about the great programming methodology du jour. If only the methodology gurus would listen to them more often.

      --
      The cake is a pie
    7. Re:At the risk of being modded down... by slimey_limey · · Score: 1

      You know that when you post something with that subject, it's a sure way to get it modded up, right?

    8. Re:At the risk of being modded down... by asc99c · · Score: 1

      I started out in much the same way in my job, beginning on the aftermarket team and eventually moving to new development. It worked well because maintenance issues cropped up throughout the code base, forcing me to have looked at a lot of different areas.

      It isn't common practice here though - I applied when the company wasn't really looking for new hires and I was lucky to get a non-existant job. Most of the new hires join a specific project when we're short of staff. That tends to mean that similar projects can have similar functionality implemented completely differently. It also means some people have no idea how large parts of the system work because they end up reimplementing the same stuff on various projects with similar requirements.

    9. Re:At the risk of being modded down... by mpaque · · Score: 1

      The way I have worked and like to work is to use experienced staff for new development and younger hires for maintenence work. This gives you 6 months to a year to train the new developer, adds depth to the organization and allows the senior staff to focus more on larger issues. After 6-12 months you shift the jr. developer to new design and implenetation, under direction of a senior developer. Eventually you have a new senior developer.

      What a very odd thing to do.

      In many workplaces, a pattern is used that completely eliminates the need for this training of new developers you write of. When new development is to be done, new employees are hired and assigned to the new development. That way, they learn and understand the software as it is developed. Once development is substantially complete, the same engineers, having an in-depth understanding of the product, become the maintenance engineers for the product. Eventually, as the product becomes obsolete and approaches end of life, the engineers remaining on the project are given the opportunity to explore other possible career positions in the industry.

      By having the senior, experienced developers performing all maintenance work, the junior new-hires, fresh out of college, are given free reign to explore and learn the ways of system design on their own, developing a new, fresh crop of seasoned maintenance staff, ready to be given that very special title of Individual Contributor and that special HR ranking Type II Limited.

  5. Summary author on crack? by RingDev · · Score: 2, Insightful

    ...miscommunication, which sounds like the problem described in Joel's piece

    Miscommunication? He's talking about context switching, which is an all too common and necessary evil in small shop development.

    In any given week I can switch from architecture design to business systems analysts, back to VB6 coding for legacy app maintenance, up to .Net for the latest report release, then into testing mode preparing another test release. All the while trying to convince my supervisor of the need for structure, project management practices, and tools to make our life easier.

    All that context switching definitely has a negative effect on my productivity. My supervisor asked me to tag tickets with time estimates when I closed them out. No biggie, but the shortest I'll tag a ticket for is 30 minutes. Originally I had said 1 hour, but my supervisor vigorously disagreed with my estimate of context switching's effect on productivity.

    -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
    1. Re:Summary author on crack? by 2short · · Score: 2, Insightful

      "No biggie, but the shortest I'll tag a ticket for is 30 minutes. Originally I had said 1 hour, but my supervisor vigorously disagreed with my estimate of context switching's effect on productivity"

      When doing planning-phase time estimates, our mantra is "Everything takes a day".

      A whole pile of little things in the same part of the same project might get done in a day, but if you're going to bother getting enough about a particular context into your brain to do real work, you better have something to do worth a whole day.

      Luckily for me, the originator of this mantra is my boss, and the CTO.

  6. 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
    2. Re:The real advantage to Agile... by MunkieLife · · Score: 1
    3. Re:The real advantage to Agile... by FortKnox · · Score: 1

      While in color and better drawn, I still think the old one is better (and, IIRC, it was originally made in like the 70s, so its held true for soooo long).

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    4. Re:The real advantage to Agile... by Doctor+Memory · · Score: 2, Informative
      if you are making life-saving heart monitor software, you had better fix a bug the moment it comes up

      Dunno, I would think in that case you'd want a more heavy-weight process, with lots of QA and regression testing. I mean, it's not like there's a guy sitting in a doctor's office with a CAT-5 cable plugged into his chest, waiting for you to download PaceMaker 1.1-A...
      --
      Just junk food for thought...
    5. Re:The real advantage to Agile... by Neumann · · Score: 1

      In my experience you never see the end of development. There are always more features to be added. The real strength of agile development is that it recognizes this and breaks up the development into small manageable changes, instead of trying to ignore the feature requests. The personal story that Joel mentions (the problems IE7 created for his Copilot software) has more to do with the fact that he has only one person responsible for the whole project rather than a specific methodology. Not knocking the decision (cuz well, his resume is a lot stronger than mine), but no methodology will solve a resource shortage problem.

    6. Re:The real advantage to Agile... by callistra.moonshadow · · Score: 1

      Yep. I agree 100%. Unfortunately many of our corporate masters seem to think that if you subscribe to one particular buzzword methodology every issue with software development will magically goes away. Uh, nope. Cally

      --
      --Cally
    7. Re:The real advantage to Agile... by Run4yourlives · · Score: 2, Insightful

      There are always more features to be added. The real strength of agile development is that it recognizes this and breaks up the development into small manageable changes, instead of trying to ignore the feature requests.

      You're bang on with that assessment. The big issue though is that this type of thinking is near-impossible to sell to anyone, anytime, anywhere.

    8. Re:The real advantage to Agile... by khchung · · Score: 1
      ...we find that if we do not lock down the high-level requirements you will never see the end of the development.


      Personally, that is one of the Aha! experience when I learn about the agile approaches. There is no end of the development, at least not from the developers side. The purpose of software development is to create software that provides business value to the users, and further development will almost always provide software to gives more business value to the users! Until you reach the point that the value provided by further development (including bug fixes) is not worth the projected effort required, then it is a business decision to stop further development.

      It is like any home-improvement projects, there is no end to the things you can improve in your home, as long as you are willing to pay for each piece of work, why must the contractor set some arbitrary "end" the project? YOU should be the one to say "That's enough.".

      I think the idea that there should be an "end" to a development project stems from the inappropriate commodity-buying approach of from the buying side (i.e. the users/clients) which is encouraged/accommodated by selling side (i.e. software house/developers), which is only suitable for buying off-the-shelf software but not very useful for a software development effort.
      --
      Oliver.
    9. Re:The real advantage to Agile... by callistra.moonshadow · · Score: 1

      I have to say that "there is no end to development" is not true in all cases, as a matter many. If you build a system that becomes deprecated over time, you will eventually retire it. When I refer to "the end of development" it is the end of a phase of a project. There *has* to be closure. If you do not officially end a version or point release there is nothing to examine for success or failure of your project and quite frankly no reward to the developers to have some success at bringing a project to closure. We are very clear about when a project is over (at my current job and my prior one at the security software firm).

      We use a Statement of Work or SOW with delineated deliverables. That does not mean maintenance and bug-fixes won't be delivered. That is part of support. Then we will potentially be planning the next release or retirement of a system and begin a new project cycle.

      So what is considered an ending is less about a perfect stop but the closure of a project tier, phase, release, of the standard development lifecycle. If you do not do this, it will have detrimental effects on your team and the software.


      Cally

      --
      --Cally
  7. 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 Anonymous Coward · · Score: 0

      "If you code not for the sake of itself, I pitiy those people. But then they aren't on the slashdot." They should be coding!! To my office!

    2. 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.
    3. Re:Joel has capacity to speak his mind by pigwin32 · · Score: 1
      Programmers need candy too
      Wow thanks for reminding me, I'd forgotten about the Werthers Originals I still had in my jacket pocket.
  8. Mod parent up by TodMinuit · · Score: 1

    That's pretty much the jist of it. Nothing accounts for every possible situation, not even buzzword methodologies. Do what you think is best.

    --
    I wonder if I use bold in my signature, people will notice my posts.
  9. 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.
    1. Re:What universe did this come from? by Anonymous Coward · · Score: 0

      No kidding. Everyplace I've ever worked, the M&Ms started to run out by the third week of the month. That hardly fits my definition of "unlimited."

    2. Re:What universe did this come from? by StarvingSE · · Score: 2, Interesting

      I get a chair that has the height-adjust lever broken off, I get to pay for M&M's out of the vending machine, lunch consists of a brown bag at my desk, my computer only has 256Mb's of RAM to run bloated IDE's on, and I have a 17 inch dell CRT.

      Where do you work, and where can I submit my resume?? ;)

      --
      I got nothin'
    3. Re:What universe did this come from? by Anonymous Coward · · Score: 0

      Last week I swapped my chair for the accountant's because a wheel broke. It doesn't have any height adjust levers (which I don't want because they'd last a week, even though I'm quite thin). There are no vending machines, lunch is a white plastic bag in the fridge, my computer only has 256 MBs of RAM as well, and even less of HD space left in its' glorious 8 Gig hard drive. My CRT is a 15 inch ViewSonic. I have a killer MS Natural Keyboard and MS Optical Intellimouse Explorer, but only because I bought them myself.

      Can I have your job after you leave for the other one?

    4. Re:What universe did this come from? by MrNonchalant · · Score: 2, Informative

      Joel owns Fog Creek Software and their jobs page is here. Alternatively there's another small company that has similar fantastical working conditions. Both, however, are reputedly hard to get into. If only more companies thought that way. Even free food/drinks is a big step in the right direction that doesn't cost a lot.

    5. Re:What universe did this come from? by Acer500 · · Score: 2, Funny

      Wow, and I'm constantly complaining to management about the computers we have (I'm talking Uruguay, Third World here, and some 1.7 Ghz PIVs and Celerons).

      At least we get to 512 or even 1 Gb of RAM most of the time, as we believe it's critical for developers (we usually buy memory upgrades to lengthen the life of most PCs).

      I think we'll donate to you next time :P instead of the other way round.

      I hope you're not in the US or Canada.

      --
      There are three kinds of lies: lies, damned lies, and statistics.
    6. Re:What universe did this come from? by Captain+Tripps · · Score: 1
      My computer only has 256Mb's of RAM to run bloated IDE's on
      I know of a local programming consultancy that deliberately gives its developers RAM-starved workstations. They bill by the hour, so the more time everyone waits for their IDE to page in, the more money the firm makes.


      On the other hand, my company's money comes from direct-to-consumer sales, much like Joel's does. I think this makes for a much nicer work environment.

    7. Re:What universe did this come from? by xero314 · · Score: 1
      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?
      If you knew Joel's history you would see that this is how things work in the universe, at least around him and his company. This is also why he has a successful company which produces high quality software (I'm not saying I like their products just that it is of a very high quality).

      I personally support his anti-agile stance since my experience has show that agile process is normally just and excuse to keep working when no one knows what they are doing. Agile is great when you want to milk clients and VC for millions of dollars by making it look like you may someday have a viable product. Too bad agile process rarely ends up with a usable solution.
  10. "Agile." Hah. by Anonymous Coward · · Score: 0

    Wake me when software projects start coming in on time and under budget.

  11. 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.

    1. Re:We go through this all the time. by emurphy42 · · Score: 1

      A sane marketing department would think "instead of using crap as a foot in the door for support contracts, let's use good stuff as a foot in the door for more good stuff". (Assuming your developers are competent; if not, then the only sane move is to leave.) Not only does this avoid giving customers unreasonable expectations about how cheap/quick things can be done, it also avoids customers who already have such expectations when they walk in the door, and cannot be convinced otherwise; those customers are an albatross round the neck, so you want them to drag down your insane competitors, leaving you and your sane competitors free to spur one another upward.

    2. Re:We go through this all the time. by hotdiggitydawg · · Score: 1
      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.

      I prefer to put it as follows:
      • Good
      • Fast
      • Cheap

      Pick Two.
    3. Re:We go through this all the time. by N+Monkey · · Score: 1

      I prefer to put it as follows:

              * Good
              * Fast
              * Cheap

      Pick Two.

      I quite like Terry Pratchett's twist on this:

      "Do you want it fast or cheap or good, gentlemen? The way things have gone, I can only give you one out of three."
      (from "Going Postal").
  12. 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.

    1. Re:not Agile by Anonymous Coward · · Score: 0
      It seems to me that there are interesting presumptions in the discussion; maybe it's because I use the word "customer" to mean "external entities that pay money", as opposed to the correct Agile-speak version. The presumption I see is that the set "customer" is of fairly small cardinality, and perhaps ideally cardinality one. But I work currently in enterprise software, where the customer set is modest in size (around a thousand). But the deal size (there he goes, bringing money into it again!) is fairly large. So the pressure from sales to be responsive in the shortest time is quite intense.

      Equally, there's no chance of deploying every two-week iteration to external enterprise customers. Many of them get upset if asked to upgrade more than every other year! So every deployed product needs to have about a twenty-four month support lifetime.

    2. Re:not Agile by yaphadam097 · · Score: 1

      I agree with the "small cardinality... perhaps ideally cardinality one" comment. That is to say that the Customer in the Agile sense must speak with one or close to one voice. If influences outside of the team are pulling you away from doing work that the Customer has prioritized then that is a failure of management.

      We had such a problem at my current company until we convinced our Customer team that production bugs (Excepting service outages) had to be prioritized with other stories. If they were more critical than the new feature they would be worked on first. That was up to the Customer to decide. So, outside forces feed stories to the Customer, but it is still up to the Customer to decide what is most important to work on.

  13. Or to Quote Sponge Bob... by blueZhift · · Score: 1

    It's for the customer!

    1. Re:Or to Quote Sponge Bob... by secolactico · · Score: 1

      It's for the customer!

      "Or as we like to say it, the Krustomer"

      --
      No sig
  14. OT: Meta-comment by Anonymous Coward · · Score: 0

    As it currently stands:

    50% Flamebait
    50% Insightful

    New moderation: +0 Inciteful

  15. Part of the ongoing feud with the Rails camp? by dsci · · Score: 2, Interesting

    Seems like this is just another shot in the feud between Spolsky and Heinimer Hansson?

    --
    Computational Chemistry products and services.
    1. Re:Part of the ongoing feud with the Rails camp? by Jennifer+York · · Score: 1

      Thanks for pointing out Heinimer! I've been seeing too much BS come out of Joel lately, and also Paul Graham, that I'm searching for a voice to counter their claims. I love Joel's and Paul's writing, they truly are spectacular wordsmiths, but something about them recently has me scratching my head... To much self serving BS is leaking into their writing that it has started to lose its value.

    2. Re:Part of the ongoing feud with the Rails camp? by UnxMully · · Score: 1

      Joel has a lot going for him, he runs a successful business, he writes well and a lot of his opinions are well thought out and presented. IMHO though he's very anti-agile, and particularly anti-xp, and some of his comments are just presented as canon without any backing. A while ago, for example, he had a rant about not doing up-front design. No reasons why he felt this was wrong were presented, just that it's wrong. If he'd presented some reasoning for his stance I could understand it, but there was no backing at all. Very disappointing.

    3. Re:Part of the ongoing feud with the Rails camp? by h00pla · · Score: 1
      In other words, Spolsky is a bullshit artist. It's all right. You can go right out and say it.

      --
      I've been swashdotted -- Elmer Fudd
    4. Re:Part of the ongoing feud with the Rails camp? by UnxMully · · Score: 2, Insightful
      I'll say it if I want to cocky, and in this instance, I don't.

      Joel has a blind spot. Doesn't make him a bad person.

  16. What friggin planet is he from.... by hilltx · · Score: 1

    "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 is so they can deal with new bugs Microsoft introduced in their code by messing up a DLL that used to work." -- Try a 5 yrs old computer, an uncomfortable desk,a chair that must have been bought at some office furniture auction from the 80s, a monitor that makes me feel like I have the eyes of a 75 year old and a boss that says fun is the enemy of productivity....

    --
    The government's view of the economy could be summed up in a few short phrases: If it moves, tax it. If it keeps moving,
    1. 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
    2. Re:What friggin planet is he from.... by hilltx · · Score: 1

      Ahhh, now I see.... if I would just crawl out of the cave towards the light, I might realize that the darkness I had experienced was only a localized phenomenon and that
      it was indeed time to either find another job, or in the utopian platonic point of view, gripe, complain and threaten until things changed and all were lifted from
      the darkness of the cave... (I sure hope I'm using my freshman college english references correctly...gaaads).

      --
      The government's view of the economy could be summed up in a few short phrases: If it moves, tax it. If it keeps moving,
    3. Re:What friggin planet is he from.... by leenks · · Score: 1

      You need to change jobs man ;-)

      I get an Aeron chair, a desk, LCD panel, and a PC running Windows 2000 with a locked down user account that can do almost nothing, and an 80MB email limit.

    4. Re:What friggin planet is he from.... by dukerobillard · · Score: 1

      More important than what planet he's from is "Is he hiring?"

    5. Re:What friggin planet is he from.... by xero314 · · Score: 1

      Yes he is hiring. He is always hiring. But got luck getting his attention. Joel's company hires what is truly the cream of the crop. No I have not been rejected by his company, but I know enough to know that I would have to put in more than a few months as an unpaid intern if I wanted to get my foot in that door.

  17. 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.

    1. Re:Not a black and white discussion.... by FerociousFerret · · Score: 1
      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.

      I work in QA. Next time you develop some code, could you give me a list of all the bugs you build into it so I can make sure I catch them all. Thanks.

    2. Re:Not a black and white discussion.... by Anonymous Coward · · Score: 1, Insightful

      He is talking about cost after it is out in the field.

      If *I* find it the cost is low.
      If *YOU* as a qa person finds it the cost is a bit higher as now there are probably 5 people involved (other than me and yourself).
      If a *CUSTOMER* finds it now there is not only those 5 people involved there are customers involved (usually about 2-5 people) plus support people (2-3 more people). Plus a negitive feeling from the customer.

      Cost grows QUITE large after it is in the field.

      I work in a place where I get called usually as a first resort as the support people 'were trained that way'. I get nothing done usually. I get 15-20 min chunks where I can do what I want. Not enough to get real work done...

    3. Re:Not a black and white discussion.... by Anonymous Coward · · Score: 0
      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.
      Let's be honest, here, shall we. QA and operations both tend to be staffed by glorified secretaries, and that's enough most of the time. You can't expect people capable of critical thinking and troubleshooting in those positions. If they had those skills, they'd be somewhere else. If the engineer -- wait, "engineer"? Bullshit. Programmer. If the programmer doesn't want to get bugged with production problems, then he can damn well build the system with adequate error reporting so that the dullards in operations can figure out what to do 90% of the time without calling him. Instead, he likely drops a cryptic message in a log file--at best--and expects that's okay. If that's the way he wants it, he can deal with the god damn calls.
    4. Re:Not a black and white discussion.... by FerociousFerret · · Score: 1

      He is talking about cost after it is out in the field.

      If *I* find it the cost is low.
      If *YOU* as a qa person finds it the cost is a bit higher as now there are probably 5 people involved (other than me and yourself).
      If a *CUSTOMER* finds it now there is not only those 5 people involved there are customers involved (usually about 2-5 people) plus support people (2-3 more people). Plus a negitive feeling from the customer.

      Cost grows QUITE large after it is in the field.

      I am not even sure it is worth replying to this, but I didn't say anything about COST and my comments was mostly tongue-in-cheek. I am very well aware of the exponentially growing cost aspect of when a defect is finally detected.

      But for a programmer to say something should have been caught by QA, well, all I have to say is you can't test in quality; you have to build it in. We are all human, so defects are to be expected, but the QA people aren't the ones who coded the defect in the first place, so a programmer shouldn't get all uppity when asked to fix code that they wrote. And they shouldn't get bent out of shape if QA missed a defect and it went to the field. We are all human, and the software development life cycle should be a team effort and not an adversarial relationship.

  18. 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 androidqueen · · Score: 2, Funny

      well, of all the . . . i can't work like this! i'm the *talent*!

      if anybody needs me, OR WANTS TO APOLOGIZE, i'll be in my trailer.

    2. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 2, Funny

      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.

      Why do I see Joel constantly talking about how disturbing it is to "context switch", when janitors 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 toilets.

      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 supply room, have to carry a plunger, 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 clean shit by system admins who can't be bothered to stick paper towels in the trash can?

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

      Fixed

    3. Re:Context switching, aka, incompetence by mcd7756 · · Score: 1

      One of the first things a smart developer learns to do is not to get the sysadmins mad. Otherwise, next thing you know, Windows 98 is installed on your computer and your Internet connection is through a 300 baud modem. I tend to be very friendly. Making offerings of trade show loot and small woodland creatures seems to help too.

      --
      Am I not destroying my enemies when I make friends of them? --Abraham Lincoln
    4. Re:Context switching, aka, incompetence by gdeciantis · · Score: 2, Insightful

      I actually work with Dmitri and his developer "Sarah". I can tell you that his team has pumped out more product than any other company that I have worked for and we don't have unlimited M&Ms or 30" LCDs, so I can relate to those comments. Also that comment about prima donnas. Pragmatic programmers take time before they start coding. Please, leave your anecdotal bullshit at the door. We are talking real life.

    5. 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.

    6. Re:Context switching, aka, incompetence by Gr8Apes · · Score: 2, Insightful

      There's a difference between fixing a system and coding, or at least coding at the level we're talking about. We're not talking about a 30m script to do something, we're talking man-years of effort generally on really large hard systems. The difference between fixing that DB and writing the DB software in the first place. To say that those are orders of magnitude difference in effort would be minimizing the differences.

      That's not to say that sysadmins don't have a lot on their plate. However, would you rather bug a programmer to load paper, or a sysadmin? I'd say neither, get the help desk tech to do it, much better use of all their time.

      --
      The cesspool just got a check and balance.
    7. Re:Context switching, aka, incompetence by mattwarden · · Score: 2, Funny

      Finally, a sysadmin with people skills!

    8. Re:Context switching, aka, incompetence by mattwarden · · Score: 1

      As a sysadmin, you are somewhere between a software developer and an office admin / secretary. Should you change the toner in the printer or should the office admin? Don't know, don't care. All I know is that has nothing to do with my job, and my boss would be pretty angry if he found out I was billing them software developer rates to change toner.

      You're a sysadmin. In case you forgot, that means you're supposed to administrate the system. (Since when was a printer not part of the network?) You are a support role. Come to terms with it.

    9. Re:Context switching, aka, incompetence by G-funk · · Score: 1, Funny

      Suck shit, that's why we're programmers and not IT :)

      --
      Send lawyers, guns, and money!
    10. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 2, Funny

      Sounds like somebody's got a case of the Mondays...

    11. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 2, 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?

      Because you're a sysadmin, not a programmer. Unlike the latter, you are not expected to be able to focus on just one project, nor is there any need to enable you to do so.

    12. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 0

      "So why not become a programmer?"

      Because in the end of the day it's terribly boooooooooring, when you can hack around every piece of hardware and software that come to your hands and make black magic out of it.

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

      Programming nowadays *is* easy, and mindbloggingly boring; that's why I changed into sysadmin.

    13. Re:Context switching, aka, incompetence by rossifer · · Score: 1
      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.
      But if most of the tasks are small service requests, then it's 100% appropriate to deal with plenty of context switches. If you're not context switching, you're not getting much done. That doesn't mean that context switches don't cost you attention and focus, only that when most of your tasks are less than an hour, the ability to get 10-15 valuable tasks done each day depends on your ability to context switch effectively.

      On the other hand, if you have someone trying to design a new network rollout to handle a corporate merger or to install into a new facility, and you're distracting them with "How do I log into Word?" service requests, you're doing something very, very wrong. Because networks are complex beasts, and you really want someone able to focus on any large problem involving your corporate network. That person shouldn't have to context switch effectively, because every distraction is a significant impediment to getting his real job done.

      Regards,
      Ross
    14. Re:Context switching, aka, incompetence by mattpalmer1086 · · Score: 2, Insightful

      I've been a sysadmin and a programmer. They are completely different jobs.

      Programmers get paid to create something new. "Context switching" (haven't heard it called that before, but I know exactly what is meant by it) is a real performance hit for programmers. This is because you are focussing on difficult, abstract problems, over lengthy periods of time, and you need momentum and no distraction. Interuptions to that effort set you back way more than you would think.

      Sysadmins get paid to make things work, and if you're lucky, make them work better. In my experience, being a sysadmin meant occasional bursts of intense effort (usually when things were going wrong), some very boring times (when everything just worked) and some rewarding times (when you figure out how to improve the setup in some way). Interruptions and a constant stream of new problems... well, it comes with the territory. Great job, but it's not nearly as abstract as programming.

      Only in the last few weeks I had to find some creative ways to get one of my developers out of the office entirely, as he was being bugged by so many other ("small") demands on his time he couldn't function on the main project anymore.

    15. Re:Context switching, aka, incompetence by miu · · Score: 2, Insightful

      I've done both jobs, part of being a sysadmin is being a fire-fighter. What you dismiss as programmers being prima donnas is simple division of labor. Here's a hint: if your job requires you to have a beeper then your job is to run around in constant interrupt mode.

      --

      [Set Cain on fire and steal his lute.]
    16. Re:Context switching, aka, incompetence by mpcooke3 · · Score: 1

      Back in the dark ages of software development programmers had to context switch and the switch costs businesses dearly in terms of wasted developer time. For example a small problem like an important client not being able to access a website could distract many developers for hours. It would start with a small networking issue before lunch then after lunch a client would phone up and tell you your website had given him a virus then another couple of problems happen and before you know it almost the entire team has wasted the entire week investigating internet routing problems, refilling printer toner, ordering new floppy disks and checking faulty DNS servers in client offices that were totally unrelated to the software they were suppose to be writing.

      One day the software developers got togethor in a big room with the business people and said "ENOUGH IS ENOUGH" there must be a better way. So they took all the jobs that the software developers didn't want to do (including supporting their own bugs) and wrote them in a big list and they tried to employ another developer to do JUST those jobs.

      Only it didn't work, every programmer they interviewed said "hang on a minute this is like my current job only with the programming removed and all the shit bits left - NO WAY am i doing that".

      So they took the job description and they changed the jobtitle from programmer and reduced the salary by 30% - and so the first sysadmin job was born.

    17. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 0

      Frankly, I think it's bad to expect sysadmins to context switch like that too. There is a singnificant performance hit. You shouldn't be expected to handle swapping between a dozen different tasks; after all, three solid hours to install an application and test it is going to work better and more reliably than five cumulative hours accumulated through a week.

      Ideally, you have a helpdesk or someone else that funnels incoming requests into a central pipe and only interrupts you for real emergencies. And a junior staffer that deals with empty printers.

    18. Re:Context switching, aka, incompetence by Achromatic1978 · · Score: 1
      I see a logical disconnect:

      Please, leave your anecdotal bullshit at the door.

      can tell you that his team has pumped out more product than any other company that I have worked for and we don't have unlimited M&Ms or 30" LCDs, so I can relate to those comments.
    19. Re:Context switching, aka, incompetence by cdwiegand · · Score: 1

      Um, I bill out network admin and programmer at the same rate. In my area (Downtown Denver), both jobs are paid very similarly for the 5-8 year experience range. Network administration is MUCH more difficult these days due to needing to know everything possible about security, proper design, and how to fit everything onto one network without getting any malware/virii/worms/hackers. Programmers, on the other hand, have Microsoft practically GIVING out code on how to do things, and makes a very nice IDE. I wish the network side of things had a nice IDE...

      --
      . Define sqrt(x) as something really evil like (x / rand()), and bury it deep. Watch your coworkers go nuts.
    20. Re:Context switching, aka, incompetence by ClosedSource · · Score: 1

      Network administration is very important work and should be well compenstated, but that doesn't change the fact that it is different from software development.

    21. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 0

      Programming nowadays *is* easy, and mindbloggingly boring; that's why I changed into sysadmin.

      You aparently wernt a very experienced programmer. The 1st year out of college is a breeze when all you are given is monkey tasks.

    22. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 0
      Um, I bill out network admin and programmer at the same rate. In my area (Downtown Denver), both jobs are paid very similarly for the 5-8 year experience range.
      Yippie.
      Network administration is MUCH more difficult these days due to needing to know everything possible about security, proper design, and how to fit everything onto one network without getting any malware/virii/worms/hackers.
      It may be much more difficult these days, but it's far, far easier to be a senior network admin than it is to be a senior software developer. Honestly, what percentage of network admins even have a four-year college degree? I'd be surprised if it's over 50%. It's a shmuck job.
    23. Re:Context switching, aka, incompetence by Anonymous Coward · · Score: 0

      "You aparently wernt a very experienced programmer"

      About six years full-time C++ programming, still I managed to reach architect level, yes, thank you. I can tell I burnt out out of boreness and from that point onwards I found myself more and more moving towards the sysadmin "mud". Of course, due to my experience, the only time I changed printer tonners or things like that was on my first year... back when a programmer. Currently I'm systems chief on a big consulting firm; I'm the one that have you programming on a non-privileged account and take fun out of changing firewall rules so you can't reach streaming audio (yes, I'm the sa boss, still I reserve to myself the funny things, and I'm quite a BOFH).

    24. Re:Context switching, aka, incompetence by JerryP · · Score: 1

      > spend an unexpected 2 hours out of your 8 hour workday

      If you'd actually read the FA (too much to ask, I know), you'd have realized that the 2 hours are the amount of time the manager requesting the emergency work estimated. You really believe that this is correct after everything is factored in?

      Also: your developers are working only 8 hours a day? Could you please give me the coordinates to your parallel universe?

    25. Re:Context switching, aka, incompetence by mattwarden · · Score: 1

      Who said anything about a programmer? I said software developer. The fact that you don't know the difference puts your comment in context pretty well.

    26. Re:Context switching, aka, incompetence by TechnoLust · · Score: 1

      Pansies. I AM a programmer. I context switch about 20 times a day. I have *THREE* major projects going on right now. Guess how I handle it? Multiple Desktops! Yeah, 1 for each project. (And don't complain that you are in a Windows environ, you can have multiple desktops in Windows.) Context switching costs ONLY the amount of time I'd spent on the current task. If this fictional girl has spent 2 weeks organizing her mind and hasn't put it to code yet, she needs to be fired. The most time I would lose with a context switch would be an hour, plus the time spend on the other project. If I've been working on a problem over an hour and haven't found an answer, I'm going to go ask for help from my team.

      --
      "Da ist ein Technölüst in mein Unterpanten!"
  19. 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.
    1. Re:Simple solution really ... by inKubus · · Score: 1

      All programming is maintenance programming sometimes. Especially when the business lacks core processes. A lot of times even new development will be redone 3-4 times just to satisfy everyone. And new software enevitable spurns inspiration in people, which means new processes which means new development. I prefer the evolutionary model, as in "What is the very least we can do right now?" and do it. Usually that means writing the "program" on paper for people to do. Say you have a paper file. It's not going to do you much good to have that in the software if people don't have a definite workflow. Of course, you can make software that will allow all special cases in workflow, but that takes months or years.

      --
      Cool! Amazing Toys.
  20. Harmful implication by VGR · · Score: 1
    Spolsky is pretty insightful on this one, but I don't think I like what he's implying here:

    Being able to do mentally difficult things like context switching makes our product better. This Is Why Programmers Get The Big Bucks.

    For sure, you sometimes need to incur the penalty of "context switching" when customer needs (or any important situation) requires it. But I read that part as suggesting that any programmer who's paid well should expect to be yanked around on a regular basis, putting out one fire after another, instead of being allowed to devote the attention to his/her primary job necessary to do it well.

    And I'm more than a little worried that managers will perceive Joel's article as an endorsement of such yanking.

    --
    The Internet is full. Go away.
    1. Re:Harmful implication by CoderDevo · · Score: 1
      And I'm more than a little worried that managers will perceive Joel's article as an endorsement of such yanking.

      My experience tells me that managers don't need any outside endorsements to feel entitled to yank one of their staff onto an urgent assignment. Besides, managers don't read Joel on Software. If they read anything, it is more likely the article at "Intelligent Enterprise" on A Primer on Metrics.

      I agree with Joel. Any professional should be able to manage their time and make themselves available for consultation on issues that only they are qualified to address.

      Scenario:
      A customer has just promoted an update of your product to their production environment and it is failing to authenticate users to Active Directory. Problem didn't exist in customer's Dev, IT or UAT environments. Customer's Domain Admins see no problem. Microsoft Support works the case and found no problem. Your Tier 1 and Tier 2 support determined that your product has been installed and configured correctly.

      Would you, as the programmer of the authentication component, prefer to:

      A. Let the dev team noob take a stab at it.

      B. Have the customer just wait until you have a free 3-4 hours sometime this or next week.

      C. Pause what you are doing to get to the bottom of this paying customer's problem - a problem which by now appears to be closely related to your piece of the code. Heck, you may even learn something useful, like how the ADS_SECURE_AUTHENTICATION flag you used on AdsOpenObject somehow worked in Windows 2000 when the username field was a distinguished name, but sometimes does not work with DN in Windows 2003 SP2. But hey, the noob could figure that out, right?

      You get paid big bucks to write software. Those big bucks ultimately come from customers. They also pay for the support of that software. On top of that, just think of all of the good karma you accumulate by personally supporting the code you wrote.

      Let me just say this again in a more direct fashion. Customers are paying money for you to create software for them. This is what you wanted! You have your dream job!

      Do right by your customers and you just may get to keep that job. (ed: What's second prize?)

  21. Context switching considered harmful by wsanders · · Score: 2, Interesting

    Pardon the rant, I'm having a cynical week this week.

    Used to be, there were generalists writing code. It was possible for one person to understand security, IO performance, database design. Not any more. Now, projects, even individual applications, are too complex to be understood by one person. This forces specialization. Back in the day, system administrators were often the in house generalists, accepted as relatively unproductive coders, but peers in the architecture process.

    Nowadays system administrators are rarely asked to help in the application architecture process, most apps are rushed into production with enough crap in them so that we sysadmins are fully occupied devising clever kludges to work around bugs and security holes in already-deployed code. It's a living.

    --
    Give a man a fish and you have fed him for today. Teach a man to fish, and he'll say "WHERE'S MY FISH, YOU IDIOT?"
  22. Marshall, this is your boss... by Anonymous Coward · · Score: 0

    Marshall, that chair cost me $20 at the swap meet. please meet me in my office in 5 minutes so we can discuss your problem appreciating my frugal nature.

    1. Re:Marshall, this is your boss... by hilltx · · Score: 1

      thanks for the chuckle! I'll bring it in pieces and beat you over the head with it so that my resignation letter sticks to the top of your head.... maybe this is a potential use for the easy button....

      --
      The government's view of the economy could be summed up in a few short phrases: If it moves, tax it. If it keeps moving,
  23. Good, but not good enough... by sorak · · Score: 1

    It sounds like his criticism is that agile methodologies do not do enough to permit flexibility among the developers. The problem is that the waterfall model, or other traditional methodologies are even more rigid. Most of them delay the maintenence phase until either the end of the software life-cycle or until a team can be organized to tackle the issue, and are based on the idea that a small problem be fixed with a well-planned overhaul, as opposed to a minor tweak. Which do you think would be more likely to provide an emergency fix rapidly?

    The problem is that he didn't point out anything that suceeds where agile methodologies fail.

  24. Reply from original author by gatesvp · · Score: 1
    1. Re:Reply from original author by An+Onerous+Coward · · Score: 1
      I admit that the point Joel is making isn't too different. Yes: look at the costs and the benefits. But agile isn't quite about instantaneous responsiveness. That's a red herring and I'm suprised that Joel threw it's stinky carcass into the discussion. Agile is also about balancing that responsiveness with the overall view of value for the team and the organization. The tool for doing that is the prioritized list of work, not the email message from Sales Guy to Sarah.
      I think Joel just had the hammer brought down on him. I usually like Joel, but I think he lost this round.
      --

      You want the truthiness? You can't handle the truthiness!

    2. Re:Reply from original author by Anonymous Coward · · Score: 0

      His response presents a false decision of having only two options: 1) Stay the course; 2) Cancel the iteration. Inane. That assumes strict adherence to a process which is NOT agile in spirit or practice.

      This entire scenario boils down to managing priorities and planning. By following a consistent methodology you should be better able to quickly assess the impact of such a customer request based on previous experience and existing plans.

      An agile process will accomodate the change but will make it clear to everyone what the likely impact is on the deliverables expected from that iteration.

      I'm unimpressed with either Joel's or Dimitri's "articles" and assessments. They don't seem very insightful or astute.

  25. more common sense; less deductive logic by 1iar_parad0x · · Score: 1

    They're trying to solve management problems with a development methodology. In other words, let's take all the common sense (and politicking) out of project management and reduce it to a set of mechanical rules which are to be interpreted like an axiomatic system. It sounds like a good idea but it just won't cut it in the real world. The real world phenomena of good project management is so complex it can't be described by a simple set of rules. Frankly, what all of these Agile/XP/Scrum/RUP/supervoodoo methodology arguments have been about is that software engineering project management is as "COMPLEX" as software engineering. Perhaps even more so. It's all about problem solving. The problem it's rarely done right. Motivating people, figuring out how they work, and keeping them productive is hard work. Ironically, if you can intelligently have an argument about the finer points of Agile methodologies, you're probably not the problem. It's the managers who give 'peanut butter' manifestos I'm worried about.

    --
    What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
  26. What feud? by Generic+Player · · Score: 1

    Joel made the obvious and correct statements that ruby is slow and has no unicode support, and that rails is immature and has not scaled well for alot of people. DHH cried FUD like he always does. DHH is always offended by everyone and always crying about everything because he has such a huge emotional attachment to rails. Its ironic since he spends so much time spreading FUD about java himself.

    1. Re:What feud? by Watts+Martin · · Score: 2, Insightful

      I believe DHH cried "missing the point," which isn't that inaccurate.

      There are a lot of valid complaints about Ruby's speed (although Rails can do pretty intelligent caching); I'm not aware of anyone really attempting to push Rails' scalability to the level that Java can do. I'd disagree with the description of DHH's rants as "FUD," though, by and large. His response to Joel's critique of Rails was that, basically, "I don't think it will scale!" is in a certain sense always FUD -- unless you know of a system out there guaranteed to have no bottlenecks that will show up if its usage increases by an order of magnitude.

      Why did DHH pick on Java (I use the past tense because I haven't seen much of this recently)? Because Java people were the first out of the woodwork dismissing Rails. The funny thing is, when you look at some of the biggest, busiest sites on the net -- MySpace, Yahoo, Google, for that matter Slashdot -- while you're not seeing Rails, you're not seeing Java, either. Rails has the excuse of being "immature"; Java doesn't get cut the same level of slack. I'd suggest that the reason has less to do with functionality and "scalability" as it does with simple maintainability. And that's a lot of what attracts people to Rails in the first place. It's not FUD to say that Java is a beast to work with on many levels. It's an opinion and it may not be one you share, but it's not one that's particularly unique to 37Signals developers.

      There's a quote that appeared on Daring Fireball today from a golf instruction book: "As for your grip pressure, keep it light. Arnold Palmer likes to grip the club tightly, but you are not Arnold Palmer." In a lot of ways, that's what most of of the Rails "message" boils down to. Rails may not be appropriate for Google, but you are not building Google. (The corollary is that if you are building Google with Rails, even metaphorically, you'll find ways to address those issues.)

    2. Re:What feud? by Generic+Player · · Score: 1

      "I believe DHH cried "missing the point," which isn't that inaccurate."

      No, he cried FUD, like he always does. Anything bad anyone ever has to say about rails, or even just saying something like "I don't really care for rails, catalyst is alot nicer" becomes FUD to DHH.

      "Why did DHH pick on Java (I use the past tense because I haven't seen much of this recently)? Because Java people were the first out of the woodwork dismissing Rails."

      No, DHH started out right off the bat trashing java in order to get attention for rails. Its hypocritical for him to use FUD against java/j2ee as a marketing tool, and then cry about other people "spreading FUD" about rails, especially when its not usually FUD at all.

      "It's not FUD to say that Java is a beast to work with on many levels. It's an opinion and it may not be one you share"

      That's not what he says though. He makes nonsense claims like "rails lets you do the same thing 10 times faster than using java", and "people only use java out of fear". That's FUD. And I do happen to share the opinion that java isn't much fun to work with.

      I don't care for java personally, but to pretend DHH hasn't spent as much time spreading FUD about java as he has whining about other people's valid and legitimate complaints about rails is just silly.

      DHH has always acted very childish, and while I can certainly understand how easy it is to get defensive about your work, he really needs to grow up and learn how to deal with criticism like an adult. Its not hard to see why so many rails alternatives have far surpassed rails, software doesn't improve when the author dismisses all criticism as FUD.

    3. Re:What feud? by Anonymous Coward · · Score: 0

      shut your face you cunt faced whore ass cunt bitch.

  27. interruption != agile by micromuncher · · Score: 1

    Being adaptive doesn't mean responding too all interruptions. Remember, one of the key points of Agile is prioritization. You break down the scope so you can focus... not deviate. If interruption messes up your sprint; its because your prioritization (oh no, change control) is broken.

    By the by, agile = cyclical development = waterfall. :-)

    --
    /\/\icro/\/\uncher
  28. 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.

  29. The real question is... by schmu_20mol · · Score: 1

    you call this an article?!

    --
    "Nae Kin! Nae Quin! Nae laird! Nae master! We willna be fooled again!"
  30. Defining Agile by dghcasp · · Score: 1

    The problem is the word: "Agile." It's a loaded word that means different things.

    In terms of "Agile Software Development," it means able to react to customer changes "quickly" and without discarding a large ammount of work. Now "quickly" is another loaded word. In the example article, "quickly" basically seems to mean "after the end of a 2-week development cycle, and before the next one."

    Now, in TFA, they're asked to do something that may cause a customer to purchase. This request comes in during a 2-week cycle.

    The proper "Agile Software Development" response is "We'll tell you if we can do it in 2 weeks." The criticism is "that's not very agile." Or, "two-week-agile" vs. "right-now-agile."

    There are several possible reactions to this request:

    1. You have to wait 2 weeks for it.
    2. The programmer(s) has to work overtime
    3. We have to postpone X in our currently scheduled work
    4. "Screw you, you can't disturb our process."

    Which one you choose depends on multiple factors; two factors are "What is the net revenue impact of this change" and "What is the marginal increase in the probability of the sale?"

    If Marginal.Pr[sale] * units > abs (revenue impact lost due to throwing dev cycle), the do it. If not, make them wait two weeks.

    Of course, finding values to plug into those equasions is not easy. Believe it or not, management is difficult.

    My PERSONAL solution to this, assuming the sale is worth it, is to see if the customer will accept "feature available within 30 days after sale, or you get a 25% refund." Puts pressure on the customer to commit, and gives you time to develop it.

  31. Description misleading by Aron+S-T · · Score: 2, Insightful

    There is no such thing as Agile software. And it is completely ignorant to say "we use Agile". Agile is just an umbrella term for a whole bunch of software development methods. You can say we use Extreme Programming or Scrum or whatever.

    In any case, the discussion between Joel and Dmitri has little or no relationship to the relative merits of Agile methods. Dmitri is just some relatively unknown consultant/guru and his individual opinion is just that. In fact, Joel didn't seem to be dissing Agile methods in general, at least not the way I read it. He is dissing Dmitri's doctrinaire approach.

    Moreover, the whole discussion is far from illuminating since it is based on a totally hypothetical example. Give me a real world and specific example where we can get a concrete view of what the real priorities and politics of the situation are, and then we can form an opinion on how to behave. Dmitri in his response to Joel talks about
    "trust." But if the customer involved is critical to the company, you can be sure as hell that the project manager would (justifiably) get his ass kicked if he ignored the sales request and got all touchy feely about "trust." On the other hand if this is some nundik sales person then it probably can and should be managed by the project manager.

    Ultimately, Agile is all about human-centric. As such, you need to understand that organizational politics and behavior can be just as important to the success of a software project as the programming language you choose. Both Joel and Dmitri seem to be ignoring that.

  32. Reposting my comment on Joel's forums by samael · · Score: 2, Insightful

    He's not saying "We won't do it." - he's saying "The coder should carry on with their job until a proper decision is made as to whether the context switch is worth it." - he clearly says that the decision as to whether to change what the developer is doing is passed over to the Project Manager to make.

    And that sounds right to me. You don't context switch based on getting an email, and you make sure that project managers understand the implications of what they're asking for before you start working on it.

  33. Opportunity Cost by MagikSlinger · · Score: 2, Informative

    For those of us with even a little economics background recognizes Joel's post as a discussion on opportunity cost.

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
  34. Not much meat and no potatoes by hey! · · Score: 1

    Sure, if you let the inmates run the asylum, you get some ... strange decisions.

    The bottom line is that mindless adherence to any rule, even a rule that is supposed to ensure you are more flexible, is bound to make you inflexible.

    If you walk in the rain without an umbrella, you will experience wetness. If you tolerate obstructionism, you will experience obstructions.

    By way of demonstration I was reading recently about the Privacy Act, a US law which supposedly limits what Federal agencies can do with personal data. The number one reason for citing the Privacy Act these days is for an agency to avoid doing something it doesn't want to do. on the other hand, if it really wants to do something that is illegal under the Privacy Act, it just hires a private contractor to do it.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  35. Quick tip for interviews by Doctor+Memory · · Score: 1

    Look around when you're being shown around your prospective work area. If the printer, copier or fax machine is blinking that it needs paper/toner/reset, you're not walking around in a "high-tech" environment. Developers who can't figure out how to clear a paper jam probably aren't going to be much help when their code won't deploy properly in production, either.

    Real developers know how to reset the printer, because they had to do it a couple hundred times when they were trying to figure out how to encode and download the Tengwar fonts to it...

    --
    Just junk food for thought...
    1. Re:Quick tip for interviews by ClosedSource · · Score: 1

      Actually, the skills required for clearing a paper jam have little in common with the skills required for software development. BTW, Xerox use to flag paper jams when the program crashed. So now you know why you can't always find the paper to clear.

    2. Re:Quick tip for interviews by Doctor+Memory · · Score: 1
      Actually, the skills required for clearing a paper jam have little in common with the skills required for software development.

      Actually, the ability to look into the inner workings of a failed system and determine the cause of failure and effect a solution are pretty primary to software development (as opposed to writing code, which is only a part of SD). Unless you want to be a junior coder forever, so you can ignore integration and deployment issues ("If the architect had done his job right, this wouldn't be a problem, so don't expect ME to fix it!").
      So now you know why you can't always find the paper to clear.

      The clearing of the paper is incidental, the real issue is making the machine usable again. If there's no paper jammed, you still have to flip open all the covers to let the controller know to re-check the sensors. Our lame fax/copier here seems to have two states: sleep and jammed. Usually all you have to do is flip the top cover open and closed and it resets itself, but as far as I can tell I'm the only one here who's figured that out...
      --
      Just junk food for thought...
  36. retarded point... by Anonymous Coward · · Score: 0

    let me tell you a story of a marketting team that went and harassed developers every 15 minutes for a new flavor of farting bunny... ... anyway, there's a good reason that change requests are prioritized.

  37. Your waterfall is fucking fucked. by Anonymous Coward · · Score: 0

    By the by, agile = cyclical development = waterfall.

    What the fuck kind of waterfall are you thinking of? Waterfalls start at the top, and continually move in one direction: downwards. There is no cycling whatsoever. They're unidirectional.

  38. If you're switching, someone messed up. by Enahs · · Score: 1

    If you're constantly switching context, someone messed up. Big time.

    I work in a totally different business, a newspaper office to be exact, and sometimes it seems like all I do is switch context. And it's always because someone fucked up. Every time. Maybe someone forgot to tell our department that there was a publication going to print today. Or maybe someone forgot to turn in the paperwork for an ad that runs tomorrow and they need the proof right now. Or maybe they're just idiots and have to explain everything verbally the moment they think of it (think mental diarrhea).

    To my mind, yes, I should be able to switch context, and do so often. However, I'm still more than happy to point out that someone fucked up and that needs to be addressed so it stops happening.

    There must be a middle ground, and once you reach it (as we have very nearly done here) things will be much happier. Maybe not as smooth as you'd like, and maybe the bean counters and paper pushers won't like the process being so chaotic, but once you reach that middle ground, things aren't exactly bliss, but they're a lot more fun. :-)

    So how do you maintain context when things are sheer chaos, anyway? I dunno; tell me when you get it figured out. *wink* Seriously, if you're an OS X user, at the very least keep Stickies running and make a note about what you were doing before you switch. Or write it down on a piece of paper. Sure, use a 3x5 index card with your neato space pen if you think Merlin Mann is God. Or if you're an Emacs nerd, try keeping a todo list via org-mode. Whatever you do, do something to maintain some sanity.

    And if you're not a manager, bug your manager to bug their managers to start getting things organized, make salespeople be polite about butting in, and so on; we're not talking about drastic change here (unless, like here, your salespeople have the manners and attention span of five-year-olds.)

    --
    Stating on Slashdot that I like cheese since 1997.
  39. Both right, but Joel missed some of the point by Todd+Knarr · · Score: 0

    Joel's right, software developers should be able to context-switch. But he misses the point of Dmitri's article. Pulling Sarah off the project she's on will have costs, not just in the context-switch overhead but in the disruption pulling her off will cause in projects already scheduled and in progress. The project manager wants the benefits of having her work on the customer request, but is he going to also accept responsibility for those costs? I've been in the situation Dmitri describes, and all too often the answer is a resounding "No.". Dmitri seems to simply be suggesting that those costs have to be taken into consideration.

  40. It's not the methodology stupid ... by Maddog787 · · Score: 1

    The process is ONLY as good as the people who use them. You can take a solid methodology in an average, low motivated group and be completely unsuccessful. In contrast, you can take highly motivated, average group with a next to useless methodology and make it a complete success! So what's the real difference?

  41. There is no such thing as "one-off" by msobkow · · Score: 1
    A one-off app for a critical issue today

    This is the most common mistake people make. If you need to do it today, you will need to do it again in the future.

    The business owner who asked for the one-off will want changes. Or it will turn out to be a good idea that upper management wants to make part of the monthly, weekly, or daily reports.

    The "one-off" application is an excuse to kick something out the door without design, documentation, or maintainability concerns. I would hazard a guess that fully a third of production systems are comprised of "one-off" code that was deemed too important to let go.

    No matter how much of a hurry you're in, remember that someone (hopefully you) will have to step into that steaming "one-off" pile you're creating today...

    --
    I do not fail; I succeed at finding out what does not work.
  42. 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."

    1. Re:Sounded nice by kiran_n · · Score: 1

      Every situation is different. There are reasons why priorities need to be changed and then again there are reasons why they should not be.

      Agile allows you to deal with this on a more structured note. If you have really good people and really good project managers - you will get your work done - but if you don't - you need methodologies, - you need structure and you need to follow a certain set of rules/guidelines. If you don't - you rely on people being heroes and pulling stuff off (as in miracles).

      Whether you need to be interrupted just so much depends on the scenario (as in there is an earthquake and you need to stop programming now Vs "can you get this photocopied, bound and at my desk in two hours").

      I took over this project (maintenance kind of work) that was considered to be in the doldrums. The real reason - priority shifts happening all the time. There were bugs coming in every day, product managers asking for features to be tried out in patch releases, builds getting broken because someone somewhere tried something new.. and so on. I just had to apply some basic common sense - focus the team in one direction and handle the priority shifts- learning when to say no and when to change direction....

    2. Re:Sounded nice by chthon · · Score: 1

      I agree with you here, since Joel also has a lot of articles about testing.

    3. Re:Sounded nice by Anonymous Coward · · Score: 0

      I agree completely,

      Agile isnt about being flexible. Being flexible is when you have no methodology and just do whatever people want that day. Unfortunately this practice produces rubbish code and rubbish products.

      Agile methodologies are a half way house bettween no mehtodology and waterfall ones, basicaly they boil down to: OK you can interupt me, but only once a month.

      The philosophy being that you improve the quality of the product while still retaining an amount of flexiblity. The message to management is 'try not to f*ck up more than once a month'

  43. Re:Captain Obvious and his sidekick, Common Sense by Phantasiere · · Score: 1

    The parent's comment is so true it's scary. I think I've had the same conversation a half dozen times in the last month.

  44. Re:Captain Obvious and his sidekick, Common Sense by Anonymous Coward · · Score: 1, Insightful

    You should learn to communicate with people in terms they can understand. There is nothing to be gained fro being right all the time. He asked how long it will take to develop. You gave him some irellevant detail that he doesn't care about.

  45. We have a saying where I work. by LoveMuscle · · Score: 1

    It's short and to the point...

    "Agile isn't.."

  46. Obligatory (Python) reference? by Smuffe · · Score: 1

    A 17 inch Dell CRT?

    You lucky, lucky bastard!

  47. Re:Captain Obvious and his sidekick, Common Sense by Anonymous Coward · · Score: 0

    Ah, so any developer should know what every other developer is doing so that he can tell management when (someone) can create that feature?

    Isn't this WHY we have managers? I mean this quite seriously - if we have to do their job (one of the hard parts of managing, IMHO, even though laying off people is no walk in the park either) why on Earth do they work there?

    Of course, we can always go back to the natural language, zero terminology-based talking I guess, but it is rather clumsy:
    "How long does take to make?"
    "5 full working days for one programmer."
    "Can you start tomorrow?"
    "No, I am doing X and Z. Meanwhile I have to do Y. Call back in three weeks."
    "Unacceptable! You're... you're... hey, this is my red stabler "

  48. Re:Captain Obvious and his sidekick, Common Sense by CrazyTalk · · Score: 1

    Where I work, the response to "We'll be shut down the 24th and 25th" would be "Well, then we will have to work 12 hour days and weekends then, because the deadline cannot be changed"

  49. Re:The real problem with Agile... by Mycroft_514 · · Score: 1

    You may gain productivity at the developer level, but Agile DESTROYS productivity at the DBA and system programmer levels.

    We are prototyping some agile development. So far, I have had to REDO a pair of tables 8 TIMES because they keep changing their mind on the definitions. And the project isn't done yet. And when I say redo, I mean drop and start from scratch.

    My time (I'm the one DA in the shop and the MVS DB2 DBA)costs the company more than the time of the developer who keeps changing their mind, and it keeps me from helping the other developers. If this evers goes thru the whole shop we will ahve to hire 5 more DBAs, jsut to keep up.

  50. Well, let's see... by Bob9113 · · Score: 1

    Following is the Agile 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.


    Hmmmm... How does that relate to the article. First, consider the closing line: It says that while placing more emphasis on the left will increase productivity, you should consider both sides of the equation. OK, Joel agrees with that.

    Now consider this: Responding to change is more important than following a plan. Doesn't that sound like the conclusion in Joel's article?

    Agile is precisely what, in this case, Joel is arguing for.

  51. Your pattern suggests "mechanical thinking" by ClosedSource · · Score: 1

    "Actually, the ability to look into the inner workings of a failed system and determine the cause of failure and effect a solution are pretty primary to software development (as opposed to writing code, which is only a part of SD). "

    True, but the "inner workings" of software have little in common with those of a copier. That's why copier repair experience isn't considered a qualification for software development.

    "Unless you want to be a junior coder forever, so you can ignore integration and deployment issues"

    I love this one. I guess you forgot to say "Unless one wants". Or did you mean to imply that that I was a "junior coder" on the grounds that I that I must be if I disagree with someone as knowledgeable as you think you are.

    1. Re:Your pattern suggests "mechanical thinking" by Doctor+Memory · · Score: 1
      the "inner workings" of software have little in common with those of a copier
      Gee, y'think? I didn't say that learning copier repair would make you a better programmer, I said that the ability to effectively analyze unfamiliar systems was an important skill for developers to have.

      I guess you forgot to say "Unless one wants"
      Nope, I was using the generic you. Using "one" as a pronoun always sounds stilted and artificial to me, but whatever floats your boat (sorry, "floats one's boat").

      I apologize if you felt emasculated, I didn't mean to sound scornful of junior coders. I've just worked with too many that thought they were hot shit until their code failed the first time it left their development sandbox. Then you find out "Oh, I'm using a feature from the experimental branch of the database driver, you have to use this version of the library". Much quick education about using stable release versions ensues. But I'm sure you know all this — after all, you're a hot-shit developer, and I'm just a lowly copier repairman...
      --
      Just junk food for thought...
    2. Re:Your pattern suggests "mechanical thinking" by ClosedSource · · Score: 1

      Gotta love that revisionist history:

      "Developers who can't figure out how to clear a paper jam probably aren't going to be much help when their code won't deploy properly in production, either"

      Remember the discussion wasn't about "important skills for developers", it was about the difference between the role of an Admin and a developer. It was you who first suggested a link between a copier and development skills, which you're now backing away from.

    3. Re:Your pattern suggests "mechanical thinking" by Doctor+Memory · · Score: 1
      Remember the discussion wasn't about "important skills for developers", it was about the difference between the role of an Admin and a developer
      No, the side discussion I started was about developer skills (or at least an indicator thereof). I thought the changed subject was clearly indicative; clearly, it was not (to everyone). I was just offering an observation triggered by the "programmers need to stop behaving like prima donnas" comment in the parent. In the future, I'll be sure to flag things more clearly. To tie this in with the parent thread, I'll offer up the additional observation that one trait that good developers and good admins share is the itch to fix a broken system, whether it's a borked XML schema or a misconfigured router. Breathing easier now?

      It was you who first suggested a link between a copier and development skills, which you're now backing away from.
      Nope, you're still missing the point. You can't seem to make the connection that clearing paper jams is an application of the ability to perform failure analysis. If you can't analyze the failure mode of a fairly simple system, how well are you going to be able to perform a failure analysis on a complex one? And again, the drive to fix an obviously broken system should spur the failure analysis in the first place.

      Gotta love that revisionist history
      The only revision necessary was to simplify the explanation for the target audience. I'll try to be less subtle in the future.
      --
      Just junk food for thought...
    4. Re:Your pattern suggests "mechanical thinking" by ClosedSource · · Score: 1

      "To tie this in with the parent thread, I'll offer up the additional observation that one trait that good developers and good admins share is the itch to fix a broken system, whether it's a borked XML schema or a misconfigured router."

      Good developers don't necessarily have an "itch to fix a broken system" but to design a system that isn't broken.

      "You can't seem to make the connection that clearing paper jams is an application of the ability to perform failure analysis. If you can't analyze the failure mode of a fairly simple system, how well are you going to be able to perform a failure analysis on a complex one?"

      There are all kinds of systems that can be analyzed: software systems, electrical systems, mechanical systems, biological systems etc. The ability to perform any particular one doesn't increase the probablity of being able to do the others and being unable to do one doesn't preclude being able to do the others. This is a common truth easy to observe in the real world (e.g. the brilliant doctor who can't operate a computer). If you don't believe it, fine.

  52. Re:Your waterfall is ... by micromuncher · · Score: 1

    Aside from your brilliant use of language... more often than not applied waterfall models DO iterate. The ideal scenario is that it is linear.

    http://www.waterfall2006.com/

    Sign up now, you need help.

    --
    /\/\icro/\/\uncher
  53. Re:The real problem with Agile... by Anonymous Coward · · Score: 0

    How hard is it to redo a pair of tables?

    Are you prematurely optimizing them (doing lots of unwarranted extra work)?

    Do you need to learn how to use your tools better in some other way--because you now know that you'll need to make lots of changes? E.g. is there some script you should write?

    Why are the programmers dragging you into this? Why aren't they doing their own DBA stuff. Once they get something that does what the customer wants, maybe then they should call you in to work your magic on it and make it production quality.

    Sounds like time to push back a little.

    Good luck!

  54. Re:The real problem with Agile... by angel'o'sphere · · Score: 1

    So far, I have had to REDO a pair of tables 8 TIMES because they keep changing their mind on the definitions.
    So, taking you literally, they changed their defiitions so often ... and you had to redo a PAIR ... a pair is *2*, yes? Two tables?

    So, I don't really get what is so hard and expensive in redoing 2 tables ... but if that is the case, then you should start getting agile and lift your fat ass and report that this is a problem.

    The first rule of agility is: there is no the developers and us the DBAs. There is only the team. You belong to that team as they do. And when you are more expensive than they are your team wastes resources and is far from optimum.

    So the next step is just to move this one step further. If they indeed waste time like hell, then they might be agile, but not mature, so someone has to figure why they waste so much time, why they always redo your 2 tables.

    And finally: would it better to design a braindead data structure, and keep the tables you design for it, and lose realy big money next year, instead of realizing its wrong and fixing it? A change of mind is not always a bad thing.

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  55. Probably to old now to matter, by Anonymous Coward · · Score: 0

    but this link may be informative:

    Good Agile, Bad Agile