Slashdot Mirror


Using Agile Methodologies To Make Games?

simoniker writes "Using Agile methodologies for programming is a concept that's been around for a while now, but some firms are now applying the concept to video game development." There has been a lot of talk lately about what the 'next big thing' in development will be. Could this be it? Or is this just another step along the way? From the article: "Agile puts the emphasis on producing demonstrable iterations of a game almost immediately into production, creating prioritized vertical slices that iterate on the most critical elements and features. The method also puts great emphasis on the organization of teams and the relationships therein, as well as the cycles in which teams must plan and carry out their project objectives."

71 of 236 comments (clear)

  1. The Bane of My Existence by eldavojohn · · Score: 5, Insightful
    When I was in college, I was 'taught' how to develop software.

    And so started a cycle of hatred towards methodologies about how to be productive in application development.

    To me, the wild wild web is still here. I still get my kicks from coding without set in stone documentation and I still hate schedules.

    I've always had the view that every project was a wild animal. Worse yet, it's a wild animal in sheep's clothing. And you approach the sheep with a shepherd's hook. When the veil is lifted and you see man eating marsupial with alligator teeth and a scorpion's tail, you have no choice but to throw the shepherd's hook at them and give it all you've got.

    And this is how I approach managing a development project. You remember prior projects and throw together a bag of tools that have worked before and then you set to taming the beast. If you tell yourself "Waterfall works every time" then you're just going to find yourself with a shepherd's hook facing a lion or a bear.

    Instead, you learn to adapt to every situation and that's the important thing. The rules are few and loose. The customer has the power to destroy everything and you have to deal with it. The best development is done on the fly with just enough documentation to convey the big idea of what's going on and keep everyone on that page. Given real life schedules and timed deadlines, there is such a thing as too much documentation.

    Agile development is better in that it allows you more play and doesn't inhibit spur of the moment innovation. I think some of my most demoralizing moments have been when I realized some great new possibility for a project only to have my manager tell me that so much documentation would have to change that "maybe we'll put that in next year's scope." I find this to be ridiculous.

    What was happening was people were starting to assume that waterfall was the silver bullet for project management. "What kind of project is it?" "I don't care, we're using the waterfall." And the big problem is that the waterfall is only considered 'adaptable' if you're ok with reworking everything from step one. Is this really necessary for every project though?

    Another new thing we have these days is a "framework" that fits a specific type of problem well. You can throw these together on the fly and have very little documentation because the framework provides a well known implementation strategy (see Spring's MVC).

    It is my opinion that using an incremental deliverable approach with frequent customer meetings and executive power at any point in the project is the most successful strategy. The "rules" you have to adhere to are up to you and should be purely a case by case basis.

    There has been a lot of talk lately about what the 'next big thing' in development will be.
    Why do we constantly look for the "next big thing" when the "big thing" is simply experience?
    --
    My work here is dung.
    1. Re:The Bane of My Existence by mkw87 · · Score: 4, Funny
      when the "big thing" is simply experience

      Tell that to my fiance!

      --
      Arguing with an engineer is like wrestling a pig in mud. Soon, you realize the pig is dirty, and he likes it.
    2. Re:The Bane of My Existence by Anonymous+Brave+Guy · · Score: 4, Insightful

      I, too, was taught about software engineering processes during my CompSci days. But in my case, the waterfall model was the textbook example of how not to do things...

      Of course, you can take things too far that other way as well. Being too rough and ready -- something encouraged by an "agile" approach -- may get you best results locally, but what matters is getting optimal results globally across the lifetime of the project and all its features. Just as the old hands look at managers trying in vain to match reality to a waterfall model and smile, so they look at young enthusiasts diving in with little to no big picture planning and wait for things to fall apart.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:The Bane of My Existence by cp.tar · · Score: 5, Insightful
      Why do we constantly look for the "next big thing" when the "big thing" is simply experience?

      Because managers don't trust engineers.

      They don't understand what's going on, and yet they have to manage it.
      So they hear about a new methodology, drink it up like a common sucker drinks up Scientology, and turn it into a religion.

      Everything you don't understand you fear, and then you turn it into a religion.
      All too common behaviour, all throughout our history.

      If they tried to understand it all instad, they probably wouldn't be managers; they'd be engineers.

      Most people don't care about how things work; they only want them to work and to work always.

      Magic-minded lot, all of them.

      --
      Ignore this signature. By order.
    4. Re:The Bane of My Existence by Anonymous Coward · · Score: 2, Insightful

      You're right. And there's another reason, because many engineers have tunnel vision and cannot grasp that each project has dimensions involving a) the customer, b) money, c) limited time, d) getting it done now instead of wanking around building the Worlds Most Beautiful Piece of Software.

      Every system is broken. Some systems are less broken than others. A new system always has a promise of the better, until we've used it and know for sure.

    5. Re:The Bane of My Existence by cp.tar · · Score: 2, Insightful

      You can have it done cheap, fast or well.

      Managers mostly want cheap and fast. Engineers want well.
      And generally, you can only have one of the three.

      --
      Ignore this signature. By order.
    6. Re:The Bane of My Existence by Jerf · · Score: 3, Interesting

      Why do we constantly look for the "next big thing" when the "big thing" is simply experience?

      To know how important experience is, one of two things needs to be true: You either need to have it, or you need to be someone who is still interested in "wisdom" in this knowledge-centric era, and be willing to listen to those who have experience, and pick the correct people who say experience is important and believe them*.

      Both are fairly rare.

      The rest follows from "rarity" in the obvious manner.

      (*: I believe wisdom is underrated nowadays, but I won't pretend that the problem of figuring out who to listen to is not itself hard.)

      The other thing is that there are next big things, but I suspect we are slowly but surely running out of "next big things" that will be comprehensible to more than, say, 25% of practicing programmers. Switch to Ruby, learn how to really use it, and add a good automated testing philosophy in, and you've gone a long ways towards extracting all the additional productivity you can get out of your environment without a major upheaval. For instance, I think it's reasonably likely (although not certain) that functional programming is finally going to come out as a reasonable paradigm over the next 10 years as it will be best able to take advantage of multi-core systems without completely upheaving how you write programs, but we're going to lose a lot of programmers on that transition, because it just doesn't click for some people. And that's a major change.

    7. Re:The Bane of My Existence by 99BottlesOfBeerInMyF · · Score: 2, Funny

      I've always had the view that every project was a wild animal. Worse yet, it's a wild animal in sheep's clothing. And you approach the sheep with a shepherd's hook. When the veil is lifted and you see man eating marsupial with alligator teeth and a scorpion's tail, you have no choice but to throw the shepherd's hook at them and give it all you've got.

      I agree. You can code much better on LSD.

    8. Re:The Bane of My Existence by jekewa · · Score: 2, Insightful

      They're not mutually exclusive. Instead, think of them as the corners of a triangle. You call them "cheap," "fast," and "well" (because it makes better sense gramatically) but call them "cost," "speed," and "quality" respectively.

      The general, and arguable, assumption is that customers are tied to cost, managers are tied to speed, and developers to quality. Usually the trouble comes from the priorty of each group. Customers tend to lean towards cost, speed, and quality. Managers tend towards speed, quality, and cost. Developers tend to go for quality, speed, cost.

      This also aligns with the two-sided client-vendor cost equation; customers want to pay less and vendors want to make more.

      Most people act as though they can only choose points only along the sides of the triangles, but this isn't really true. Sometimes it's just harder to recognize compromise to the gradients in the middle of the triangle. With this model, if you're on the line between "cost" and "speed", it appears as though you've completely sacrificed "quality."

      In reality you pick from anywhere inside the triangle, including smack on one of the corners. You sacrifice as you move away from the corners, so in the middle you have to compromise all three cost, quality, and speed.

      This is an often unrealized (and more often unrealistic) compromise.

      --
      End the FUD
  2. Most aggravating by neonprimetime · · Score: 3, Insightful

    because of the iterative process of Scrum and the short work cycles of Sprints, redirecting a project rarely results in large volumes of wasted work.

    I like this ... cause that last pair of words ... wasted work ... seems to hit my teams especially hard quite often right now. We'll finish LARGE tasks, perhaps bundle multiple items together into one large release (cause this is how management wants it) ... and by the time it gets to UAT testing many development hours have been spent ... and then the UAT tester will turn around and say ... nope ... don't need/want that ... and thus all those development hours are wasted. I'd love to get a workflow like SCRUM implemented in my workplace.

    1. Re:Most aggravating by Anonymous Coward · · Score: 2, Informative

      The studio I'm in uses this process and it really helps keep all the teams on the same page.

      Our team meets every morning at 11:00am and we discuss our progress and share any issues that come up. Interopability problems come to light very quickly and are dealt with in a few hours / days instead of months down the road.

      One thing that we say in our SCRUM meetings is, no sitting! Keeps it short, sweet, to the point and people are alert through-out the meeting.

      We try to break up all our tasks in to two day work chunks and keep a backlog of all items needed to complete the project (well, at least to reach our milestone goals). So we have a meeting at the start of each block, a meeting in the middle, and a meeting at the end of the block/start of the next. It's flexible and actually keeps stress to a minimum.

      One thing to keep in mind, SCRUM is not a place to discuss deep details of the system. It's mostly to keep everyone in touch and in the loop so try to stay on topic and not derail the SCRUM. Otherwise it's just a regular meeting ;)

  3. The next big thing? by Anonymous+Brave+Guy · · Score: 4, Insightful

    There has been a lot of talk lately about what the 'next big thing' in development will be. Could this be it?

    I doubt it. Smart dev teams have been using iterative development cycles and keeping their code tidy since a long time before anyone coined the buzzphrase "agile" (or using SillyCapitalLetters and calling things "extreme", or any of the other hype we've put up with lately).

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  4. An interesting approach by Trevahaha · · Score: 2, Interesting

    My current project is using Agile methodology for development. It's great when you don't have full requirements at the beginning of the project. It would be interesting to apply this to games, and really makes sense. It seems like this would be much more organic approach and I could see it really useful in large games such as WoW where you can develop different areas while in production. A successful choice of methodology really depends on your project and what would be best for the team. Your choice of a methodology isn't a silver bullet to a successful project.

  5. Buzzwords aplenty by lawpoop · · Score: 4, Insightful

    "creating prioritized vertical slices that iterate on the most critical elements and features"

    Can someone tell me what this means?

    --
    Computers are useless. They can only give you answers.
    -- Pablo Picasso
    1. Re:Buzzwords aplenty by neonprimetime · · Score: 3, Funny

      For example ... in Tomb Raider
      One team should concentrate on Lara's Face, one should concentrate on her chest, and one should concentrate on her Legs. No wait ... that's horizontal slices.

    2. Re:Buzzwords aplenty by rs232 · · Score: 5, Funny

      "Can someone tell me what this means?"

      Some systems analyst draws some connectors and boxes and you get to sit up till 4:00 am writing the code.

      --
      davecb5620@gmail.com
    3. Re:Buzzwords aplenty by Salzorin · · Score: 5, Funny

      I'd like to, but it's really not on my deliverables for this quarter. If we could interface sometime during the next iteration, I feel like we can drill down this action item further and really bring this to manifest. I look forward to addressing your critical concerns and reaching some new plateu in our correspondence.

      --
      In Soviet Russia these Soviet Russia jokes aren't considered the least bit amusing...
    4. Re:Buzzwords aplenty by rwhansen · · Score: 3, Informative

      Some methdologies develop each subsystem fully then integrate them in a big bang at the end. Agile practitioners develop whatever parts of each subsystem are needed to support the features in the current iteration. If you think of the subsystems as layers, the vertical slice is the part of each layer that is being developed in the current iteration. The features should be prioritized in order of importance, so each iteration is working on the next most important feature or features. The idea behind all this is to always have some sort of working application.

    5. Re:Buzzwords aplenty by magicjava · · Score: 5, Informative

      "creating prioritized vertical slices that iterate on the most critical elements and features"

      Can someone tell me what this means?


      Sure. It means get something simple working as quickly as possible and improving it over and over.

      prioritized - Pick your most important features and implement them first. For example, if you're writing a word processor the ability to save a file probably has a higher proiority than a spell checker.

      vertical - This means "specific" as opposed to "general" (also called horizontal). So you work on specific features (like the saving of a file mentioned above) rather than more general ones (like optimiztion).

      iterate - You're not going to do things all at once. As an example, perhaps your first iteration of saving a file only saves text and no formating information. You're second may add formatting, your third may add additional formats.

    6. Re:Buzzwords aplenty by glindsey · · Score: 4, Funny

      "Hack something together that you can show the sales folks, and then keep adding to it with horrible kludges until you get something resembling the final product which complies. Ship immediately."

    7. Re:Buzzwords aplenty by sammy+baby · · Score: 3, Insightful

      That was a fancy way of saying:

      1. You start with an extremely barebones (read: you'd never release this into the wild) program that actually runs, passes all its unit tests, and implements maybe one important feature. (eg: a shopping cart program which will show you the contents of a catalog.)
      2. With each iteration, you add a new feature, refactoring older code as necessary. Start with critical functionality and work your way down the requirements.
      3. Continue until the product is releaseable.

      The "vertical" bit means that rather than taking the "let's implement all the methods we'll need in the CatalogItem class first" approach (horizontal), you're trying to make it actually do something useful (eg, show a list of products) with each iteration.

    8. Re:Buzzwords aplenty by Jhan · · Score: 3, Interesting

      At my current gig (OnGame ie. PokerRoom.com) we've been using a kind of modified Scrum. The idea is to start "El Project Grande", spend a day breaking the project into parts and deciding what depends on what, then spend another day in groups breaking down the parts into parts until you have tiny pieces which ideally will take less than 16 man hours a piece.

      You now have a big pile of tasks, sub-tasks, sub-sub-tasks and so forth with dependencies and time estimates (all set by the programmers themselves.) It's then up to the Scrum Master aka. "Get-those-assholes-off-our-back-person" to show the results to the customer and decide priorites.

      The priorities are passed to programming team, and they then plan the first "iteration". Now, the goal of every "iteration", which typically spans max one month, is to produce a fully implemented, tested and launchable subset of the complete product.

      Every day, all the coders have a *short* meeting (10-30 min). Each individual states what he is working on, what he's done since the last meeting, what he's planning to do until the next meeting and most importantly he's strongly encouraged to cry for help if he's blocked in any way.

      In addition to this there's an evil, buggy Excel sheet with all the (sub-sub-sub)tasks along the vertical, and days along the horizontal. It's each programmers responsibility to update estimated hours left for tasks he has been working on each day. NB! *hours left* It's prefectly alright to up the time remaining if you have unexpected problems. So a certain task may go "16 12 4 56" hours left.

      The main points of Scrum (for a programmer):

      • The programmers set all time estimates.
      • Individual programmers may change any estimates upward without hard feelings.
      • (In our version) The programmers hire new programmers.
      • The programmers allocate work among the programmers.
      • In fact, the programmers control their own work 99%.
      • The Scrum Master aka. ('Nearest-thing-we-have-to-a-boss') deflects all flack and handles all communication with harpies^W customers.)
      ...and that's how it's supposed to work in the best of worlds. In reality, however, the whole model crashes and burns if * The projects are to short (
      --

      I choose to remain celibate, like my father and his father before him.

    9. Re:Buzzwords aplenty by Kadin2048 · · Score: 3, Insightful
      "Hack something together that you can show the sales folks, and then keep adding to it with horrible kludges until you get something resembling the final product which complies. Ship immediately."
      I know you're being facetious, but that's exactly what I envisioned whenever I hear about these "agile" methodologies.

      I guess it's because I work on software where the tolerance for bugs is a lot less than it is (apparently) in desktop PC software, but I have a hard time seeing one of these methodologies producing clean code.

      If your application is going to get shipped and then never looked at again, I guess "clean code" might not matter, but if you're building an enterprise system, or writing a custom application that has to be maintained by other people later (people who probably aren't going to be quite so much of an 1337 h4x0r as you), it's a must.

      Documentation and specifications aren't just something that you do in order to satisfy the PHBs of the world; they serve a real function. A system that's been well-specified to begin with is much easier to fix later, at least in my experience, than one that's been produced during a death march and is nothing but a giant rat's nest of code.

      I could see the benefit of an "agile" development cycle for prototyping or producing a quick demo, but the idea of critical pieces of software -- software that your customers are going to depend on and that other people, months, years, or decades down the line are going to have to maintain and update -- being built this way scares me a little.

      Listening to programmers bitch about documentation is like listening to a bunch of carpenters bitch about architectural plans. Of course you could get the house built a lot faster if you just took 15 builders and said "hey you, build a wall here!" and "you, build a bathroom over there!" ... but I wouldn't want to live in the resulting house. Would you?
      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    10. Re:Buzzwords aplenty by Surt · · Score: 2, Interesting

      We use an agile methodology for our enterprise code (deriving from SCRUM).

      The benefit in terms of reliability and maintainability is that typically multiple engineers are forced to work on any given piece of code before it reaches the maintenance stage. This will tend to force anything that is poorly written to get rewritten along the way.

      Specifications (really tight specifications) are a must for this methodology to work right. I can start building you the 1.0 version as soon as you hand over a really detailed specification. When the specifier gets v1.0 (the next day or the next week...), they're then typically allowed to say, okay, freeze development while I respecify, because this isn't what I really wanted. The advantage here is that you don't go through a year's development before discovering that the spec was way off. Instead, you wind up revising the implementation until the spec and the implementation are in agreement, and you wind up with a customer happy with the spec.

      Another rather important piece of agile/scrum is testing. Everything has to have lots of testing, and test driven development is the preferred model. From the spec comes the test, from the failed test comes the implementation, from the working implementation comes the passing test, from the passing test the spec is satisfied.

      It really can work. Where i'm working we're considered about 2 technology years ahead of our competition by our customers. Our customers do something like $100 billion of business on our software per year. Agile can work, and it can work well, and is a great fit for enterprise development.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  6. Here's A Secret About Real Life Game Development by Anonymous Coward · · Score: 2, Interesting

    Any time you see someone interviewed about game development on the web or in a magazine chances are pretty good that the reason that person has the time to waste is they aren't valuable enough to be busy doing actual work on game development.

    You see them in the lunch room, outside with the smokers, hanging around in the halls of the building. Always talking about stuff with lots of buzz words, like say 'agile' for example, all sorts of very advanced sounding tech almost all of which they know very little about and rarely have had any real world experience with.

    If you are reading about game development on the Net you are most likely doing more harm than good to your understanding of the topic.

  7. Sounds like a formula for spaghetti-ware by cculianu · · Score: 3, Insightful

    Agile development with C++? Sure, it can be done. But one of the nice features of that language is its ability to model the application domain using Classes, Objects, Inheritance. If you don't take the time to model the problem correctly, you can painfully pay for it later on. Sometimes you get faster development times if you actually take a day or a week and model your problem so that it captures the essense of what you are trying to solve using objects, etc.

    An iterative approach where you use a greedy method of implementing each new feature as quickly as possible with little insight into the overall system may or may not produce optimal results. It can lead to lots of spaghetti code. Or maybe not. Certainly in my career that approach sometimes *has* led to cleverer solutions as I was forced to think up the best, simplest way to imlement them. But often it can lead to massive amounts of spaghetti code that doesn't make much sense or capture any insights into the problem.

    1. Re:Sounds like a formula for spaghetti-ware by TedSandwich · · Score: 2, Informative
      An iterative approach where you use a greedy method of implementing each new feature as quickly as possible with little insight into the overall system may or may not produce optimal results.

      You need to refactor the system when you add the features so that the system stays in balance with the new feature. Otherwise its just a hack.
      --
      "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe." -- Albert Einstein
    2. Re:Sounds like a formula for spaghetti-ware by nixNscratches · · Score: 2, Insightful

      It only sounds like that if you skip the important parts.

      Agile methods are not about skipping requirements, or modeling, nor about coding in a casual or non-deliberate way.

      Agile methods are about recognizing that requirements are a moving target, That the more you implement your solution, the better you will understand the model, and possible problems with your model of the problem domain, and that the best program on earth is worthless if it doesn't work for the end users.

      So, there's a large collection of techniques that most programming veterans (OO or otherwise) utilize to help get things up and running without having to send anyone "over the waterfall."

      Check out Dave Thomas and Andy Hunt, Martin Fowleror the Portland Pattern Repository for a good starting point.

    3. Re:Sounds like a formula for spaghetti-ware by Jerf · · Score: 3, Insightful
      Which leads to a lot of code churn and a system where noone really knows what a given subsystem is doing, unless you were the last one to touch it.

      Two counterpoints:
      • This is different than normal coding practice how?
      • It's all about costs and benefits. Sure, there are the downsides you mention, but on the other hand, aggressive refactoring means you don't necessarily live with your first design forever and ever, amen, as (go figure!) your first design also happens to be your worst. So, is it worth it? Depends on your situation. But in my experience, between "code churn" and "first generation design enshrined in concrete forever", the former is very preferable on all but the shortest time scales. YMMV.
    4. Re:Sounds like a formula for spaghetti-ware by Anonymous+Brave+Guy · · Score: 3, Insightful

      But, one of the most important tenents of Agile methodologies is that you must have _strong_ teams that are highly skilled, and with great amounts of personal motivation.

      ...who, by definition, will produce good results using pretty much any methodology. The test of any business process is how much it helps the guys who aren't already good, not how much it helps the office guru.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  8. Re:marketspeak by darrenf · · Score: 5, Funny
    creating prioritized vertical slices that iterate on the most critical elements and features


    But can I synergize with my results-driven knowledge base while partnering with self-managed teams, increasing single-source responsibility while undergoing a complete paradigm shift?

    I didn't think so.
  9. Programming Methodologies Are Dangerous by Anonymous Coward · · Score: 5, Insightful

    Working at a major game company, here's what happened when someone here raised XP:

    The guy who suggested it, "It's an itterative development model. We identify core features, develop those features, refine those features with the customer, then add the next layer, repeating as we go. We gain much better code as every component meets the customer's need as it is developed, challenging the customer to think about it in context, and allowing us to add additional itterations if needed."

    Management, "So, we can identify additional features throughout development?"

    "Absolutely. You just have to assign additional resources (time/people) to account for those extra features. But, by identifying them as they come up, you end up with a much better system that really does everything right."

    Over the next few months, features kept getting added, developers dutifully updated schedules. All was happy. Followed by...

    Management, "This was supposed to ship before thanksgiving. It's now slated to ship in the new year. We'll entirely miss the holiday season."

    Rapidly realizing his mistake for suggesting it guy, "Yes. But you kept coming up with new features. And they are great new features. Think how much better the product is for it."

    "If we miss the holiday season market, we lose money. This has to ship 'on time'."

    "But on time is a function of how much you add. We're developing everything to schedule. You've just increased the features so increased the schedule."

    "The schedule can't move."

    "So you'll have to lose some of the remaining itteration milestones. You'll have to drop features."

    "But we like all the features we've come up with."

    "But adding features adds time. You've known that since the beginning."

    "We've known this has to ship for the holiday season and you promised us we could have extra features. You're just going to have to work more overtime. Fortunately you're overtime exempt so that won't cost us anything to get this project back on schedule."

    "It is on schedule. You just changed the schedule by adding features that were identified along the way."

    "You told us your wonderful "XP" model would let us do that. We gave you the chance to try this new method under the understanding we got these benefits."

    "And you do."

    "Good. Then make your schedule."

    "We are mak-"

    "No arguments. This discussion is over. You promised you could deliver the extra features. You're now behind schedule for the holiday season. You're just going to have to crunch. End of discussion."

    Yeah, thanks XP.

    Never, ever, raise exciting new methodologies to management. They will hear all of the advantages and expect every last one of them as though it was the perfect implementation of the method whilst completely failing to hear (and certainly refusing to act on or implement if they do hear) any of the trade-offs that have to be made to enable those gains.

    1. Re:Programming Methodologies Are Dangerous by Nimey · · Score: 2, Insightful

      That's not a problem with XP. That's a problem with your PHB.

      --
      Hail Eris, full of mischief...

      E pluribus sanguinem
    2. Re:Programming Methodologies Are Dangerous by hhr · · Score: 4, Insightful

      The developers also made a mistake in not realzing where their paychecks come from-- selling finished games.

      If someone is paying you to write software then "Earning out paychecks" or "keeping on budget" must be a critical feature. We may like to think otherwise, but companies don't pay you because they love you. They pay you because you earn more money for them then you cost. If it was the other way around, your paycheck would bounce and/or layoffs would ensue.

    3. Re:Programming Methodologies Are Dangerous by finnif · · Score: 3, Insightful

      Your story there further proves... no matter WHAT the methodology is called, the old adage remains: "Quality, Cost, Schedule: Choose Two." Except in software, the other two can't always be fixed by spending more.

    4. Re:Programming Methodologies Are Dangerous by elmartinos · · Score: 2, Insightful

      Your problem is not XP, your problem is lack of management buy-in. No matter how you develop software, if your management does not support it, you have a problem.

    5. Re:Programming Methodologies Are Dangerous by Anonymous Coward · · Score: 2, Insightful

      Wrong. The developers should not worry about selling finished games, that management's responsiblity. I agree that 'keeping on budget' is a critical feature. But with agile methodologies, that is management's concern. Assuming that the developers were working at an acceptable pace, who made the decision to push back the release date?

    6. Re:Programming Methodologies Are Dangerous by Hylis · · Score: 2, Insightful

      Agile meets Santa when he wants

      your game should always be ready to ship with agile method since the most important features are done first, like the one that enables you to ship it. You may think as "milestone" versus "when it's done" but there is a third one: "when you want" and that's agile.

      the misunderstanding of the methodologies is dangerous and thats why methodologies are dangerous. This is the reason I don't listen to them: if they are more intelligent than me, I would not understand them fully and make mistake, if not, they are stupid and I don't want them.

      So maybe I am not talking about agile method and that post may be really useless.

    7. Re:Programming Methodologies Are Dangerous by Anonymous Coward · · Score: 2, Informative

      Bad Management is Dangerous. Always. This is not a problem with XP, this is a symptom of some basic problems:

      The Product Manager does not know the real business value of the features she is requesting. If the business value in profits was known, she would understand what the priorities of the team really should be. She would also know what the "MINIMUM" set of features are that the product needs to be profitable for her market/audience.
      The Project Manager does not understand that "HARD CHOICES" are required "EVERY ITERATION" by the Product Manager. You cannot add scope to a fixed team without moving the date. This is basic 101 project management, it is true no matter what methodology you use.
      The team does not know their velocity, and/or have not helped management understand what their velocity is, that it is fixed, and how changes in scope may not affect delivery dates, but addition of scope surely will.

      A very innovative gaming company uses XP and Scrum, they are http://www.highmoonstudios.com/ and they are very successful at delivery, without abusing their development teams, and harming the people in them... a rarity as I understand the broken painful world of software game development.

  10. Mumbo Jumbo by Anonymous Coward · · Score: 3, Funny

    Sounds like more touchy feely mumbo jumbo to me. Coffee, red eyes, bad breath, late nights, divorce... that's how software gets done dammit..

  11. Agile methods suck by Anonymous Coward · · Score: 2, Interesting

    We're using them where I work. They cause a huge mess in communication and a lot of grief for the developers. It also allows the designers to change their minds on a whim - which means that the project keeps stalling.

    SCRUM doesn't keep a history, so you have no way of checking to see if your estimates are historically too high, too low, or all of the above, and so there's no way to see if you're going to hit things on time.

    There is no magic bullet. And when you've got a lot of people who need to keep working together, agile methods are useless. It's great for small groups (3-4 people), but don't bother if you've got 150 people, all with complex interdependencies. You just end up with blockage soup, and people getting pissed off.

    1. Re:Agile methods suck by 91degrees · · Score: 2, Insightful

      They cause a huge mess in communication and a lot of grief for the developers. It also allows the designers to change their minds on a whim - which means that the project keeps stalling.

      You're doing it wrong. If desingers don't like something, it gets left to a future sprint. Remove things from a sprint by all means. You can always use the freed up time for something, but don't change things. You do have to be a little pigheaded about the rules, whilst not being totally inflexible where the system is wrong which is a tricky balance but quite possible.

      And when you've got a lot of people who need to keep working together, agile methods are useless. It's great for small groups (3-4 people), but don't bother if you've got 150 people, all with complex interdependencies.

      You need to simplify the interdependencies, and split into teams of less than 10 people. If team A needs something from team B, then Team A's will have to do something else this sprint.

  12. 'agile' is neat, but ... by bunions · · Score: 4, Interesting
    as everyone else pointed out, it's mostly just a name for what people have been doing for a while when upper management leaves them alone.

    That said, I've found the hardest part of the process to be finding a client who is willing to put up with the constant back-&-forth and interminable beta testing. Customers generally just want to tell you what they want, go away and then have you magically deduce what they actually need, and can be irritable when you tell them you really can't do that because ... you know ... agile!

    --
    there is no need to sign your posts. this isn't usenet. your username is right there above your post. stop it.
  13. Way too much market speak... by Mysticalfruit · · Score: 4, Insightful

    Tragically, I couldn't RTFA because of th excessive market speak.

    In order to energize the evolution of computer games we need to synergize on the vertical slies... WTF?

    I guess people forgot to mention that writing computer games rates up there with writing operating systems in complexity...

    --
    Yes Francis, the world has gone crazy.
  14. But that's how most games were made... by MagikSlinger · · Score: 3, Informative

    When I was in the game industry, this was how we always did it, even EA does it to an extent. Why? Because the publishers want results. Usually every month or you won't get paid. So as a result we had incremental releases with more and more features added in, and as a bonus, sometimes working. X-D

    P.S. With few exceptions, most game teams do NOT have specs or docs. If they're lucky, they have concept art and some clue what the game is supposed to be. I remember having to code up front-end screens and the artist & I had to figure out what they were supposed to do because the game designer was still writing the specs for the screen we finished last week.

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
  15. 30 day sprints? by magicjava · · Score: 3, Insightful

    30 days is fast? I wish I had 30 whole days to do my projects!

    I love iterative development, but scrum didn't impress me much when I was involved with it. Perhaps that was just due to the management that implemented it. We went from logging bugs and tasks in bugzilla to writing them on index cards (do I really need to point out to computer people how stupid that is?), and trying to plan projects on these obscure, poorly implemented planning tools.

    Iterative development is great, but scrum strikes me as nothing more than another useless management fad.

  16. Managers <sigh> by Anonymous+Brave+Guy · · Score: 4, Insightful

    This is just an issue with management, though. A good manager will trust his engineers (or fire them and replace them with trustworthy alternatives). The manager's job is to set the direction of the project, get the engineers what they need to steer in that direction, and then get out of the way as much as possible and as quickly as possible.

    It's staggering how many managers don't realise this, and hamstring their dev teams with their personal, half-baked, technically-incompetent ideas and/or with excessive procedures and beaucratic reporting because the manager "has to know what's going on". Of course he does, up to a point, but what exactly is he going to do if a developer does tell him that a bug fix was delayed by a day because {$TECHNOBABBLE}? If he's not going to act on some information, he doesn't need to know it, and requiring developers to take time out of their day to "keep the manager in the loop" more than necessary just disrupts development.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  17. I've thought about this by th1ckasabr1ck · · Score: 3, Informative
    I program games and I've thought about this a lot. I kind of like the agile approach, and I think that a lot of the concepts could be useful. One of the major components of being "agile" is building unit tests and relying (at least somewhat) on those as a way to make sure that these rapid checkins are not breaking semi-related systems.

    With games it is UNBELIEVABLY difficult to write unit tests that effectively catch problems. With animation, physics, AI, the built in randomness with the game, the human interaction, etc. it's unbelievably difficult to write unit tests that can get the job done.

    It's easy to write a unit test that says, "When I shoot a dude with this gun, make sure his health goes down by 50". But it's an entirely different thing to say something like, "Make sure that when a battle is going on nobody gets caught up on geometry and can't path to their movement goal."

    Sure it's possible to write small little unit tests that make sure a dude can get from point A to point B, and that this guy knows how to path around a dynamic object if a crate falls in his way, but this isn't something you can effectively break up into little parts. I've fixed too many bugs that are a strange and unfortunate combination of all the aforementioned systems to fall into the trap of thinking isolated unit tests are going to get the job done.

    I am a big fan of the idea in theory, but I can't imagine it being implemented effectively in practice. I would love for somebody to prove me wrong!

  18. Duke Nuken Forever utilizing Agile Development by mrkitty · · Score: 3, Funny

    What do you think I'm lying? :)

    --
    Believe me, if I started murdering people, there would be none of you left.
  19. pushing envelopes by drDugan · · Score: 3, Interesting

    games have pushed the envolope more than any other area in computer software development

    the current rising tsunami happening right now with agile development for web applications (like Ruby on Rails, and similar approaches happening in Perl, Python, java and others)... will take games by storm, in my opinion. there are a few factors here that will make games really interesting:

    there will be much more scripting in games,

    there will be much more meta-programming (code writing code)

    there willo be more layering and customization in the languages we use - with more powerful and expressive languages deep underneith, but with tightly constrained, layered (or mixed-in) frameworks that enforce best practices built on top. we have seen this progression going forward for the last 10 years or so, and it's starting to get really interesting now.

    and on the next 5-10 year horizon, we will see applications (driving mostly by desire for better AI in games) that are human-competative in reasoning and interaction - I offer this conjecture without proof, but with significant anecdotal evidence to support the assertion.

    I watching for signs of two important things in computer development: a code base that can write another codebase (metaprogram) that is (1) aware of what it just did and (2) can communicate in a complex novel way with the new code set (I'm being vague here, but you get the idea -- think compiler theory for AI), and ... a fully autonomous systems that can operate a *power plant*. Once those two things happen, humans are toast. I'd estimate that to be about 2060.

  20. Take it from me ... by LaughingCoder · · Score: 4, Insightful

    I have been developing products for a long time (decades if you must know). For what it's worth, it is my experience that the people on the team have by far the biggest impact on product quality, timeliness, and all those other goodness measures. I believe that the methodology is almost immaterial. Good engineers will instinctively use the appropriate process for the problem at hand. Now, this doesn't necessarily scale to very large projects, which is why I am a firm believer in loose coupling. As soon as practical, decompose the big project in to a collection of loosely coupled smaller projects and then put in place the teams (unfettered by process dogma) to develop the pieces. Ahh, you ask, but what process do you use to decompose the system? See my earlier comment - choose a small team of very good engineers and have them do it. Don't tell them how -- they already know that. Trust people, not process. Ironically there is one process that I believe is critical to every organization's success, and it probably the least-studied, least-optimized, least-formalized process every company has ... and that process is the interview process. Clearly if I am going to trust my people to do the right things and make the right choices, I had better hire the right people. Anyhow, that's about $0.93 more than my $0.02 so I'll step down off my soapbox now.

    --
    The more you regulate a company, the worse its products become.
    1. Re:Take it from me ... by DarkSarin · · Score: 2, Insightful

      Ah, but hiring in itself is a tricky thing (trust me, I study this): it is very highly studied, highly optimizable, and can be made VERY formal.

      Interviews are great--as long as they get at standard information. Otherwise you end up asking applicant a one thing and applicant b another and then you have no clear way to determine which is better. Under this method you end up with 'good enough', rather than 'the best we can find at our budget', which is not really the same thing at all.

      If you want more information on hiring good people drop me an email or go talk to a professional.

      --
      "We don't know what we are doing, but we are doing it very carefully,..." Wherry, R.J. Personnel Psychology (1995)
    2. Re:Take it from me ... by LaughingCoder · · Score: 2, Interesting

      I agree with everything you said. I believe this a process which can and *should* be formalized. My experience is that at most companies this is not the case. And in those companies that do attempt some sort of formalization there is a distressing (in my opinion) trend towards these "personality/behavioral-based' interviews, leaving less time to assess technical competence and "passion for product development".

      FWIW, I was exposed to a very rigorous and (I think effective) interview process at the second company I worked for. They had a remarkable hiring track record - a lab full of excellent engineers (most would be top-ranked at any other company) and almost non-existent turnover (over more than a decade, so it was sustained). Their process was formal and quite rigorous. Interview teams were cross-functional, even when hiring for a particular discipline (ie R&D interviewed MFG candidates and vice versa, and everyone talked to both a software and a hardware technical interviewer even if that was not their forte; we believed in hiring flexible, well-grounded generalists). Interviewers all had standard questions that they asked of every candidate - usually one 20-minute-ish technical question that was fairly open-ended and could lead to much discussion, so they could compare candidates on the same material. All of the morning interviews (usually 4) were technical. During the plant tour immedately following lunch with the candidate, the technical interviewers got together and discussed the candidate on technical merits and, if the candidate passed muster (most didn't) the managers did the "soft skills" interviews after lunch. If the technical interviews did not go well usually a short debrief with HR would close out the interview. For good candidates, the whole thing closed with a "sell job" (cool product demos, perhaps a short meeting with a high level manager to sell them on the company's prospects.

      --
      The more you regulate a company, the worse its products become.
    3. Re:Take it from me ... by asuffield · · Score: 2, Insightful

      For what it's worth, it is my experience that the people on the team have by far the biggest impact on product quality, timeliness, and all those other goodness measures. I believe that the methodology is almost immaterial.

      This may be true, but the software industry doesn't work that way. Managers want people to be interchangable parts, because that way they can easily replace them when they leave. So they focus on methodology.

      Ironically there is one process that I believe is critical to every organization's success, and it probably the least-studied, least-optimized, least-formalized process every company has ... and that process is the interview process.

      This is probably directly related. The managers and HR droids apply their standard interview process, effectively hire people at random, and conclude that they can't reliably get good people - hence the above.

      One of the big problems I see is that the interview process is normally optimised to hire the best salesdroid in the group (because they're best at "selling theirself") regardless of whether they are hiring for a sales role or not. Good engineers are cautious and precisionist in their speech, so they tend to "perform worse" at interviews by giving more precise, less optimistic answers.

  21. There's no magic bullet by PIPBoy3000 · · Score: 2, Interesting
    But if I were going to name two things that seem to help, they would be:
    • Few, smart people Smaller groups of developers (preferrably one) seem to get so much more done than tons of people working on a project, requiring coordination and creation of standards. I realize this is often mocked, comparing it to the mythic hero developer, locked away and producing great code. Still, in real-life situations I've seen big development groups fail or work at a snail's pace while the single smart person cranks out application after application.
    • Evolutionary prototyping. This is similar to agile programming, basically coming up with something that works and refining it until it's "good enough". I find applications are never firmly done, but rather the fixes and upgrades slow over time. Now if you're building missles or medical equipment, this isn't the best approach, but for most normal business software, I find it works best.
  22. Oh, I get it by Quiet_Desperation · · Score: 3, Funny
    "Agile puts the emphasis on producing demonstrable iterations of a game almost immediately into production, creating prioritized vertical slices that iterate on the most critical elements and features. The method also puts great emphasis on the organization of teams and the relationships therein, as well as the cycles in which teams must plan and carry out their project objectives."

    So the game is to figure out what bullshit like this means?

  23. Product development by Aceticon · · Score: 4, Insightful

    The problem using any software development methodology which requires user feedback for new product development is that you don't actually have any users - best you can get is a marketoid and those change their minds every 5 minutes.

    You see, the closest you have for a user of a new game is a gamer and those can't really help you refine your requirements 'cause all they want from a game is to be entertained and they don't really know beforehand how a new, entertaining, game will look like - "having fun" is hardly an easy to define business process.

    Maybe some sort of mixed approach where you have a game designer with an overall view of the game concept and a generic pool of gamers to check out the "fun factor" during game development. Might work well for games with an "exploration" component (for example RPGs) for which you can design the early levels, "test" them with some gamers and then use the result to fine tune those levels and later ones. Still, i doubt it can be usefull in game genres such as RTS and Sims.

    More in general, and judging from the posts i've been seing in ./ for the last couple of years, the main process problem with game development seems to be that a lot of the control over the final product lies with Marketing, and worse, Marketing is in a different company altogether (the producer) than game development - so even with good managers on the software development side (already unlikelly) it's difficult to control the the flow of wacky ideas "that just have to be included in the game" coming from the marketoids - thus requirements creep is rife, which almost guarantees that long hours and death marches are standard.

  24. Thank goodness! by brouski · · Score: 2, Funny
    Thank goodness!

    Now I can finally use that +20 agility enchant!

    --
    Proud member of the American Non Sequitur Society. We might not make much sense, but boy do we love pizza!
  25. Re:Managers by SatanicPuppy · · Score: 4, Interesting

    I know it's tired old hat, and probably flameworthy in this environment, but a real manager doesn't need to know what the hell you're talking about to make a good descision. All he has to do is know his people, and be willing to listen to their experience. By the same token, the most knowledgable manager in the world can still screw everything up by trying to make everyone do it the exact way he would do it if he was doing it all himself.

    You need to find someone who can keep the final goal in sight, and who is flexible enough to reorganize whenever the requirements change. Agile, Waterfall, Iterative, whatever, it doesn't matter...These are ideas put together so that mediocre managers will have some kind of method that may bring decent results. They can all work great, and they can all work poorly, and it all depends on who is doing the oversight.

    Management actually is a pretty solid skill if you can do it. Too much of the flaming comes from people who've never had the good fortune to work with a good manager. I myself have never worked with one who was the total package...Either they understood the work and the clients and they couldn't deal with the higher ups, or they dealt well with the higher ups but didn't understand the work or the clients.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  26. Re:Managers by Anonymous+Brave+Guy · · Score: 2, Insightful

    You're missing two vital parts of project management: ensuring the train stays on track,

    Which can never be done reliably for non-trivial projects with the tools and techniques we have available today, regardless of what anyone trying to sell you their book says. No-one has yet shown how to beat picking two of cheap, fast and good.

    and ensuring that the investors (stockholders, direct investors, whoever supplied the $$) is kept aware of progress.

    Which is a much higher level than the sort of day-to-day project stuff we're talking about here.

    For those at the highest level of a large company, you're looking at possibly dozens or hundreds of projects. How does a company distill the important information that policies and decisions need to be based upon?

    It doesn't, in this context. Again, no executive of a large company should routinely be involved in the day-to-day progress of minor projects by a particular dev team. That's not their job, and it's the worst kind of micromanagement.

    If you're going to analyze data from dozens of projects, you'll need common metrics -- which means bureacratic "red tape" in order to get values for those metrics.

    It also means you need metrics worth something, which random estimates for project timescales based on the inadequate information that was available six months earlier most certainly are not.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  27. A pipedream by llZENll · · Score: 2, Insightful

    Seems like the whole idea the article suggests is a pipedream. So their great and new idea is to complete the most important features immediately, then refine them. Well that is all great, but what about the fact that a game usually isn't remotely playable until it is 90% done, no matter which pieces you work on or do in what order.

    This reminds me of something I just read about how episodic content will never work, as making episode 1 requires 95% of the work of the entire game.

  28. Show me the money! by slcdb · · Score: 2, Insightful

    Show me raw, tangible statistics pitting Agile methodologies against other more traditional approaches, like "waterfall". I'd like to see a whole range of games (or other applications), developed using various methodologies and scored based on parameters like: shipped on time, end product quality, popularity, critical review scores, and, of course, amount of profit. This would be the only way to see how much "better" Agile is compared to other methodologies. Otherwise this is all just theory, speculation, and unadulterated opinion.

    --
    Despite what EULAs say, most software is sold, not licensed.
  29. This 'agile' thing has a different goal by Weaselmancer · · Score: 4, Interesting

    From the blurb:

    Agile puts the emphasis on producing demonstrable iterations of a game almost immediately into production

    So what this does basically is get something that just barely works up for review as quickly as possible. Like throwing a lump of clay on a table and saying, "There's a vase in here, somewhere."

    This IMHO will do two things. First, it will give SW managers a warm feeling caused primarily from too much optimism. "All the engineers have to do is shape that clay a bit, and it's a vase! We're ahead of schedule!" Two, since they will think they're ahead of schedule, they'll report to their superiors about how they already "have a working prototype of a vase" and that'll bump up the schedule.

    The engineers who actually have to implement things will know better. And they're the ones who will get stuck with the deadline. The agile pony show where you show your manager something that boots but doesn't have 98% of the functionality in it will bite you in the rear later on.

    This method doesn't seem well suited to making software. However, it does seem well suited to making managers feel good. I'd avoid it.

    --
    Weaselmancer
    rediculous.
  30. This is nothing new even in pro game development by Sarusa · · Score: 2, Insightful

    This is nothing new in game development, even at large companies. 'agile' (with a little A) has been used for at least a decade. You just can't possibly build a good game with the waterfall model and we've known that forever. I think it's a bit like every generation thinking they invented sex.

    We use nightly builds (a single day without a working build is a huge hit). Getting the framework working so your designers and texturers (and gameplay folks) can start trying stuff in-engine, then fleshing out features. Midding sized time periods (2-4 weeks) between major builds. Unit testing. Though we have to bring in humans to really break it when it's all put together.

    Now if you mean Agile with a capital A, then it's not the next big thing, it's just the same bullcrap it was when it was called eXXXtreme Programming. We like to write things down and design a lot of things up front, which clashes with Agile (and don't tell me it doesn't, even with the lip service) - you need at the very least a production bible for large project games to keep everyone together. Parts of the design will sometimes not survive actual implementation and will be tossed, but in general they keep things on track and usually only need some tweaking (everything gets tweaked during playtest time).

    If you don't do this sort of thing you end up with http://en.wikipedia.org/wiki/Dungeon_Lords, which is what you get with a Agilely (with a capital A) developed game. It shipped only half complete with no internal cohesion at all and still isn't finished. But the great thing is that you can use your Methodology to justify it all.

  31. RUP by Maxo-Texas · · Score: 2, Insightful

    As a programmer, I like RUP.
    As a project lead, I like RUP.

    It has aspects of Agile to it.

    The important parts are:

    Get the risky stuff addressed early. If DX9 doesn't support bi-pixar multi-shading like it says it does, then it is best to find out early rather than at the end.

    Do the work in measurable chunks. That way you know in as little as a month if you are falling behind schedule.

    Frequently interact with the users to make sure you are on course. This is the biggest problem with waterfall projects- working 6 months on something and it turns out you made a wrong turn on week 2. And I've seen other programmers do this again and again even with user interaction- they get an idea of what the program should be like in their head and turn off input from reality.

    All the documents and crap bother me to and feel like useless makework. At least video game programmers do not have to deal with SOX compliance issues.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  32. Re:Software Engineering stiff, meet Game Developer by _DangerousDwarf · · Score: 2, Insightful

    Scrum isn't a software engineering method. It is purely a project managment methodogy. That is one if the _key_ differences between Scum and other Agile methods.

  33. I'll pass by rabbot · · Score: 2, Funny

    I'll stick to loading up agility on my Thief for that trick attack multiplier.

  34. Re:Here's A Secret About Real Life Game Developmen by jamie(really) · · Score: 2, Informative

    LOL. I'm laughing because usually I'd agree :-) But why? Well, because most games studios I've worked involved near constant death-marches to ship product. I'm now a Senior Architect at High Moon (where Rory works) and I'm amazed to say that (a) I have spare time and (b) our productivity is much higher than any other place I've worked. Now I admit that being a total geek I end up working late a lot anyway, but its on interesting avenues and experiments rather than fixing the bugs that I introduced when I was asleep at the wheel 2am the night before as used to happen.

    You were right about him hanging outside smoking though.

  35. Solve specific bugs by Prien715 · · Score: 3, Interesting

    We're in the process of implementing further unit tests under the agile model (though not gaming related, it is a heavily interactive app). The idea behind unit testing is to:

    1) find bug
    2) write unit test for bug.
    3) write fix.
    4) verify unit test/program both work. If unit test works, but program fails, go to step 2.

    1) In your example, a tester/coder would find see some soldier dude getting stuck in the middle of battle.
    2) So do it again, saving the game before the bug occurs. Write a unit test which loads this save and then check after x seconds to see where the soldier is and then fail the unit test cause he's stuck behind the crate. The unit test will is not in any way general. It's not meant to test all your pathfinding issues, just this one.
    3) Rework the pathfinding code.
    4) After you notice the unit test passes, go in and see if the bug is still physically in the game. If it's not, you've fixed it. If it still is, well, write another test. You may end up with a dozen pathfinding unit tests this way all of which "fix" some sort of bug.

    The idea behind this methodology is that let's say your new pathfinding algo causes a bug which developer B fixes, but which causes the original case to break. Your unit test will now "clue you in" before a checkin occurs. It also free testing to do more "battle" and "feel" stuff.

    --
    -- Political fascism requires a Fuhrer.
  36. Guidance on unit testing for games by lquam · · Score: 2, Interesting

    Check out the agile game development blog and in particular High Moon Studios who has provided seminars at the last two GDC's on their experience with SCRUM and XP, including tips for unit testing game components. They admit that some elements of game, for example, "fun" is not something you can tests, but since games are so hideously complex, having most of your code covered by unit testing makes regression testing far easier when your 18 months and a few 100k lines of code in.

    That said, I've experienced a lot of blowback in game companies about using any agile methodologies. The rank and file in most game companies are, while blindingly talented, often very stubborn and/or passive-aggressive toward anything they perceive as control. The organizations I've been in where XP, in particular, has really worked, was where most if not all of the engineers were tired of priority of the day project management from marketing, sales, etc. and where management was enlightened about the benefits of better software quality and more predictability in development. Unfortunately, to make any agile method to work requires buy-in from the top to bottom of the org chart and very few places will ever get that.

    That said, I think in 5 years, most game companies will be using elements of XP, SCRUM, and other agile methodologies in their work. I don't believe game companies will be able to survive without this shift, because although some poo-poo agile for large teams, some of these techniques can work very well for large teams and game teams are only getting larger and the financial stakes of failure and missed schedules will only becoming higher. In that environment, only studios which get a handle on their development will survive. The companies that refuse will become overwhelmed by the complexity and IMHO will start losing their best people to studios that start putting agile processes in place.

    Of course, EA and that ilk may continue to just chew through developers, working them 80+ hours a week for years to come, but that will not be an option for most studios and smaller publishers.

    And, yes, agile comes with a lot of marketing-speak gobbledy-gook, because you usually have to sell it to management. The reality is that it's as much about controlling management as it is about controlling development, perhaps more so.

    And to the example above where XP was implemented at a game company where management thought that they would simply get more features, well, that's management not understanding XP and I'd wager that in the absence of XP those same executives would have been adding the same damned features, still not dropping any features, and still kvetching that the game needs to ship for Xmas. That's the game industry folks. No process can fix that.

    LQ

  37. Structured coding by jandersen · · Score: 2, Interesting

    Structured coding has so far been the only really big thing in programming; anything else since then has just been fads. Structured programming made it possible to write code that was reasonably easy to follow logically - compare a badly structured COBOL or FORTRAN program to well structured C program to see what I mean.

    The things that have come in since then have been attempts at addressing minor shortcomings in the way people work; and not always very successfully. Compare C and C++: C is syntactically extremely simple, it gives you exactly what is necessary and nothing else. C++ tries to address the perceived shortcomings of C, mostly in the areas of reuse of code and initialisation of variables; but it comes at the cost of being an excessively complicated language and it requires a huge amount of self-discipline to avoid writing impenetrable, convoluted code.