Slashdot Mirror


Extreme Programming for Web Projects

PinglePongle writes with this review of Addison Wesley's Extreme Programming for Web Projects, writing "The authors work for a web shop, building websites for customers, and try to use their experience to make life easier for their readers. Their main point concerns how traditional web projects are structured to leave at least one of the parties taking a big risk on the project: if the project is 'fixed price, fixed scope' the developers take all the risk, if it's 'time & materials' the customer takes a risk -- they can not be sure their money will lead to whatever it is they want." Read on to see whether the authors have successfully outlined a fairer, more successful system in the rest of PinglePongle's review, below. Extreme Programming for Web Projects author Doug Wallace, Isobell Raggett, Joel Aufgang pages 165 publisher Addison Wesley rating Poor reviewer PinglePongle ISBN 0201794276 summary A book about applying the Extreme Programming methodology to web projects.

Can good ideas dominate the buzzwords? This risk -- the authors contend -- is the reason many web development projects fail in one way or another. The client's objective is to obtain maximum value, the developer's to incur the least cost possible without getting sued.

The authors show a way in which this risk can be shared fairly between the client and the developer, by using XP and iterative development cycles, alongside a release plan, to acknowledge the risks inherent in a development project, and manage them rather than try to pretend they don't exist. The project team -- client and developer -- work together to create an iteration plan, and use this shared understanding of the requirements to guide the project.

The book is structured into 4 parts: Part 1: XP and Web Projects explores the problems associated with web development projects. Part 2, Working on Web XP Projects explores some of the practicalities of the authors' process - iterative development cycles, the development environment, team roles, and the graphic design process. Part 3: XML and Web XP is a bit of an oddity in a methodology book -- it focuses on some technology-specific issues which the authors claim can be addressed by using XML. Part 4: Web XP Best Practices discusses planning, design, coding and testing issues.

What's good about this book? Well, there are some insights into the relationship between suppliers and customers in development projects. (I don't believe, though, that they're as specific to web projects as the authors seem to claim).

What's bad about this book? It seems to be a sales brochure for the author's web shop -- "we do things thusly, and it yields fantastic results every time." The text is full of fairly broad, even sweeping statements ("Many programmers put SQL code right on a web page" -- when was the last time you saw a select statement on a web page ?).

The authors do not really seem to be able to identify those aspects which make web development projects different from other types of development. Some of the team roles they recommend are bizarre -- the authors identify the role of "Strategist" who seems to help those poor idiot customers to understand their own business. This may be necessary on some projects, but I find this attitude very condescending -- the days when web development was portrayed as a cross between alchemy and spiritual enlightenment are long gone. Many of the sections are very superficial, but the book is littered with footnotes saying "Chapter X discusses this in detail."

In short, I'd say this book is too lightweight for people who understand XP already and want to learn how it applies to web projects, and novices are likely to get hung up on the largely redundant side tracks (CVS versus MS Sourcesafe -- Huh? How did that get past the editors?) to be able to see the extreme wood for the trees.

You can purchase Extreme Programming for Web Projectsfrom bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

181 comments

  1. I'd rather see Extreme Grocery Bagging by Adam+Rightmann · · Score: 5, Funny

    for Laid Off WebMasters Who Dropped Out of College With a Passing Knowledge of Front Page to Work For a Dotcom, but then I've always valued a four year degree.

    This books sounds like buzzword fluff.

    --
    A. Rightmann
    1. Re:I'd rather see Extreme Grocery Bagging by Anonymous Coward · · Score: 0

      Come on in waving youre 4 year degree for an interview, I dont give it a 2nd glance. Mindset is what counts. Not youre ricepaper.

    2. Re:I'd rather see Extreme Grocery Bagging by Anonymous Coward · · Score: 0

      I've seen so many intelligent and experienced people get fired by upper management because they don't have a degree that I didn't even consider no degree an option. It might not mean anything to you, or even to your immediate superior, but chances are it matters to the higher ups.

    3. Re:I'd rather see Extreme Grocery Bagging by Anonymous Coward · · Score: 2, Insightful

      Ummm...bullshit. I have never seen "upper management" give a shit about the education levels of their ranks. Indeed, apart from young graduates it is something that has absolutely no bearing for virtually all of industry. The idea that upper management is filtering through CVs to find someone with insufficient education is ridiculous, especially in technology fields. If you saw someone fired for not having a degree, realize that it was a red herring to fire someone they wanted to fire, and the degree issue is a non-starter.

    4. Re:I'd rather see Extreme Grocery Bagging by Anonymous Coward · · Score: 0

      You stink of arrogance. You are not welcome in our organisation. Arrogance breeds hate which means a hostile working environment.

    5. Re:I'd rather see Extreme Grocery Bagging by Anonymous Coward · · Score: 2, Insightful

      This is a rather short-sighted view. In 1997, I was faced with the same choice: Experience, or degree. I chose both. Finished high school at the end of 1997, started doing a Bachelor's degree in Information Technology part time, in 1998, looked for work, had a few odd jobs but nothing major, and in my 2nd year, 1999, started an e-billing company with 2 partners. Finished my degree with honours in 2001, and also had a moderately successful company. (Moderately successful back then, substantially more successful now). Good luck to you with your degree only, though.

      Admittedly, it has a lot to do with luck, but I'm pretty sure that most people doing their degrees right now could improve their situation significantly, instead of getting their degree and then wondering if it's going to be all that useful in the ultra-dynamic I.T marketplace.

      My hiring policy is simple: if you have a degree, great, if not, also fine. It all boils down to how you do in the technical test that my colleagues and I have devised. It's based on knowledge of the following subjects: Operating systems, Python programming, C programming, Zope usage, and Network knowledge. It doesn't matter how many degrees you have, if you want to be a programmer with us, you need to do well in this test. Most of the degreed applicants' CV's look something like this:

      Mr Smith

      B.Sc (Computer Science) (or B.Tech (Information Technology), or whatever the case may be)

      Visual Basic/ASP/ ColdFusion/Windows NT/etc etc.

      Look, degrees are impressive and all, but most of the CV's that have them also contain large amounts Microsoft, and that's not acceptable in firms that use non-Microsoft technology for scalability and stability reasons (our custom e-billing app needs to serve millions of requests per day and send large amounts of mail without crashing, freezing, BSODing, or whatever the case may be).

      As for other organizations, from all I've heard and experienced, people with degrees are more likely to get laid off because they tend to cost more than non-degreed people, and in business, it's often the bottom line that counts, unfortunately.

      From a skills perspective, people who have been programming since their teens or earlier tend to be the best technically (I was one of these people), and degrees do indeed help to sharpen and augment those skills, but are by no means the end-all and be all of programming, experience is far more important.

      Hope this helps, and I hope that you manage to find a job.

    6. Re:I'd rather see Extreme Grocery Bagging by PhillC · · Score: 2, Interesting
      I don't know about the firing side of things, but I have certainly seen CVs rejected during the hiring process for not having the right education qualifications.

      An online auction company I recently worked for has a massive hang up about MBAs. If you want to do anything technology related that's not actually coding, for example Project Manager, then you'd better get yourself an MBA.

      Also during recent reading of job advertisements I've seen a lot of ads that say something like "must have good degree from a red brick university."

      --
      Brought to you by the author of such childrens' classics as "Some Kittens can Fly!" and "All Dogs go to Hell."
    7. Re:I'd rather see Extreme Grocery Bagging by johann909 · · Score: 0

      degrees are for stupid people. i was hired on at my job w/o one while i was an intern. three other interns i work with critisized me for spending less time at school and more time making $$$. now they all graduated, and they are hired on at the same rate as i (one even gets paid less). if we all stay at the job until we retire, i will have made more money than they have in the long run. so you see, i am the smart one!

    8. Re:I'd rather see Extreme Grocery Bagging by johann909 · · Score: 0

      smart man! i would do it exactly the same way if i owned my own company

    9. Re:I'd rather see Extreme Grocery Bagging by Anonymous Coward · · Score: 0

      I think this thread s going the wrong way. XP is for stupid people, not having a degree dosent mean you are stupid. Doing XP means you are.

    10. Re:I'd rather see Extreme Grocery Bagging by edhall · · Score: 1

      I've never seen someone fired for not having a degree unless they lied about it. But I've certainly seen people not hired in the first place for not having a degree -- which probably explains why some people wind up lying about it in the first place.

      -Ed
  2. real xtreme programming... by Joe+the+Lesser · · Score: 5, Funny

    is writing code while skiing 20 yards ahead of an avalance AND compiling on first try.

    --
    "I only speak the truth"
    Karma: null(Mostly affected by an unassigned variable)
    1. Re:real xtreme programming... by mls · · Score: 1

      So would should that be part of the Winter X-games? Or should I say XP-games?

      --
      -mls
    2. Re:real xtreme programming... by coolgeek · · Score: 1

      Can't wait for the movie...

      --

      cat /dev/null >sig
    3. Re:real xtreme programming... by DA_MAN_DA_MYTH · · Score: 2, Funny

      While being hopped up on some Mountain Dew!

      --
      "It takes many nails to build a crib, but one screw to fill it."
    4. Re:real xtreme programming... by Anonymous Coward · · Score: 0

      Why do you take the joke you just read and then repeat it in a much less funny way?

    5. Re:real xtreme programming... by GunFodder · · Score: 1

      Starring Vin Diesel of course...

  3. OK, so this particular book fails: iterate, then.. by DancingSword · · Score: 1

    What do you know-of that is effective in knowing and communicating what this book purports to be?

    --
    Messages to/for me ( in me journal )
  4. reliability by monadicIO · · Score: 5, Insightful

    Somehow, I would never trust an "extreme programmed" program. I feel (perhaps just a prejudice) that extreme programming is a "do now, think later" kind of approach. I'd be interested in knowing if there have been studies with respect to reliability of extreme programmed projects.

    --

    The law of excluded middle : Either I'm foo or I'm foobar

    1. Re:reliability by kryzx · · Score: 4, Insightful

      This comment shows a lack of understanding of the most basic principal of XP: your requirements are defined by your tests, if it passes the tests it passes the requirements.

      If a program passes all the tests, but doesn't work the way you want it to, your tests are not good, i.e. you requirements are wrong or incomplete.

      The main argument against XP is that some systems are so complex that you cannot build tests to cover all the functionality. Take for example a Quake engine. The combinations of objects, positions, orientations and actions are virtually infinite, so it is impossible to write tests to cover everything. For a system like this XP is not the right approach, and the creators of XP would tell you that.

      --
      "I don't know half of you half as well as I should like, and I like less than half of you half as well as you deserve."
    2. Re:reliability by lfourrier · · Score: 1

      do now, think later perhaps, but most projects cannot (because of complexity, time to market, whatever (and often incompetence or political agenda from some skateholders)) be totally conceived before the act. And RAD, despite its shortcomming, has proved that interactive versions permits users lo evolve a system for their needs, because they see it concretly.

    3. Re:reliability by s88 · · Score: 2, Interesting

      So let me guess...

      You are one of the many who have never read more than two sentences about XP, and jump to the conclusion that because eXtreme is in the name it must be hacking.

      I think your assumptions are the exact opposite of what is actually true; "extreme programmed" programs should be more reliable, because they don't guess for tomorrow. If XP is done right, what you have is what you need...nothing more. This is the essence of KISS. If you can't make it reliable by doing the simplest thing possible that solves the problem, I shudder to think what you will produce if you are guessing for tomorrow and adding things you don't need.

      There are plenty of studies... just google for them.

      Scott

    4. Re:reliability by monadicIO · · Score: 2, Insightful

      your requirements are defined by your tests
      I'd expect many real-life systems to be complex enough that exhaustive testing is not practical. My point is that there needs to be a formal approach to s/w development. As Dijkstra said, testing reveals the presence of errors but not their absence. In safety critical environments, while testing is necessary, it cannot be and shouldn't be deemed to be sufficient.
      Again, I'm not passing a blanket statement on ``XP'', I'm merely asking if there is enough statistical evidence of its reliability.

      --

      The law of excluded middle : Either I'm foo or I'm foobar

    5. Re:reliability by kryzx · · Score: 4, Interesting

      Your points are good. By designing well you prevent errors now and in the future.

      I guess my issue is that the XP approach does not dictate anything about design. You can and should design well even when doing XP. In fact, in the original book there is a lot of talk about continually reworking the design to simplify and clarify it, and avoiding the temptation to add complexity that is not necessary at the moment, just in case it's needed in the future.

      So, I think of XP as a set of tools, none of which restricts or prevents good design.

      It would be interesting to collect stats on projects are compare reliability produced by different design methologies, platforms, languages, tools, etc., looking for correlations, but XP is just one piece, and does not equate to a design methodology.

      --
      "I don't know half of you half as well as I should like, and I like less than half of you half as well as you deserve."
    6. Re:reliability by William+Tanksley · · Score: 2, Interesting

      I guess my issue is that the XP approach does not dictate anything about design.

      Actually, it explicitly does. One of its practices is Testy Driven Design: every element of the programmer's design is expressed in the form of a test, written in automatically executable form before anything is added to the code.

      Another rule XP requests is to minimise Big Design Up Front: don't do design on something else else until you've proven the design for what you just did. In other words, don't design something and then leave it unimplemented; let every implementation be completed as close to its design time as possible.

      I don't use XP, since my company has its own methodology (CMM level 3); I do use Test Driven Design. It works extremely well, and has the pleasant side effect of producing tests to hand in with my code for no additional effort. Given what I've experienced with TDD, I would take up XP in a heartbeat.

      So, I think of XP as a set of tools, none of which restricts or prevents good design.

      XP is not a set of tools, although there are one or two practices in XP which make sense outside of XP (for example, pair programming can be imagined in another context, and TDD works very well without XP). Rather, it's a complete methodology, much like the Spiral methodology or the much-feared Waterfall (and no, waterfall isn't a myth; I've seen it used a couple of times, and most of the rest of the time it's a good approximation).

      -Billy

    7. Re:reliability by William+Tanksley · · Score: 4, Interesting

      Somehow, I would never trust an "extreme programmed" program.

      Would you ever trust any other program in this sense? Just curious.

      I feel (perhaps just a prejudice) that

      Sounds that way. Unless you have some facts that you haven't shared with us...

      extreme programming is a "do now, think later" kind of approach.

      No, it's the other way around -- "think now, do now." You're supposed to do things as you think of them -- when you come up with a clever design, don't write it down and walk away; instead, codify it as a test and then implement it. All the practices of XP are supposed to come together to prevent premature or delayed action: pair programming ensures that every idea put into code is understood enough to be explained to your peer; TDD ensures that every change made to code actually _adds_ some functionality; and so on.

      I'd be interested in knowing if there have been studies with respect to reliability of extreme programmed projects.

      A very interesting question! I think that we'll have answers on that in about five years. XP as a movement is a little new; very few companies have had a chance to adopt it, and only a few formal projects have been run with it.

      Until then, any XP shop wishing to perform a high-reliability-required task would be wise to adopt some of the known reliabilty practices -- formal reviews, for example.

      -Billy

    8. Re:reliability by phamlen · · Score: 3, Interesting

      In our current project, we've achieved a reliability improvement of almost 2 orders of magnitude based on our XP methodology, and it's increasing every day.

      It's actually difficult to track because the original project didn't monitor error rates particularly well. We do know that they had more than 1000 errors over 14000 "processing cycles" (a defined chunk of work.) Our current system has had 7 errors over 7000 "processing cycles".

      The vast majority of these improvements come from Pair Programming and Test-Driven Development.

      And - of course - we now have tests for those 7 errors!!!

      (For those who care, a "processing cycle" has about 10 feature-points that are executed - so the original error rates are somewhere around 1% (pretty dang high) and ours is around .01%)

    9. Re:reliability by kryzx · · Score: 4, Insightful
      The XP practices dictate how you capture and prioritize your user requirements and how you test your code, and they encourage simple and immediately neccesary design, but they do not dicatate anything about how you actually code your application.

      The practices try to make it easier to produce good code design, but they could be applied to any design methodology. You could do XP Object-Oriented or not, with Java, COBOL, perl, basic, or assembler. There is nothing to make your software design good or bad except your skillz and the developer sitting next to you.

      So, I'd say XP doesn't enforce any coding methodology, but tries to create an environment that encourages good habits.

      Maybe we are having semantic issues. I was talking about the methods for designing at a fairly low implementation level the actual code that makes an application work - the parent comment here expressed concern about code made under XP being sloppy. That's what I meant by design. If you talk about RUP or Waterfall as a design methodology then obviously they are incompatible with XP.

      --
      "I don't know half of you half as well as I should like, and I like less than half of you half as well as you deserve."
    10. Re:reliability by BitwizeGHC · · Score: 1

      Despite the name, Extreme Programming is not a bunch of guys shredding down Mount Snow, chugging Mountain Dew, and simultaneously punching Java code into their hiptops. It's a methodology of making damn sure you know what your customer wants, an making damn sure your program satisfies those requirements.

      I don't know a lot about it myself, but in certain domains it tends to produce good results.

      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
    11. Re:reliability by William+Tanksley · · Score: 1

      The practices try to make it easier to produce good code design, but they could be applied to any design methodology. You could do XP Object-Oriented or not, with Java, COBOL, perl, basic, or assembler.

      You do know that those aren't design methodologies, right? XP is a lifecycle methodology, and thus includes a design methodology, as well as systems and practices which attempt to ensure that the methodology is followed.

      There is nothing to make your software design good or bad except your skillz and the developer sitting next to you.

      Wait, don't forget about all the other developers who'll be refactoring your code, and the tests which serve as much to document the original intent of changes as to test the continued validity of the changes, and the constant integration which keeps your code polished, and weekly or biweekly product deliveries that keep your customer in the feedback loop, and the planning game that makes sure important requirements are found and developed for, and...

      So, I'd say XP doesn't enforce any coding methodology

      You'd be right, but this is the first time you've said that; you've been talking about design methodologies before.

      , but tries to create an environment that encourages good habits.

      Nope, not XP's job -- that's for the team to do. You could say that XP describes a set of "good habits", and how they interrelate to reinforce each other.

      I was talking about the methods for designing at a fairly low implementation level the actual code that makes an application work

      Do you know the difference between "design" and "implementation"? I ask because in the above sentance you mix them up.

      the parent comment here expressed concern about code made under XP being sloppy.

      The parent comment poster should speak for himself, but I have to say that I did NOT see that in his post at all. What I saw was that he felt that code produced using XP would be unreliable: in other words, it would fail to meet requirements all or part of the time, either due to bad understanding of the requirements, bad solutions to the requirements, or bad implementations of the solutions.

      That's what I meant by design.

      Well, that's not design. That's coding standards. XP addresses those too, but leaves all the details to the team doing the actual work.

      If you talk about RUP or Waterfall as a design methodology then obviously they are incompatible with XP.

      So are you agreeing that XP includes design methodology?

      BTW, minor point: RUP is a flexible system which can include XP. See Rational's own website for what I'd consider dramatic proof.

      -Billy

    12. Re:reliability by johann909 · · Score: 1, Insightful

      to the contrary. one principle of extreme programming is to "write your tests first" with a test suite like jUnit. doing this makes you think hard about the behavior of functions you write.

    13. Re:reliability by dubl-u · · Score: 1

      In our current project, we've achieved a reliability improvement of almost 2 orders of magnitude based on our XP methodology, and it's increasing every day.

      This matches my experience, too. I'm well below one shipped bug per man-month.

    14. Re:reliability by dsoltesz · · Score: 1
      I don't know, a couple guys at work were doing XP style programming before the term was invented, mainly to rewrite a very large software package (written in assembler)in C. They found the "co-pilot" approach very useful, possibly even more so because they have complementary talents.

      One of the guys is now the leader of a programming team and has been trying to get his team to use XP - if not all of it, at least some of it. As one of the books on the subject has said: you have to have the right people with the right personalities and working style to make XP work.

      Just like anything, no method is perfect - it has to be adapted for the project/team/etc. Pure XP might not be the perfect answer, but certainly it has some good ideas that can be integrated at a team, project, or even sub-project level.

    15. Re:reliability by Anonymous Coward · · Score: 0

      First you jump into the ocean and if you dosurvive, if you do, then learn to swim.

    16. Re:reliability by Anonymous Coward · · Score: 0

      All this Extreme stuff is to for people to cover up their incompetancies by hiding behind a proceses. All REAL engineers that I know of despice processes, be it XTreme Programming, UML or whatever.

    17. Re:reliability by Anonymous Coward · · Score: 0

      jUnit is a load of crap. Get a QA person to do the real testing.

    18. Re:reliability by Anonymous Coward · · Score: 0

      On the contrary, I am in the process of re-writing a XP based, UML designed program that is unnecesarily bloated, poor perfomance, poor testing (test that pass, but app is still wrong) and have re-implemented it whth very high stability and very few bugs. The XP guys have been taking the company for a ride.

    19. Re:reliability by Anonymous Coward · · Score: 0

      Thats just it. XP is not what makes a project succeed, a good team does. Give credit to your team and not a stupid process.

    20. Re:reliability by Anonymous Coward · · Score: 0

      I didnt write this with XP, hence the errors.

  5. Buzzword compliant. by bscanl · · Score: 3, Insightful

    Sounds like it hasn't got much actual XP in it.

    Surely not another book with a buzzword in the title that doesn't actually focus on the alledged subject at hand?!

    1. Re:Buzzword compliant. by boogy+nightmare · · Score: 0, Troll

      extreme programming.....

      programme now worry about problems later....

      sound like theres a lot of XP in it.....

      hehehe

      --
      Kingdom of Loathing (www.kingdomofloathing.com) Addicted is me
  6. wtf by Anonymous Coward · · Score: 5, Insightful

    when was the last time you saw a select statement on a web page ?

    About 10 seconds ago on my current project. I fail to see why I should make a seperate file and include it for one SQL statement, or even for the 20 or so I use...

    Can anyone explain the logic behind this? If they mean "when was the last time you saw SQL directly put in the html", then the answer would be never apart from the mysql manual...but then surely thats obvious...if they mean "when was the last time you saw SQL in a page-generating script", then I don't get the problem.

    1. Re:wtf by mattc58 · · Score: 3, Insightful

      Yeah, you want your SQL well away from you presentation level code. Besides any architectural and performance reasons, it's just good practice for maintenance. Your presentation layer really shouldn't care/know that the data it's putting on a screen is coming from this table on that database on that server. It should be a few layers below this that you get into these kind of fun details.

    2. Re:wtf by Pov · · Score: 2, Insightful

      I would presume they were referring to using stored procedures instead of straight SQL on the page, but if that's the case, then I see it all the time too. I code almost everything to use stored procedures, but occasionally where a complex SQL statement is being dynamically built, it's easier to just code it on the page than try to put all the same logic into a stored procedure that probably won't receive the pre-compiled benefits anyway because it differs too much from run to run. Then again, I could be completely wrong on what they meant. :)

      --
      --- Don't be a player hater: I meta-mod ALL negative mods as Unfair.
    3. Re:wtf by clearcache · · Score: 5, Insightful

      You are precisely right...and this hits upon the reason why so many websites are unmaintainable.

      Many web programmers don't know the difference between the presentation layer, business logic, etc...and they just throw it all together. You end up with a site that works great in its current version...but is a bear to add functionality to or redesign visually.

    4. Re:wtf by aug24 · · Score: 2, Interesting
      They are referring to the principle that there should be:

      a presentation layer, eg jsp over a presentation package, eg tags
      and
      a business logic layer, eg java classes over a data abstraction layer, eg bc4j

      If you do this, you get re-usable, maintainable code. If not, and you're building anything bigger than a pretty noddy app, you're not going to be able to do anything with it six months after the initial build.

      Hell, I've even built noddy apps badly and had a hard time maintaining them six months later.

      Incidentally, wtf is extreme programming? Somebody?

      --
      You're only jealous cos the little penguins are talking to me.
    5. Re:wtf by SpaceTaxi · · Score: 1

      I would guess that there are a lot of folks, like me, who started scripting Web pages using examples from books and Web sites, but probably delayed in making the jump to using modular programming techniques, such as modules or classes.

      When I pulled out my first Perl cookbook, I learned how to write code to parse a get request from top to bottom. I guess this was worthwhile to learn and get aquainted with the language. It took a little while, however, to find out and start using available modules, but it felt like finding a "holy grail" to me at the time.

      Learning to work with classes has also been quite mind blowing, and of course these techniques enforce a kind of multi-tiered approach to writing scripts. The advantages are huge, in terms of maintainence and reusability, not to mention the saving of thousands of innocent brain cells that I would have to keep occupied trying to remember mundane snippets of code that are now safely abstracted and forgotten.

      I guess there are probably some books out there that cover "best practices" for coding, but I would love to hear about any recommended titles that do a good job of helping a programming newbie successfully transition into these techniques, without getting lost in the complexity.

      Cheers!

    6. Re:wtf by Biff · · Score: 1

      Sounds to me like you need to get grips with some basic design patterns, which requires a copy of the infamous Gang of Four book:

      Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (ISBN 0-201-63361-2).

      Essentially what they lay down is a simple catalogue of re-usable designs for simple and ubiquitous problems. Or to shamelessly rip from the preface:

      "This book isn't an introduction to object-oriented technology or design. Many books already do a good job of that. This book assumes you are reasonably proficient in at least one object-oriented programming language, and you should have some experience in object-oriented design as well. You definitely shouldn't have to rush to the nearest dictionary the moment we mention ``types'' and ``polymorphism,'' or ``interface'' as opposed to ``implementation'' inheritance."

      See http://hillside.net/patterns/DPBook/DPBook.html

      --
      -- Paul
    7. Re:wtf by Eagle2001 · · Score: 1

      The problem is, a lot of sites use PHP and MySQL - please tell me how in MySQL I can use stored procedures?

    8. Re:wtf by mattc58 · · Score: 1

      Well that's a deficiency MySQL is presently fixing, but in the meantime just don't use stored procedures. You still need to split your code into tiers, but your data access tier will just use dynamic SQL, no SPs.

    9. Re:wtf by onenil · · Score: 3, Interesting

      While I do know the difference between the presentation layer, business logic, and data storage - what if the customer doesn't actually know the full requirements of the site (or indeed a specific section of the site) prior to them wanting it to go live?

      I personally love working on projects where the presentation logic is separated from business logic, but unfortunately the majority of my customers need it in production yesterday, and have no time themselves to actually go through the requirements, nor are willing to commit to requirements that will no doubt change in 3 months time.

      And for them, I believe, its just a matter of being in the business they are in - their core business has practically nothing to do with I.T. (short of perhaps the checkout scanners at the front of each of their stores). Its only that they are a nation-wide company, and therefore have an image to uphold.

    10. Re:wtf by onenil · · Score: 1

      Extreme Programming, from what I've seen, is a development process theory that fits in well to where "crap development" (tm) occurs. i.e. it is a cycle that allows for quick deployment while doing things properly at the same time. Google knows (google in austalia is a cool thing btw!).

    11. Re:wtf by clearcache · · Score: 1
      From a page discussing MySQL best practices: (http://www.onlamp.com/pub/a/onlamp/2002/07/11/MyS QLtips.html?page=2)
      7. Do not mix display code and database code.
      It is very difficult to maintain an application in which database code mingles with display code. An example of such a monstrosity is a JSP page that contains JDBC code. This situation should never happen.

      Instead, applications are much easier to maintain when you divide application logic according to the model-view-controller (MVC) design pattern. This best practice applies both to Web programming and GUI application programming. In short, MVC forces you to split your code between the model (a component housing your database code), a view (a component that describes the user interface), and a controller (an object that handles user actions).
      For more info on using MVC with php, visit the sourceforge site
      http://sourceforge.net/projects/phpmvc/ as a start. It's interesting stuff - and I admit, I don't always follow the rules and throw SQL in there sometimes myself. As you say, the lack of stored procedures makes this very tempting.

      A note of warning, one of PHP's weaknesses IMHO is the lack of mature frameworks like MVC... Does PHP need MVC for what it's most commonly used for? Probably not. Would it be great for those of us that want to use it to build web solutions to complex problems? Probably.

      ...and MVC is just one way to do it in PHP. I'm sure there are plenty of other ways to attack the problem as well. And if you're interested in non-PHP solutions, check out Velocity, a java-based template engine: http://jakarta.apache.org/velocity/index.html
    12. Re:wtf by clearcache · · Score: 2, Interesting

      I feel your pain - I really do. We deal with those types of customers every day and it's enough to drive me to drink...it usually does. But I think you'll find that you'll be saving time in the long run by adopting some of these principles in every project.

      The Jr. members of my team don't understand how I can make major changes to some of my programs in hours when it takes them days to make simple changes. Well - it's all about the rewrite. I don't find myself rewriting my code as much as I used to...it was like the day I learned that by writing object oriented code, I didn't need to completely reinvent processes to make modifications...just add new methods or - in cases where requirements change - new methods+properties.

      And - what I always tell my coworkers - if they needed it yesterday, it's already late. Take 2 hours and come up with a good plan...

  7. The last time I saw a select statement ... by jlanng · · Score: 5, Interesting

    When was the last time you saw a select statement on a web page

    Almost every ASP project I've seen has embedded SQL in the presentation pages (.asp files). Yuck.

    .Net goes some way towards alleviating this as the code is usually placed in a paired class (codebehind).

    1. Re:The last time I saw a select statement ... by mattc58 · · Score: 1

      The code behinds do help, but SQL shouldn't be in there either. Put it in another tier (or two preferably) behind.
      Same as Java or any other multi tiered system. Presentation-->Code behind(for .NET)-->Business Objects-->Data Access Objects-->Database.

    2. Re:The last time I saw a select statement ... by jlanng · · Score: 1

      The code behinds do help, but SQL shouldn't be in there either

      I couldn't agree more.. but you know it will :)

    3. Re:The last time I saw a select statement ... by Petronius · · Score: 2, Insightful

      When is the last time you worked on a production system? Every ASP, JSP or PHP app I know has them. Eventhough lots of people talk about MVC and Model 2 stuff, very few people actually implement solutions that way: it takes more planning, the code/build/test cycle is longer, etc. People cut corners, it's a fact of life.

      --
      there's no place like ~
    4. Re:The last time I saw a select statement ... by los+furtive · · Score: 1

      Take a lesson on MVC and learn why that is the 'bad' way to do things.

      --

      I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

    5. Re:The last time I saw a select statement ... by (H)elix1 · · Score: 1

      Take a lesson on MVC and learn why that is the 'bad' way to do things.

      Usually followed by some crazy deadline - good people do bad things all the time. God knows I've hacked out some ugly stuff while the sales guy is doing a demo....

    6. Re:The last time I saw a select statement ... by dsevans93 · · Score: 1

      i have a custom tag i use in JSP pages that presents rows of objects, each with several properties that can be sorted on and searched on, and links at the
      end of the row to edit and delete the object.
      the rows come from a database. the body of the
      tag is a sql statement which clarifies exactly which rows and fields to get. the tag has parameters which point to the templates for the look and feel of the table and the rows. i use it over and over with no modification. it takes about 15 minutes to set up. whats the "better way"?

    7. Re:The last time I saw a select statement ... by DA_MAN_DA_MYTH · · Score: 1

      Take a lesson on MVC and learn why that is the 'bad' way to do things.

      Usually when you take "a lesson" on MVC, theinstructor tells you it's the 'good' way to do things.

      --
      "It takes many nails to build a crib, but one screw to fill it."
    8. Re:The last time I saw a select statement ... by Anonymous Coward · · Score: 0

      When is the last time you worked on a production system? Every ASP, JSP or PHP app I know has them. Eventhough lots of people talk about MVC and Model 2 stuff, very few people actually implement solutions that way: it takes more planning, the code/build/test cycle is longer, etc. People cut corners, it's a fact of life.

      So, because there are twits in the world, we should strive to be like them?

      FWIW, our system has the SQL several layers back (table objects are generated from description files, the (few) web programs use those objects, or usually higher level objects). Yes, it's production, Fortune 500 company, etc.

      And we wouldn't be caught dead using PHP or ASP... Java's way overhyped and annoying to code in... but Perl is the way to go: stable, huge library, easy to use, programmer friendly, well documented, good but not overbearing inline documentation facility, fast (and if more speed is needed, we drop to C).

    9. Re:The last time I saw a select statement ... by LibertineR · · Score: 0

      CodeBehind is great, but it's not the place for SQL statements either. The place to do this is either as a referenced connection class, or as a statement in the Web.Config XML file, using the App.Settings tag element. Then all you have to do is create a key value back to this setting in your codebehind rather than the direct connection string.

    10. Re:The last time I saw a select statement ... by Petronius · · Score: 1

      I was merely commenting on the reviewer's skills. it is a fact that people embed DB access, business rules, in the UI code. They've been doing this for ages. The fact that the reviewer thought the author's comment was dumb shows me that the reviewer has no practical experience with the subject matter.

      I agree with you on the rest of your comments. I don't think PHP or ASP are any good. We use server-side Java/JDO to do most of our development. Large project. (Once a) Fortune 500.

      --
      there's no place like ~
    11. Re:The last time I saw a select statement ... by los+furtive · · Score: 1

      My bad for not qualifying the that in my statement. The that in question was in regards to calling SQL from the view tier. Thnx for pointing it out.

      --

      I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

    12. Re:The last time I saw a select statement ... by los+furtive · · Score: 1

      A demo is one thing, as far as I'm concerned, unless the demo is for an established product, then it is no holds barred do what you can to win the sale (even if that means your 'server' is a guy in another room feeding responses, hehehe). But if you have an existing app and your app has SQL in the view, well then get off your lazy ass and fix it, if you aren't doomed already.

      --

      I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

    13. Re:The last time I saw a select statement ... by Anonymous Coward · · Score: 0

      Model 2 with ASP/PHP/JSP? I think I know why you haven't seen it, and it's not related to cutting corners.

    14. Re:The last time I saw a select statement ... by (H)elix1 · · Score: 1

      I've watched demo/poc code go into production land way too often. The customer demands 'mars mission' grade code, but pays for enough time to duct tape a couple milk cartons together.

      I agree though, if you have the time -- for the love of god do it right. Few things are as ugly as being the next one in after a krufty hack-fest.

    15. Re:The last time I saw a select statement ... by tshak · · Score: 1

      In most cases SQL should not be found in the "codebehind" (essentially an abstract object in which the aspx page inherits), as the codebehind is generally very specific to the presentation. Unless dynamic SQL is being generating (which should be upon RARE exception), a DAL (Data Access Layer) class or a Utility class (eg: PersonUtility for the Person object) should be the only places that access a backend datastore, and for a database one should just reference stored proc's.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    16. Re:The last time I saw a select statement ... by dubl-u · · Score: 1

      Eventhough lots of people talk about MVC and Model 2 stuff, very few people actually implement solutions that way: it takes more planning, the code/build/test cycle is longer, etc. People cut corners, it's a fact of life.

      And most software projects also fail. There's a correlation.

      Cutting corners with software is generally a false economy. You may get to the first release faster, but cut corners add up exponentially. By starting out cutting corners, you're betting that the project will fail.

      Instead of cutting quality, wouldn't it be better to cut out useless work?

      I don't think I've ever seen a requirements document that isn't at least half fluff. In XP, every week you force the product manager to pick the very most important features to work on. On an XP project, most of fluff never rises to the top of the pile. Once you cut that crap out, there's plenty of time to do quality work.

      And if you're doing test-driven design and pair programming, your bug counts will likely drop by an order of magnitude. If you spend hardly any time on debugging, that frees up a lot of time, too.

    17. Re:The last time I saw a select statement ... by Petronius · · Score: 1

      Search for MVC on Sourceforge and you'll find over 50 projects that use the MVC methodology. Most of them use Java. Some PHP projects out there and I'm sure there's a C# implementation somewhere... So what's your point?

      --
      there's no place like ~
  8. OK this one isn't great, but is there a great one? by japes · · Score: 2, Interesting

    Is there a good book out there on this exact topic? I enjoyed 'Clouds to Code' and 'Design Patterns' and was hoping that there was a another book that delved into designing singular web projects ( with availability later on to pick off the shelf and change simply for new customer ) as well as integrating XML and SQL services.

    Does anyone know of any good suggestions?

  9. Re:Jesus Saves! by TheCrackRat · · Score: 3, Funny

    Allah Invests!

    --
    Ignorance is not linguistic drift.
  10. SQL in web pages by gmuslera · · Score: 2, Insightful
    "Many programmers put SQL code right on a web page" -- when was the last time you saw a select statement on a web page ?

    I think the author mean in php/asp/other embedded languages pages, where finding plain sql code (instead of calling a library that hides for portability the sql code) is very common yet.

    Of course, that don't display in the visitor browser, at least, not unless is intended (.phps) o "accidental" (the old ::$DATA that showed the .asp code), or is part of the debugging process (visible or in the html generated code)

  11. XP is a manager's dream by HarmlessScenery · · Score: 5, Insightful

    How else can you do a major cost cutting exercise (only buying half the PC's you actually need) and at the same time con your geeks into believing that you are following the leading edge of software dev ?

    1. Re:XP is a manager's dream by dismayed · · Score: 2, Informative

      You need more computers overall, because you have development machines, then usually your own "personal area" where you can handle email and manage your personal life... unless I misread Planning XP. :(

    2. Re:XP is a manager's dream by Simon+Lyngshede · · Score: 2, Insightful

      Actually managers hate XP. Time planning in XP is much harder than with traditional software development. In XP you can't say "We're done implementing in 4 months" Managers like development that follow the waterfall model, simply because time managing it more clear. Except form that fact that you only need half the PC's, there are no real cost cutting, not in larger projects at least.

      Blindly following XP for every project you do is a bad idea. XP bad choise for many projects. Read "Extreme Programming Explained" and you will see that Kent Beck agrees. Also never comment on the glory of XP without knowing other software development technics.

    3. Re:XP is a manager's dream by pixel_bc · · Score: 1

      > Actually managers hate XP

      That's a blanket statement that's not entirely true -- our shop uses it quite a bit... and the Manager are just fine with it. And no, things don't ship late.

    4. Re:XP is a manager's dream by dubl-u · · Score: 1

      Except form that fact that you only need half the PC's, there are no real cost cutting, not in larger projects at least.

      I'm not sure that's the case. XP's scope control techniques have cut costs substantially in the projects I've done. Ditto for the defect reduction. Is your experience different?

  12. Next week's review: X for Y by Mirk · · Score: 5, Funny

    Anyone else notice the incredible range of books with titles of the form X for Y recently? Extreme Programming for Web Projects. Lifecycle Management for Java. Python for Information Engineers. Buzzword Awareness for Techies. Cluefulness for Suits. There seems to be no end to this trend ...

    --

    --
    What short sigs we have -
    One hundred and twenty chars!
    Too short for haiku.
    1. Re:Next week's review: X for Y by DannyO152 · · Score: 1

      Infinite Trends for the Transient.

      We'll collaborate: have your agent get a hold of my people.

    2. Re:Next week's review: X for Y by ceeam · · Score: 1

      What would you want:
      Buzzword Awareness and seven Techies?
      The Clueful and The Suit? ... :-)

  13. oh i see by xao+gypsie · · Score: 0

    are likely to get hung up on the largely redundant side tracks

    so, then, the final review for this book is -1, redundant???

    xao

    --


    xao
    http://TheHillforum.hopto.org
  14. Ignorant Review by TheTomcat · · Score: 4, Interesting

    "("Many programmers put SQL code right on a web page" -- when was the last time you saw a select statement on a web page ?)"

    I think the author was refering to something like this:

    <html>blah blah blah
    <?php
    $sql = "select .... ";
    db_query($sql);
    ?>
    blah blah
    </html>

    and not actually displaying the SQL in the output of the page.. both are bad, but showing the user a query is worse..

    Too bad the reviewer doesn't seem to know enough about the subject to actually catch on to this.

    S

    1. Re:Ignorant Review by Masem · · Score: 1
      I agree to some extent that's probably what he meant, but it still comes down to the idea that there's poor separation of content and presenation. Both the average CGI backend (whether perl, python, whatever), PHP, ASP and JSP can suffer from this. Which means that typically the page designer and the web application developer has to be the same person, lest one get their SQL code in the other's HTML (and the other's HTML in the sQL code, etc...). It's not that any of these technologies can't be used to do, say, the Model-View-Controller method of data/presenation separation, but typically these concept is "taught" much later after teaching how to develope the full fledge web app with one source file. Yes, at some point, you should learn how you can do CGI arg parsing and HTML generation with the same script, but that's a nice simple test case to learn how CGI and web requests work. It then becomes a matter of building, or using existing, engines that help to separate the content from presenation.

      Right now I'm trying to (re)learn AxKit, which can be used to develop such; I provide an XML document (whether static or from some CGI request), use XSL stylesheets to take the XML to XHTML, then use good CSS practices to mark that up correctly. Other engines, like the Struts engine for JSP, do similar type of things. There's numerous libraries for Perl, Java, Python, etc, that allow one to adapt to existing services to help with that separation (for example, I'm thinking of things like the Template Toolkit for perl).

      I would think that the point that is being missed is that it's easy to write do-everything pages that don't separate content and form, but web apps that have good content/presentation separation are typically much easier to maintain and much easier to augement with new features.

      Now, as to how this can be done with XP (without having read the book), I question, since I would imagine that the advice suggests that the designer and the programmer are sitting at the same terminal by the usual XP philosophy. But that's a mystery left to the book.

      --
      "Pinky, you've left the lens cap of your mind on again." - P&TB
      "I can see my house from here!" - ST:
    2. Re:Ignorant Review by TheTomcat · · Score: 1

      my comment was on the reviewer's statement "how often do you see SQL on web pages", not on whether or not it's bad practice.

      It _IS_ bad practice. That's known by anyone who's been doing it for more than 6 months or a year. ASP, PHP, and JSP suffer, yes. In CFML it's inherant. (PHP and JSP less than the others).

      As to "how often", take a look around the PHP foundry on sourceforge, or the PHP restriction on freshmeat.. you'll find very few packages that actually separate database from presentation from processing (3-tier-like).

      That's one of the first signs of a "good" package.

      S

    3. Re:Ignorant Review by lordholm · · Score: 1

      I would suggest using WebObjects, Lasso or Tango, and you won't suffer from this problem.

      --
      "Civis Europaeus sum!"
    4. Re:Ignorant Review by LarsWestergren · · Score: 1

      showing the user a query is worse..

      Yeah, wouldn't it cut down the number of return visitors to your site if you expected the reader to process the SQL query instead of the web server?

      "Hi, welcome to my blog! Todays' topics for discussion are:
      {select c.title, c.date, s.name
      from current_news as c, submitter as s
      where c.submitter_id=s.submitter_id
      order_by c.date)}"

      ;-)

      --

      Being bitter is drinking poison and hoping someone else will die

  15. How much XP is there in the real world? by kryzx · · Score: 5, Informative

    I've had this in the back of my mind to submit as an "Ask Slashdot", but this is as good a place as any for it.

    XP was all the rage for a little while there. There was talk of it everywhere, especially here. I read about it some and became very interested in it. I think many of the core ideas are valid, and it seems like it would be a fun way to develop.

    Now that the hype has died down, my question is this: How many people out there are really doing XP? How much has this really caught on? Is it just a bunch of talk?

    If you are actually doing XP, tell me a little about:
    * the industry you are in
    * the kind of project
    * how it was done before
    * what prompted you to make the switch to XP
    * how that switch work and how long it took
    * and how things have been since moving to XP
    * do you know others doing XP, if so how many

    Thanks for sharing your experience.

    --
    "I don't know half of you half as well as I should like, and I like less than half of you half as well as you deserve."
    1. Re:How much XP is there in the real world? by dismayed · · Score: 1
      You should read the articles on Symantecs' convertion to using XP internally. There are two articles, one in the January issue and another in the Febuary issue... the article summary said:
      EMBRACING CHANGE Going to Extremes Adopting Extreme Programming practices, Symantec developers, testers, technical writers and managers took a calculated leap into the agile unknown--and even the executives are impressed. By Alexandra Weber Morales

      If you read those articles you'll get some excellent answers to your questions.

    2. Re:How much XP is there in the real world? by dismayed · · Score: 1

      Of course I would forget to mention that those articles are from Software Development Magazine...

    3. Re:How much XP is there in the real world? by kryzx · · Score: 3, Informative
      Thanks for the lead.

      With the help of Google I found the article here:

      http://www.informationweek.com/story/IWK20020111S0 046

      --
      "I don't know half of you half as well as I should like, and I like less than half of you half as well as you deserve."
    4. Re:How much XP is there in the real world? by ewwhite · · Score: 1
      There's PhotoXP :)

      http://djedwhite.com/photo

      Pair-programming really works!

      --
      Edmund White
      http://flickr.com/ewwhite
    5. Re:How much XP is there in the real world? by jeorgen · · Score: 1

      If you are actually doing XP, tell me a little about:

      * the kind of project
      Web based publishing systems, cross publishing systems, search engines, log analysis.

      * how it was done before
      Pretty much like XP, but not so formalised. I.e. the customer was in charge, no hard contracts but rather a relationship and mutual trust with customer, delivering a quick bottom line solution first and then add features on request..
      * what prompted you to make the switch to XP
      It made good sense judging from my own experience. My degree from University is in Systems Development methodologies, and I have always found the ones we were taught to be very bureaucratic. I also worked as a project leader in a research environment were we used a lot of prototyping.
      * how that switch work and how long it took

      We're not yet ready with any smooth running unit testing framework, but it took maybe one month to get pair programming and stories to function well. The company is Webworks (in Swedish), BTW.

      * and how things have been since moving to XP

      Very relaxed, no worries, although I have a tendency to burn out when I'm driving in pair programming since I can go so fast now. Customers are happy too.

      " * do you know others doing XP, if so how many"
      Nope

      /jeorgen

    6. Re:How much XP is there in the real world? by orenmnero · · Score: 4, Informative

      About two years ago I bagan using an XP style approach, or at least adopted many of the practices. Most notably Unit Tests with a Test First approach. Coded Functional Tests and Continuous Integration

      To answer your questions one by one:

      * the industry you are in

      Financial Industry ( focusing on real-time trading application in the options, futures, and equity industries )

      * the kind of project

      Mostly applications that either provide infrastructure for doing electronic trading, or applications that implement particular trading strategies.

      * how it was done before

      The sorts of applications I would work on were often quick prototypes that were meant to exploit an opportunity in the market. This would often mean lots of shortcuts were taken because chances are the code would be thrown away anyway. Problem is that once in a while an application will become become succesful and grow out of one of these prototypes. Since little time was available for proper design, such applications generally became a maintenance nightmare as they kept growing. XP solved this problem by provideing a framework that allowed me to only design what I need when I need it, but enabled me to radically alter the design if ever necessary.

      * what prompted you to make the switch to XP

      I was exposed to it by some people who were working on a project at my company. I found many of the practices allowed me to create "prototypes" just as quickly as before, but with a higher degree of reliability and a framework that allowed them to grow as requirements changed. I was really sold on it when I saw how simply I was able to implement pieces of functionality that had previously just seemed more complicated.

      Pair Programming gets a lot of flak. But really I fully credit it for getting me interested in these techniques. Because I generally paired with someone who knew these practices better than me, I was able to actively see the value of these practices while writing production code. It was far more of an eye opener than reading any book or article.

      A lot has been said about Pair Programming that is just not true. It does NOT mean that there is one computer for every two people. Everybody has a machine. Just because you try to write all production code in pairs doesn't mean that everything is done in pairs. Also, you do not get paired up with someone like a ball an chain. Pairs switch, sometimes several times a day. Pairs are NOT assigned. If I need to write an ordermatching algorithm and I've never done it before, I'm going to try to pair with someone who has. By the time we are done with the task, we now have two people who know how to write an ordermatching algorithm. It's also untrue that one person is the designated typer while the other one just sits back and criticizes. Both people type, switching sometimes several times a minute while designing a class or method. Code is typed as a way to communicate concepts. If I want to convey the direction I think something should go, I write a little code. If the pair has another idea, he'll start tapping his ideas in the keyboard. It's a very actively collaborative process.

      * how that switch work and how long it took

      I haven't yet seen a project switch to an XP style process without problems, and from what I understand is that it is possible but slow. Part of the problem is that people who switch often do so from a less test-centric approach. This makes it difficult as XP is so reliant on aggressive testing to be succesful. It is also a new concept for many developers to take responsibility of some of the testing that has traditionally been soley in the domain of QA.

      * and how things have been since moving to XP

      Like I said, I have not been involved in a switch, but can speak about the difference I've seen between similar projects. One problem that I've solved in both a non-XP approach and an XP approach is in implementing the FIX protocol.

      This protocol is relatively simple, but it is rife with various possibilities for boundry errors, off by one errors, and complicated resend logic. The big difference I found is that I never broke old logic when modifying the code. Generally when doing development, you are only testing the piece of functionality you are working on, so you get that working, but you break something else. This might not be discovered for quite some time. With an XP approach, while developing, you test everything you've ever tested. You find out immediately if your changes break old code.

      Not only this, but despite the overhead of writing tests, I found functionality was implemented quicker, more reliably, and far simpler. Some of this was because I learned from previous mistakes, but primarily it was due to a different way to approach a problem.

      * do you know others doing XP, if so how many

      Yes. But they all do it a little differently. I have not seen two XP projects that look exactly the same. The core value I always see is the emphasis on repeatable tests.

    7. Re:How much XP is there in the real world? by Anonymous Coward · · Score: 0

      So kryzx wants to know more about XP. I'll bite.

      * the industry you are in

      I write Perl applications, often, but not always, for the web.

      * the kind of project

      I'm writing a very large scale data parsing and processing application. In effect, it's a bulk
      context-engine, inferring connections in data by studying patterns and keywords within large volumes of heterogeneous text.

      * how it was done before

      This is a new application. I'm using XP techniques to create version 1,0.

      * what prompted you to make the switch to XP

      Time to prototype, mostly. Because every functional element has one or more unit tests associated with it, I (and my client) can be assured that everything works as advertised at every stage of the development process. Likewise, every feature is documented when it's done.

      I've automated the roll-out process so that all tests are extracted and run, and all documentation is updated from a single command. So any time I want to roll a new version, I simply run a script, run make && make test. If everything passes, I'm done. Period.

      * how that switch work and how long it took

      I started using XP practices at my last job, and found it reduced the bug count by a huge factor. It also reduced the roll-out time by an order of magnitude. I was sold.

      * and how things have been since moving to XP

      I'm able to single-handedly maintain a very large project involving some fairly advanced approaches. I can release a new version in next to no time, and most importantly, I can be assured that the code behaves *exactly* as designed. And I have solid profiling metrics at every stage of the game.

      It's one thing to *trust* that your code will do the right thing. It's another thing entirely to *know* this.

    8. Re:How much XP is there in the real world? by Anonymous Coward · · Score: 0
      We have an XP-happy consultant in helping us with some J2EE deployment (taking .java files for jsp's, servlets and beans, compiling them into .war and .ear files and wrapping them up with misc. stuff into Solaris 'pkg' packages.

      He insists on peering whenever he can, and applies other XP approaches, and I like the results:

      • people are learning from his work, rather than coming to depend on it
      • he's applying the XP "do no more than you need to" thing to the Ant targets he's making so there's no cruft
      • he's taking bizarre 1400-line classes and refactoring them down into more manageable chunks etc.

      Okay, it helps that he's a really good developer anyway. But he's fixed some things that were broken, and managed to do a good knowledge-sharing and skill building excercise anyhow.

      I'm keen to see more XP.

    9. Re:How much XP is there in the real world? by dubl-u · · Score: 1

      Now that the hype has died down, my question is this: How many people out there are really doing XP? How much has this really caught on? Is it just a bunch of talk?

      The summer 2002 XPUniverse conference was circa twice the size of 2001. I expect that this year's growth will be at least 50%.

      But there was certainly a difference in tone between the two years. There was still a lot of evangelistic fervor, but there were a lot more average joes who were using it because it worked for them.

      Regarding your questions, I've been using it for dynamic web sites and application provided via the web. It works for me stunningly well. I make better software. I get more sleep. Both I and my clients are happier and more relaxed.

      For more info, drop by the XP mailing list; there are a lot of friendly people there.

    10. Re:How much XP is there in the real world? by Anonymous Coward · · Score: 0

      There seems to be so much trash talk about XP by folks who haven't tried it. Looking back over the past four years I can honestly say XP is the best thing that happened to software development at our company. And this is coming from a grizzled veteran of 22 years.

      For last 15 years I've been writing software for company that makes medical instruments. It's a tough market, because the FDA is all over us, and for good reason: if the software doesn't work as stated, people can die.

      Up until four years ago we used the waterfall model of development exclusively, then we made the jump to XP. I was a little leery of XP at first, but there is no denying the result -- XP produced the best tested, most rock-solid version of our product ever, with all the features Marketing wanted, and on a schedule Marketing was comfortable with. Smiles *all* around. This, folks, is not nothing.

      I don't think XP is for every programmer, but for the right mindset it's a blast. In our particular environment, our team of 8 voted to tear down all the cubicles and instead sit around one large table in a common "war" room, surrounded by whiteboards on all four sides. The table itself was packed with up-to-date PCs networked to common repository. The goal was that there should be no barriers to communications, and it was your responsibility to do everything you could to increase the flow of information. To that end, team member were encouraged to ask each other anything, at any time, simply by shouting a questions and answers across the table. It was similar to a loud, chatty newsroom: lots of conversation, plenty of funny, sometimes sarcastic humor, and some occasional swearing. A word of warning: if you don't have a sense of humor, the respect of your peers, or an ability to work in a noisy environment, you wouldn't last a week on our team; but we screen our new hires pretty carefully for this.

      Privately my biggest apprehension about XP was pair programming. I always considered myself a bit of a free thinker who works best independently, and I was certain I wouldn't like it. But I can't argue with the results. Although I'm a fairly adept Java programmer, it's humbling to see how much better the code is with another pair of eyes on it as its being created. On top of that, I got to work with some pretty top-notch folks; seeing others pick apart a problem definitely increased my analytical skills.

      At the end of the day, each programming pair checked their work into the repository using their initials as part of the version number; for us, this constituted a code review. No code ownership was allowed, which meant that 1) everyone got a chance to work on the things they thought was cool at least some of the time, and 2) everyone had a shot at improving the code. New unit tests were always written before writing code, and added to the growing suite of unit tests. Before checking in a code module the submitter had to run all unit tests, which by the end of the project took about 10 minutes (over 15000 assertions!). Every night an automated test engine would kick off 6 hours of functional test scripts to exercise the latest build... Every morning started with a ten minute "stand up" (a meeting where no one is allowed to sit down - believe me, this *guarantees* brevity) to review the previous day's progress, the evening's functional test results, any problems/cool things encountered, and plans/pairings for the new day. Overall product progress tracked by everyone on a big wiki web, which was also used to communicate with Marketing and other groups.

      What impressed me the most about XP was how satisfied our customer was. I'm speaking of our Marketing department. For once, Marketing finally felt like they were in control of the schedule. This was accomplished not by allowing them to dictate end dates (never works anyway), but by giving them, as the customer, full and exclusive control over the feature list. Our software team worked in four week development cycles called iterations. At the end of each iteration we'd get together with Marketing, show off what we have, and then have them tell us the features to implement for the next iteration. We could not change the feature list, nor argue with it - that was their call; however, they could not change our estimates for how long it would take to complete each feature. The schedule was totally in the customer's hands, at all times, as it should be.

  16. every day by mirko · · Score: 1
    "Many programmers put SQL code right on a web page" -- when was the last time you saw a select statement on a web page ?

    Well, I guess the author meant PHP's SQL statements' embedding...
    --
    Trolling using another account since 2005.
  17. Authors' Site by Chocolate+Teapot · · Score: 3, Funny

    I just visited the authors' web site at Agile.net. I think it tells us everything we need to know about this book. The home page looks as if it has been through a shredder. Fortunately I have a better back button.

    --
    Modest doubt is called the beacon of the wise. - William Shakespeare
    1. Re:Authors' Site by Anonymous Coward · · Score: 0

      Nyah nyah! I can click my fast-forward button on Opera and it'll take me from that crappy page to something I'de rather see... pr0n!

    2. Re:Authors' Site by 198348726583297634 · · Score: 1

      WHY wouldn't they spell-check their home page? CONCIEVE idiots!

    3. Re:Authors' Site by JWhitlock · · Score: 1
      WHY wouldn't they spell-check their home page? CONCIEVE idiots!

      In context:

      Our goal is to help clients concieve, plan for and implement powerful XML based websites and systems. - Doug Wallace, President, Agile

      Now that's what I call XTreme Editing! I'd probably add a hyphen ("XML-based"). But, it's a quote - maybe he really spelled it that way when he said it.

      I hope they ran the book through a spell-checker...

  18. Not a bad book by null+etc. · · Score: 5, Informative

    I've read this book recently, and must disagree with the reviewer's assessments.

    Although I'm not a fan of extreme programming (it seems counter-intuitive to my highly structured mind), the aspects mentioned by this book have accurately reflected the last five years of experience I've had as lead architect and developer at a custom development firm.

    Let me give an example. The reviewer condescends the book for assuming a "Strategist" role is necessary in a successful project, since the customer undoubtedly knows his or her own business.

    In my experience, which may not be the gospel truth, but is valuable nonetheless, the customers often do not know their own business. The individuals of an organization sometimes know nothing more than the rote daily routine with which they've been guided over the years. Ask them an insightful question about why or how a process came to exist, and they might give contradictory or vague answers. It is the role of the strategist to exhume the truths and necessities of an organization, which are not always superficial or easily understood.

    The reviewer also disbelieves that SQL code is ever embedded within web pages. Many quick and dirty (or under-engineered) web sites do use some form of embedded SQL, however. I'm often called in to clean up such sites, and make them more secure and modular.

    The book is admittedly light on related topics, and perhaps a more academic treatment of extreme programming would have been more useful. And I do agree with the reviewer in that many statements within the book seem like advertisements for the author's own company.

    Nonetheless, Extreme Programming is a practice understood by few (comparitively speaking), and this book serves as a good bridge between Extreme Programming and more structured development methodologies.

    1. Re:Not a bad book by GreyyGuy · · Score: 2, Insightful

      I agree with your assesment of needing a "Strategist" role. That is the role I take whenever someone comes to me with a new project. They may know their own business, but rarely understand automating it. They have a "process" hat mainly involves doing whatever seems right for that case- something very tricky to code. Or they want to collect data and generate reports that they don't have any real plan to use.

      Or even worse, they expect that just putting their processes online will magically solve all their problems. So a "Strategist" is definately needed to help set goals and expectations.

    2. Re:Not a bad book by aug24 · · Score: 1
      Let me give an example. The reviewer condescends the book for assuming a "Strategist" role is necessary in a successful project, since the customer undoubtedly knows his or her own business.

      I think a lot of businesses could use a techy to analyse their suggested processes. In my current contract, the first thing I had to do was go and see the business client to explain to them that the report they had asked for wouldn't support the business requirements they had.

      I shouldn't have had to do that... but...

      --
      You're only jealous cos the little penguins are talking to me.
    3. Re:Not a bad book by Zoop · · Score: 2, Insightful

      The reviewer condescends the book for assuming a "Strategist" role is necessary in a successful project, since the customer undoubtedly knows his or her own business.


      Not only do customers often not know their own business (or at least haven't thought about it in any systematic way), they generally have no idea of a) what's possible, and b) what's cheap, and c) what's good on the web. They get really caught up in features.

      I groan when I'm in a requirements meeting and I hear a client start, "Now, can there be a 'button' that..." Generally they get this image of a button and various form elements in their head, and don't really have the training to think it through, or even better, step back and think about what they're trying to do and what kinds of services can fit them--let the details work themselves out later.

      Clients who have this kind of blinder focus on details tend to have more unrealistic expectations and greater disappointment when the magical mind-reading system doesn't appear. They are very frustrated with the process of fixing this system in development.

      This isn't their fault. If this were easy, everybody would do...oh wait, everybody would do it well. They don't know that the system requires mind reading--they just assume several steps in between.

      Your average developer, head deep in code, doesn't have the business process experience to chain the processes together and see the problem until they get into the code and realize somebody forgot Phase Two: ... (I suffer from this occasionally). Then they may not have the best people skills to break this to the client easily, and things get testy. YMMV, but I've found this to be true slightly more often than not.

      Those who are really good, and they are rare, at Internet strategy tend to have experience in organizations (not necessarily businesses) and technology. Too little technology and they plunge off the cliff with the client (we have one of those in our company). This is why domain experts with tech experience are as valuable on Web projects as they are on traditional client-server projects.

  19. Reliability is the point. by Joseph+Vigneau · · Score: 5, Insightful
    Somehow, I would never trust an "extreme programmed" program. I feel (perhaps just a prejudice) that extreme programming is a "do now, think later" kind of approach.

    Then you don't understand the whole approach. XP evolved by taking good programming practices (automated testing, peer code review, "integration builds", client communication, etc.), and kind of going overboard with them. As a result, it typically generates higher quality deliverables. For example, in XP, before you write code, you write the test first. Instead of weekly code review meetings, you code with someone else. Instead of everyone writing their code in isolation, then slamming it together to see if it all works, you see if your code works together all the time. Instead of waiting for one or two business days to get a requirement clarification from the customer, you get that information from them much sooner.

    There are more practices such as these that make up XP. I've worked on many projects, particularly with the big consultancies, that use waterfall-type methodologies that fail. A 600 page design document is useless when the requirements change during the project, which they always do, due to market demands, time constraints, etc. XP is no silver bullet, but it makes a lot of sense after you've been through lots of projects that go over budget, without all the desired features, even after working 80 hour weeks.

    1. Re:Reliability is the point. by pmz · · Score: 2, Insightful

      I've worked on many projects, particularly with the big consultancies, that use waterfall-type methodologies that fail.

      There is generally no such thing as a true waterfall in a real project. When one occurs is usually an indication of design by committee and bureaucracy, where the project is doomed regardless of methodology.

      I really think latching onto a branded methodology, such as XP or RUP or Waterfall or whatever, for a project is the wrong approach, because it is only good management that makes XP or RUP or Waterfall or whatever work in the first place. The methods themselves are for informational purposes only. They can influence a managerial approach, but anyone exclaiming, "We follow XP methodologies," just looks silly and will invoke resistence from the more cynical team members.

      Good managers avoid thinking and speaking in terms of such buzzword methodologies, but they also freely admit that they learned something from those methodologies and applied what they learned to their own approach. Good arguments beat buzzwords when trying to convice the skeptics and cynics among us.

    2. Re:Reliability is the point. by Anonymous Coward · · Score: 0

      "You don't understand"....

      No, I do understand.

      "Test first" is among one of the reasons XP *IS* wrong in many applications. Testing the full domain rarely gets done correctly.

      XP is a term used as a more favorable way of saying "lack of discipline and order".

  20. Re:Jesus Saves! by teamhasnoi · · Score: 1

    and that's why he never has to use his backups!

  21. Fair ? by tmark · · Score: 1

    traditional web projects are structured to leave at least one of the parties taking a big risk ... see whether the authors have successfully outlined a fairer, more successful system

    I don't understand what is unfair about the supposed existing system. One of two parties, both of whom willingly enter into a contract, supposedly exposes itself to more risk: so what ? If the company is smart, it takes on that extra risk in the hopes that it will be able to realize a larger reward.

    The point is that both parties enter into the contract willingly and freely. So what can be unfair about that ?

    1. Re:Fair ? by dubl-u · · Score: 1

      The point is that both parties enter into the contract willingly and freely. So what can be unfair about that ?

      That's certainly fair, but that's not the point.

      If I can find a way to better share the risks and rewards with my clients or contractors, then generally strikes both me and them as more fair.

  22. Web security documentation by Anonymous Coward · · Score: 0
  23. Risks by joshsnow · · Score: 2

    A traditional web project? Has the web been around that long!?
    This book seems to assume that customers
    a) Know what they want
    b) Are capable of helping to formulate a realistic iterative dev plan
    In my experience, customers tend to want fixed price projects because they know how much they'll pay up front, but then they also want changes made at a whim if they don't like something, they often expect the developers to be able to read their minds regarding ill defined requirements and they expect it all to be defined, developed and delivered yesterday.
    The key to successful fixed price development is to make sure that the client understands their own requirements and understands that anything outside of that understanding is a Change Request for which they will pay over and above the originally decided project cost.
    Regarding Extreme Programming - one cornerstone of XP seems to be two developers working at one machine developing one Unit together. You'd have a hard time trying to convice someone managing a fixed price project to sign up to this as instantly, your costs for each unit double (managers can't see time savings).
    I think that if a customer can be persuaded to go Time and Materials and a realistic agreement can be made re: milestones between the developer and the customer, then you have the best of all worlds.

  24. Optional Scope is a non-starter by billtom · · Score: 4, Insightful

    Oh goody, another XP flame war on /. I might as well jump in the fire.

    Well, I worked at a web shop for a few years (though, that was during the bubble, maybe things have changed now) and I looked into using XP because many aspects of it seemed to fit our needs. But one aspect always hung me up and that was that XP projects are basically optional scope contracts.

    Basically, the clients always wanted to see the whole site (at least mockups) before they would sign off on the work. Even if we all knew that there was likely to be significant changes along the way.

    Saying something like "let's get broad agreement on the general nature of the site and then work in iterations to refine the details. Now please sign this contract for three months of work for four developers" just didn't work.

    Now, XP proponents will claim that this can be overcome by educating the client. I'll just say that that wasn't my experience. Optional scope contracts just wouldn't fly. Other XP proponents might say to hide the process from the client and make an XP project look, to the outside, like a waterfall with very flexible change management, but I wasn't happy with that sort of methodological dishonesty.

    I think that this problem with optional scope is a problem not just with web sites but with any project where contractor and client are different companies. Most of the XP success stories I've heard are on projects where the client is an internal division of the same company, so things are a little less confrontational and more flexible.

    1. Re:Optional Scope is a non-starter by Anonymous Coward · · Score: 1, Informative
      Saying something like "let's get broad agreement on the general nature of the site and then work in iterations to refine the details. Now please sign this contract for three months of work for four developers" just didn't work.

      We use a process inside fixed price/term contracts in which we kick off the project by refining the core scope/requirements with the customer. These are the higher level functional tests we must meet. These drive the initial High Level Design which is the kick off document.

      We then go into the process development identifying components that need to be written, lower level business processes that we must meet to match the functional tests etc. We run through that small cycle which is punctuated with a customer acceptance test on that component. Before the customer acceptance test, the High Level Design is modified to incorporate the design changes. At the end of this cycle we also produce an As Built document. Basically we use the code to drive the documentation. This is necessary for many government jobs in which the documentation component gets as much money as the code development phases.

      At the end of the customer acceptance test for the cycle we revise the requirements with the customer and go off on another short cycle (sprint in scrum). Each cycle drives the HLD and As Builts to their final customer form where it is the code development that is driving that process. Works pretty well for fixed price contracts where the phases include documentation as deliverables.

      omico--

    2. Re:Optional Scope is a non-starter by billtom · · Score: 1


      Your approach is a good one, and mirrored much of what we usually did, but I don't think that you can claim that what you described is XP (if that was the point you were trying to make). There's way too much up front design for what I understand to be real XP. (And yes, I do understand that XP doesn't say "no design".)

      I would classify your methodology as Evolutionary Delivery (as per McConnell's lifecycle definitions).

    3. Re:Optional Scope is a non-starter by Anonymous Coward · · Score: 0
      Your approach is a good one, and mirrored much of what we usually did, but I don't think that you can claim that what you described is XP (if that was the point you were trying to make).

      No I wasnt claiming it was XP, I certainly wouldnt call our methodology XP. We dont pair program for starters. We do a lot of government work so we had/have to find a methodology that works well inside a fixed price format. As well as working within the constaints government projects place on the development team.

      There's way too much up front design for what I understand to be real XP. (And yes, I do understand that XP doesn't say "no design".)

      I think a kick off requirement set is still fitting in with XP. What we call a High Level Design isn't what a waterfall methodology would call a HLD. We describe the business process we have to solve, the use cases we have to solve, initial schema and other design needs to support the system such as network design etc. Certainly the HLD isnt written in isolation, it is written in with full involvement by the customer. This helps in solidifying the functional tests as to what business process it must solve.

      In most government jobs the HLD is a deliverable so it is something that has to be done and delivered to the customer. Which isn't different to delivering working code. In most government jobs it requires some kind of review, often by an outside party or contracting firm as well.

      The main break from the past and especially with government jobs is making it clear upfront that as soon as code is written the HLD and As Builts are obsolete until that code cycle or sprint is over and the HLD and As Builts updated. It is much better than maintaining the fiction (by customers, program managers and developers) of the HLD being the one true document when first delivered and signed off on.

      I would classify your methodology as Evolutionary Delivery (as per McConnell's lifecycle definitions).

      I personally consider it a mixture of scrum and agile methologies. It works for our group, our developers and customers. If we had different customers and developers we may choose another means. We have formalised the process into a flow diagram and formal document for our customers to review. Each time we have been requested for our organization wide process, they have been happy to see our formal documentation on it.

      omico--

    4. Re:Optional Scope is a non-starter by dubl-u · · Score: 1

      Optional scope contracts just wouldn't fly.

      For this to work, you already need to have a relationship with the client. Once they trust that you aren't going to screw them, they're much more willing.

      Also, optional scope contracts have big benefits for the purchaser. For a long project, the ability to kill it with two weeks notice drastically reduces risk on their part.

      And if I'm doing optional scope, I can charge them less because I have to set aside less cushion for risk. One company I know offered an optional scope contract at $X and a fixed-scope contract at $1.5X.

      So it's certainly not impossible, although I agree it's hard.

      Other XP proponents might say to hide the process from the client and make an XP project look, to the outside, like a waterfall with very flexible change management, but I wasn't happy with that sort of methodological dishonesty.

      What's dishonest? If I sign a contract for a fixed spec and fixed price with change fees, then I don't have a problem telling the client that internally I'm using XP if they ask.

      If I've already recommended an optional-scope contract and they turn it down, the fact that I will make a killing on the change fees is their problem, not mine.

    5. Re:Optional Scope is a non-starter by billtom · · Score: 1

      For this to work, you already need to have a relationship with the client. Once they trust that you aren't going to screw them, they're much more willing.

      Ah, that's a good point. My negative experiences with trying to get people to agree to an optional scope contract were with new(ish) clients where we didn't have a pre-existing relationship of trust.

      I think that if a suitable existing client comes along with a suitable project I might just try it again (optional scope contract that is, I still have other problems with XP, but that's another story).

      Thanks for your insight.

  25. Extreme Programming � A Two Way Street by scotay · · Score: 1

    the authors identify the role of "Strategist" who seems to help those poor idiot customers to understand their own business.

    We feel it's only fair to also have the customer appoint one of their own people we like to call the "hygienist."

    They help the poor idiot programmers understand the daily value of brushing the back of your tongue, that wax paper from discarded pizza boxes is not a replacement for clean underwear, and keeps our dew-induced flop sweat upwind of the secretarial staff at all times. They often do breakdown and get the recommended VPN installed to lessen the direct contamination from our biohazards.

  26. Ask someone what "they do." by kfg · · Score: 1

    Go ahead. Do it. What sort of answers are you going to get?

    "I'm a web developer," or "I'm a Java programer."

    People who answer that question in that manner will generally buy these books, in fact, insist on them. It never occurs to someone who thinks of himself as "a suit" that there is such a thing as *cluefulness,* detached from what he "does."

    Publishing a book on cluefulness would smack of "theory" to these people, and theory, to these people, means not practically useful.

    Cluefulness for Suits for Dummies, however, the suit can recognize as describing himself to a tee ( although the irony of the accuracy of that description often eludes him). It smacks of being useful, to *him*, without all that extraneous stuff about cluefulness in general.

    I mean, really, who would want to waste their valuable time just being clueful, in general?

    KFG

  27. Re:Jesus Saves! by Anonymous Coward · · Score: 0

    radio waves

  28. Lazy developers? by Tim+Macinta · · Score: 3, Interesting
    This risk -- the authors contend -- is the reason many web development projects fail in one way or another. The client's objective is to obtain maximum value, the developer's to incur the least cost possible without getting sued.
    That's a very pessimistic view of things. I know my objective is never to just squeek by with enough output to not get sued. My objective is usually to do a superior job and make the client happy so that I get repeat business and/or referrals. If the client has unrealistic expectations (which would lead to unfairly high time costs on my part), then I'm content to do work which at least I know is high quality and I don't lower the bar to to doing just a subsistence level of work. I really doubt that I'm alone on this. I would think most contract developers like the idea of repeat business and are hopefully clueful enough to realize that sub-par work does not encourage repeat business.
    1. Re:Lazy developers? by Anonymous Coward · · Score: 0

      I'm sure the authors feel the same way but they just make up non-topics so they can write a book and get some ca$h

  29. my reply these days by sirshannon · · Score: 1

    when asked what I do, I say "computer stuff". Otherwise, it's a long string of shite with too many commas and the person asking stops listening before I finish. I used to say "web developer" but less than half of my income is made from www projects these days. "Net developer" would be more correct but then I would have to explain it.

  30. XP is the only way to program for the Web... by seschmi · · Score: 4, Funny

    ...because it's the only way to finish the Website before the .com-Startup goes bancrupt.

    This is not a joke.

  31. Does the book even get at the main issue? by telbij · · Score: 1

    I wish the reviewer would discuss what exactly the books asserts will help the developers share risk with the client. Extreme programming may be a great way to tackle these projects, but it doesn't do anything in and of itself to share risk. The only real way to minimize risk is for both parties to have a mutual understanding of the development process regardless of what that may be. XP will at best only be truly understood by the developer; the client will not likely know what the proper test cases are. So whether you use XP or not, the success of the contract will depend on the ability of the developers to explain what the client needs to know at each step of development and be forthcoming about the reality of development. Problems commonly occur because both parties are unwilling or unable to put themselves in each others shoes. Whether we like it or not developers are the ones in the position to do this since understanding a marketing plan is a lot easier than understanding how software development works.

    1. Re:Does the book even get at the main issue? by chromatic · · Score: 1

      You're right, the customer and the developers need to understand the development process. That's why XP requires an active customer.

      At least one developer helps the customer write the test cases. The developers work with the customer to refine the story cards until they're estimable. The developers continually go back to the customer to set priorities -- they bring up the technical risks, but allow the customer to decide what to do next.

  32. Perhaps you need to find some people . . . by kfg · · Score: 1

    to hang out with who, when they ask you a personal question, are actually interested in the answer.

    If find it very a very effective tool to weed out those that I'm not interested in talking to myself to simply answer the question as asked, instead of iterpreting it as "what's your job?", which is, in most instances, none of their business anyway.

    Anyone who wants to talk to me about physics, bicycle racing, trout fishing, folk music Donald Westlake novels or subsitence farming, well, I'll stand the first round.

    If someone asks me what I do, and their eyes glaze over when I start talking about R/C car racing, well, they're going to be a bore to talk to anyway.

    KFG

  33. But there is an important question here... by sbrylow · · Score: 4, Insightful
    ...and the reviewer captured it - I'd like some discussion on this point:
    --- at least one of the parties taking a big risk on the project: if the project is 'fixed price, fixed scope' the developers take all the risk, if it's 'time & materials' the customer takes a risk---

    I've seen plenty of this and I believe it's nearly always true. And I think the reviewer is correct in stating that this is not unique to web projects.

    So, with that in mind, I'll assert that it would be overall _more efficient_ (less waste of money and resources) if both parties were able to manage uncertainty and risk in projects in a less adversarial manner.

    Call me on that assertion if you want, but risk management is an important part of managing the software development process for just that reason. So, why _not_ come up with a better way to manage risk across organizations??

    I don't think contracts are bad things (just the opposite) and I don't have The Answer...but I'm imagining a better contractural toolkit and a better set of development and project methodologies that allow some uncertainty and flexibility and assigns risk at a more granular level than 100%-0% or vice versa...

    For an analogy that's pretty far afield, I saw a report recently that said something like 50% of mergers and acquisitions fail to add value, but if the M&A was contested or if there were multiple bidders, it goes up to 70-80%. Demonstrating, I think, that while people enter into contracts freely, those entities or contracts that are more adversarial are more wasteful of resources ;^)

    OK, let's all get out there and fix the consulting business so it's more fun to work on projects for clients...:^) Comments??
    --
    Faster, better, cheaper; pick any two.
  34. dedication? by Anonymous Coward · · Score: 0

    dedication?

    you didn't even finish your school work. what kind of example of dedication is that?

    When the going gets tough, make up an excuse and bail.

    "get used to it" is right.

    1. Re:dedication? by Anonymous Coward · · Score: 0

      My dedication is to my career, not to one particular industry, and I was willing to take risks for that which I really was dedicated to. Your ridiculous notion that pursuing my career was a sign of non-dedication is akin to saying that if you are building a super-scalable ecommerce application and you start in PHP but switch to JSP because it makes long term sense, you've shown a lack of dedication. You miss the forest for the tree.

  35. RUBBISH !!!!! by Anonymous Coward · · Score: 2, Informative

    "Extreme" Programming must be one of the most idiotic buzz words to ever come out of the software industry. And considering that the industry has a pretty strong track record on idiotic buzz words, the competition is pretty tough in this respect.

    Basically, "Extreme" (God - it makes me cringe just to type it!) programming means "doing it right" ! ie - writing a bit of code that (a) works, (b) ...err ...works ? and (c) ...oh dear ...works !

    ie - it's meaningless bollox.

    1. Re:RUBBISH !!!!! by insanecarbonbasedlif · · Score: 1

      What you call Extreme Programming I call Extreme Programming.

      Doh... That was supposed to say Extremity Progomaxing... wait, that doesn't even make sense.
      extreme, ex-stream, X-wing... dude, this is hard

      I know... Xtrememey Rogrammingpay!
      See! It is better... Eat that Pessamist!!!!

      --
      Just because I doubt myself does not mean I find your position compelling.
    2. Re:RUBBISH !!!!! by dubl-u · · Score: 1

      "Extreme" Programming must be one of the most idiotic buzz words to ever come out of the software industry.

      I agree that it's a stupid name. On the other hand, XP gets more ink and chatter than all the other Agile methods combined. So stupid or not, the name worked.

      Basically, "Extreme" (God - it makes me cringe just to type it!) programming means "doing it right"

      This got modded as "informative"? Please.

      XP has a number of practices that aren't common, certainly not in combination. The name may be stupid, but the practices kick ass. They've made my software better; they've made me and my clients happier. If you want to let the name keep you away from that, go right ahead.

  36. The best thing about XP is... by stand · · Score: 1

    The best thing about XP is that it has gotten a heck of a lot of people to think about and even get excited about software development processes.

    That is no small accomplishment.

    --
    Four fifths of all our troubles in this life would disappear if we would just sit down and keep still. -C. Coolidge
  37. XP doesn't sound up to much by danmanix · · Score: 1

    .. I don't know too much about it, but it does really appear to be a poor mans DSDM. Paired up coders, the client sitting in the office every day... these seem like blunt edged approaches to solving the problems of dynamic, rapid, development. DSDM provides a far better approach, of defining requirements and envolving the client during an iterative development cycle, without what seems to be a cost overhead in XP DSDM allows you to ensure that your client gets a product fit for business, and that it does not go over budget/time. Regardless of differences here, the above book sounds absolutely dire!

  38. Test-First is too simplistic by SuperKendall · · Score: 3, Interesting

    I am involved in a multi-year cleanup of a system that originated with an XP approach, and test-first design.

    To start with, let me say that the XP approach utterly failed in this case, but it was probably in good part to the people we were working with still learning Java at the time and also having terrible design skills (or rather I should possibly say, design experience in other languages but not in Java which led to ill-fitting design). So, they probably would have generated drek no matter what approach they used.

    However, as I was around from the start of this project I was able to make some interesting observations. The first is that you are correct, if you build code that passes all tests but still does not do what you want, then your requirements used to build the test are wrong. However, I've always been confused by this aspect as I thougt a requirement-poor environment was supposed to be where XP was helpful...

    The larger issue I have noticed through my own experience as well as this project was that test-first is too simplistic a strategy. Instead I would break testing into two sorts - "scaffolding" and "regression".

    The original project did not break up tests in this manner. As a result, the core of the project became encrusted in tests. After a while more work was being done on tests than on the actual project... at which point the buisness owner for the project raised hell, and testing was dropped altogether. Obviously that was a bit too far, but it did get the project moving, and ended in a state where it worked (though I still have a terrible mess to clean up and a very fragile system).

    Back to the breaking out of tests... I think they would have been much better served by "scaffolding" tests that are created during construction of a system, but ultimatley are thrown away when the system works well so you do not have the overhead of maintaining tests while adding to your system. Then of course there would be true "regression" tests that managed to cover most of the application testing, and ensure large portions still worked after changess... but they would be few enough in number that enhancements of fixes would not mean more work fixing tests than code.

    I've used a scaffolding approach in my own work and designs, and find it woorks really well. It gives you enough tests to get much of the touted test-first benefits, but does not leave you with a system that cannot be changed for fear of cascade fixes on multiple, ancient, tests.

    I would be interested to hear what criteria other people use to abandon a test when doing test-first programming.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Test-First is too simplistic by Anonymous Coward · · Score: 0

      Test first develop later is like throwing a baby into the ocean, then if it survives, teach it to swim.

  39. The 'better' way - abstraction by oneiros27 · · Score: 1

    Isn't always the 'better' way, but the basic concept is to use an additional layer of abstraction.

    Basically, rather than call 'select field1 from table1 where field2=value2' you call some sort of function. That function contains the information needed to get the information out of the database.

    This way, if you ever need to change your backend, you don't have to go picking through every web page on the system to see where that data object might have been referenced.

    Now, for one-off projects, this is a cumbersome annoyance, which only gets in the way of the end product. If you're putting something online for a week, and it's going to then go away, this probably isn't worth it. If it's going to stay around for years, and you may have to make changes to your data model or add some wierd functionality later, it's better to have the abstraction, as it keeps you from having to essentially rewrite everything.

    In some cases, the extra level of abstraction may save you processing time, as well. Oracle will have to maintain multiple execution plans if there's even a difference in capitalization of field names [even though they're not case sensitive], but by making sure that everone calls the same function, which calls the same exact SQL query, you avoid this problem.

    This also makes it much, much easier to optimize your code, oracle or otherwise, as there are times when just the order of the items in the query will affect the execution time. (as it may affect how it does joins, etc).

    Now, in your case, you have one layer of abstraction, to keep you from retyping the exact query each time, you may still want to have seperate functions that get a specific set of information, so that you can optimize or otherwise modify them as needed.

    --
    Build it, and they will come^Hplain.
    1. Re:The 'better' way - abstraction by dsevans93 · · Score: 1

      my tag looks like this: SELECT id, name, price from tblProduct i can use this tag in any page, and its displays the rowdata, formatted by the template. ok if the backend changes from a SQL database to something else, i've got problems. i see that point. but the ease of use and timesavings involved overshadows the unlikly chance that the system will one day not use a DBMS. i guess i could do something like: fieldlist="id,name,price" objectname="product" /> but then if i want table joins or sort orders or where clauses or calculations of subtotals or whatever, i have to redesign. it may not be best form, but in a practical real world sense, it seems "better". we all know SQL, the syntax is extremely flexible and if i really had to change out the backend i could right a SQL statement parser and remap the actions to the new data store. which i have actually done for a XML database. anyhow thanks for your thoughts. dave

    2. Re:The 'better' way - abstraction by Bodrius · · Score: 1
      I share your opinion (and practice) that most of the times, in the practical sense, it's better to violate the sacredness of MVC with JSP.

      When a custom tag already provides an easy-to-use and easy-to-setup abstraction to access the database, to create some bean/utility-class/extra-code just to get a resultset seems cumbersome and useless. The data access layer duplicates functionality and gets in the way in small JSP projects, it seems, because the tags can do that work in two lines.

      Something I do when the project starts to grow and I start to feel uneasy about those SQL statements is to use JSP fragments as my data layer, and call them as functions through jsp:include tags.
      <jsp:useBean id="rows" type="java.util.List" class="java.util.ArrayList" scope="request">
      <jsp:include page="includes/getProductInventory.jsp"/>
      &nb s p; </jsp:useBean>
      Since the JSP tag I typically use translates the resultset into collections, nothing stops me from switching data sources and data fetching methods without touching presentation code. All I have to do is make sure the data layer JSPs store the expected object where I expect it in the request object, and assign it to a local bean/variable if I must.

      Some may consider it hackish, and some may have some prejudice to use JSP for anything but presentation, but it makes it very easy to move from a prototype with a bunch of repeated-and-embedded SQL to something cleaner without redesigning, or reimplementing, that much.

      Then, if you really need a cleaner abstraction than that, with your own data access classes, your data access JSPs are only another layer and moving there is even easier, and doesn't touch any other code.

      --
      Freedom is the freedom to say 2+2=4, everything else follows...
    3. Re:The 'better' way - abstraction by dsevans93 · · Score: 1

      Thanks for the insight and the include technique. I understand that having the SQL in the JSP is ugly, conceptually, but when making a Model 1 web application, it just seems more sensible. One day i'll get my boss to give me a month to redesign our product as a Model 2 app, but til then i'm just trying to get it done.

  40. ack by sirshannon · · Score: 1

    I don't really care to hang out with geeks, for the most part. I don't really like most of them. My eyes glaze over before I even finish hear the words "R/C car ..." or anything else to do with video games or sports.

    1. Re:ack by Paradise+Pete · · Score: 1
      I don't really care to hang out with geeks, for the most part. I don't really like most of them.

      Yeah, and you also like to think of yourself as a "web developer."

  41. What you americans call XP... by Anonymous Coward · · Score: 0

    What you, americans, call XP, i call it: intelligent programming.

    1. Re:What you americans call XP... by CarlBenda · · Score: 1

      XP is called debugging into existence by people who know how to code.

  42. An aside by JSkills · · Score: 2, Insightful
    Regardless of anyone's predisposition to XP as a development methodology or not (I actually love some of its philosophies, but would never follow some of its others), it's really not the main factor that has to do with the success of a given project.

    Successful software development has always been about people - not development philosophies, and not about which language you use. If you're working with people who are winners, you're going to find a way to succeed.

    That said, I'm sure there are many who feel very strongly about operating systems, development environments, programming languages, etc. (myself included), but none of it matters if you don't have the right talent in place.

    Just my master-of-the-obvious aside ...

  43. Extreme Programming brings teamwork to the cubicle by rpiquepa · · Score: 2, Informative

    As I wrote in this column, extreme programming is not really new. "Extreme Programming (XP)" is just another way of saying "Team -- or pair --programming". Programming in pairs is the most difficult aspect for many to accept (believe me). Even for XP die-hards like Edward Hiett, who works for San Francisco-based Evant, programming with someone looking over your shoulder remains disconcerting. ``Programming is a very creative process and requires a lot of concentration. It's natural to want to go away and do it by yourself,'' says Hiett, , where all programmers work in pairs. ``With pairing, you have to give up control.''

  44. Doh! by HarmlessScenery · · Score: 1

    Should I be pleased or insulted ??

    My first ever 5-mod - but it was modded Insightful - when IT WAS SUPPOSED TO BE **FUNNY**

    Bah - back to comedy school for me.

  45. OK book perhaps, but mediocre review by WebCowboy · · Score: 1

    Enough has been said about the SQL comment--suffice it to say the 1st lesson in "Web Application Development 101" should be "Develop 3 layers: Data Acccess, Business Logic and Presentation". I think most web developers missed the 1st day of class. Not only is there too much SQL and related data access code embedded in ASP, PHP, etc--there is often a great reliance on embedding business logic (and yes, some presentation elements such as UCASE, padding, etc) into non-portable SQL statements and stored procedures. In simple situations (if you can GUARANTEE your small project will stay small, which is very rare) mashing everything together makes for faster development and more compact code. In the 99% of other cases you'll eventually end up with a big bowl of spaghetti. Perhaps it's because many web programmers are trained on syntax (the mehanics of Java, Perl, PHP, HTML and so on) and not on design.

    As for assigning a "strategist"--that can be invaluable to a project. The end customer in most cases knows his business as it presently runs, and most often they are not a tech business. I have clients in manufacturing, distribution and food processing/agribusiness. Their business is knowing how to make wigits or food or chemicals or how to send stuff all over the continent--and all they want out of computers are ways to make these tasks work better--and more often than not they must rely on "strategists" to show them HOW and WHAT computers can do to achieve that. That's the case for ANY component of a client's business that is ancilliary to their primary goals.

    I don't always use a strategist--but I will if the job is big enough and/or to establish a relationship with a new client. In my opinion (and experience), a good "strategist" should be the following:

    1. The strategist should NOT be a past or present employee or long-standing affiliate of the client--that might seem counter-intuitive however someone with intimate knowledge of some or all of the processes in a business standa a chance of being blind to change. Viewing "from the outside in" is most often the best way to spot and change counter-productive practices.

    2. If possible, a person with industry knowledge (if you're going a web project for Pepsi, then someone who knows the soft drink industry). This can be more important than having an advisor or strategist that knows technology...which brings us to:

    3. The strategist should most certainly NOT be a programmer on the project (or indeed be involved in project development AT ALL beyond the requirements phase--or in XP, I suppose developing the tests). If there are questions about feasibility or time/resource requirements to achieve functionality, it is not the strategist's job to answer them--the answers should be provided as feedback from the developers upon receiving the specs/tests. Not only can programming be an iterative process--so can (and often should be) determining project specs. The last thing a client wants is to get mired in an alphabet soup discussion of SQL, ASP, PHP, etc. on what is required to satisfy a reporting requirement--all they want is to state a list of wants/needs--then they want you to think about it a bit and tell them how long and how much $ for them so they can prioritise. Having a non-programmer strategist as a go-between helps immensely in avoiding that trap.

  46. SQL in paired classes is not nirvana by bma · · Score: 1

    We all seem to forget that SQL was supposed to be the data abstraction layer. Somehow it's now this ugly stuff that no one is supposed to touch, and every project that is built attempts to reconstruct a data abstraction layer.

    Not to mention that OO abstraction on top of a relational model causes significant complications. How does one perform true joins? By building additional classes that represent the "join" of two other classes? What about complex reporting queries?

    Of all the apps that are claimed as "maintainable" because of OO abstraction, I've never seen one that actually accomplishes this in a truly clean way. Because it's hardly ever possible if you're making true use of a relational database.

  47. Re:Jesus Saves! by ShootThemLater · · Score: 1

    ... but Moses scores on the rebound!

  48. SWM, XP curious, seeks Strategist by eddy+the+lip · · Score: 1

    I must agree on your comment about a Strategist. Whether you follow XP or not, you need this. A client might well know their business inside and out, but it's unlikely they know that much about the internet (or they probably wouldn't need the likes of us), or how this tool relates to it. And we've had plent of clients where even key people in the company hadn't really given much thought to certain critical business issues. A good part of our job is discovering and exploring this.

    It's a lot of work, but a good strategist will keep you sane.

    --

    This is the voice of World Control. I bring you Peace.

  49. Tests by SimonK · · Score: 2, Insightful

    I've found test driven development very useful on my most recent project, and intend to practise it in future too.

    On this occasion, I did what you suggest: I built unit tests during development and threw them away when they were costing more time to maintain than they were saving in bugs that would not have been found another way. Once it was possible, I developed tests from the user's API level (its a middleware product), and these will be maintained for the life of the project. These API level tests include regression tests for specific bugs.

    The XP folks seem to suggest maitaining unit tests at a level I consider excessive. I think they suggest one test per non-trivial method on all classes. This just seems too much, and very hard to achieve, since even in the best designed projects, individual methods are hard to test without also testing a bunch of other stuff.

    It sounds like your project was suffering mainly from a lack of design skills. Spending a lot of time maintaining tests implies too much coupling between components: the only way that can come about is if changing one component affects many others, so there tests need updating too.

    1. Re:Tests by SuperKendall · · Score: 1

      it sounds like your project was suffering mainly from a lack of design skills. Spending a lot of time maintaining tests implies too much coupling between components: the only way that can come about is if changing one component affects many others, so there tests need updating too.

      Your observation is spot-on - that is exactly the problem with the code, the coupling is on the level of a greek orgy.

      In my defense I had no control over the design at the time and could only watch in horror as they proceeded to create what I must now maintain. Slowly I manage to decople the system from itself...

      I also find myself in complete agreement on your observation that XP seems to require a bit too much in the way of unit testing, the approach you outline is exactly how I like to approach testing.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    2. Re:Tests by dubl-u · · Score: 1
      The XP folks seem to suggest maitaining unit tests at a level I consider excessive. I think they suggest one test per non-trivial method on all classes.

      There are two common phrases to sum up what to test in XP:
      Test anything that could reasonably break.
      and
      Only test the things you want to work.
      What that actually maps to in your code depends a lot on your code. But I think the most important rule is that if a bug gets through despite my tests, it's a sign that I guessed wrong about what to test.This just seems too much, and very hard to achieve, since even in the best designed projects, individual methods are hard to test without also testing a bunch of other stuff.

      It's true that it's hard, but there are a variety of techniques to make it easier. The more I do test-driven design, the more I discover that when an object is hard to test, it's a sign that I should improve the design generally by reducing coupling and simplifying my objects.

      It sounds like your project was suffering mainly from a lack of design skills.

      Yeah, XP gets beat with this stick a lot: "We took a bunch of novices and they produced a system that was poorly designed! It must be the fault of XP!"

      I think that no matter what level of design skill a team has, XP is a great way to make the best use of that skill. But people shouldn't fool themselves: making complex software requires substantial design expertise, and a team without a good percentage of grizzled veterans is on the the short road to critical mass.
    3. Re:Tests by superwombat · · Score: 2, Insightful

      Excessive unit tests are not the problem. Code duplication was probably the problem. Very critical for XP are the ideas of OOAO (Once and Only Once) and Refactoring (www.refactoring.com is a good site on this). With out these XP will create huge messes.

  50. The point isn't the techie stuff... by PinglePongle · · Score: 1

    the point is the sweeping statements that litter this book, often implying that Web XP (which after reading this book was still a pretty hazy concept to me) is the only solution. The quote in question is from a section about the team roles in Web XP projects - it is almost left dangling on its own - there's no discussion about the problem, and none about possible solutions.

    Have I seen a lot of embedded SQL in my time ? Sure - I've even written some. Is Web XP the only cure for this evil ? Uh...no. In fact, does any process shield you from poor design or poor implementation ? Well, no, probably not.

    Another quote that annoyed me : while talking about the quality of web site code, "Few developers used an object oriented approach to development. Most used procedural languages, which made refactoring code or making changes to it much more difficult". Well, I'm a bit of an object bigot, but I would contend that the key tension here is not OO versus procedural, but rather time versus quality. I've worked on code in procedural languages that was very easy to work with, and OO systems which were an unholy mess. The reason many web sites are brittle is not that they don't use the right inheritance tree, but rather that they are put together in a very short space of time, and with ever-changing requirements.

    --
    It's all very well in practice, but it will never work in theory.
  51. Strategists may well be useful by PinglePongle · · Score: 1

    That's not what I thought was annoying - it was the very condescending tone this book takes towards the business folk.

    At best, this is consultant mumbo jumbo - "just you leave all the difficult stuff to me, I have a brain the size of a planet and will prove it by saying the word "synergistic" a lot".

    At worst, it's precisely why we techies tend to get a bad reputation in many businesses. Many business people may find it hard to express their knowledge in the terms that we techies like; much of what they do may be hard to encode in nice UML diagrams, but they do not deserve to be treated like idiots. And that is the distinct impression I got from this book - the authors seem to imply their knowledge is infinitely superior to that of their customers, even when it concerns the customer's own business.

    If you read the review again, you should find I do not claim SQL is never embedded within web pages; I simply object to the many unsubstantiated, sweeping statements that litter this book, often left dangling with very little context.

    --
    It's all very well in practice, but it will never work in theory.
  52. In many ways, that's the failing of this book... by PinglePongle · · Score: 1
    It hints at a solution - iterative development, tests to show progress, frequent communication, and a release plan all feature in there - but it devotes too much time talking about tangential issues, and not enough really investigating these central issues.

    The stuff which differentiates web projects - in my experience - is :

    • they tend to have very compressed schedules

    • they are usually very visual - stakeholders can usually see both their own site and a bazillion other sites on the web; a lot of requirements discussions seem to to go something like "make it like amazon when you see the homepage, and like dell when you buy something, but make it nice and light like google and...". This is pretty hard to capture in a requirements document...the visual nature of web projects tends to lead people to assume the underlying stuff is easy to understand too ("I know we're selling books, but if you just make it do auctions like ebay we could earn an additional bazillion dollars")

    • many of the techniques that help you develop solid code are not easy to adapt to web development, e.g. unit testing, automated system & regression testing, there are comparitively few design patterns catalogued (the "Core J2EE patterns" book is about the bestI've seen thus far, and that is platform-specific), etc.

    • A lot of web projects are exploratory in nature - both for the business and in the technology used. It's hard to build a solid code base from a prototype.



      • The shared risk issue is not really specific to the web - it's a common issue with consulting style contracts.
    --
    It's all very well in practice, but it will never work in theory.
  53. huh? by sirshannon · · Score: 1

    Where you get that idea from? the link you posted said that I used to say 'web developer' when asked what I did. But I used to do a lot of things... I would help you learn to read, but that's something I used to do, not something I like to do.

  54. may I never have to maintain your code by Anonymous Coward · · Score: 1, Informative

    A seperation of business logic from presentation allows for more maintainable code and a reduction in lines of code. In most applications I've seen, you use a lot of the same SQL statements over and over, then have the ones that are specific to the page or problem your working on. If you change the schema, then you must search through all pages on the site and fix the SQL(annonomous or call to stored procedure) on each and every page. Not only is it time consuming, but you're also prone to miss some. If you abstract the business logic and domain out, these changes are much simplier and faster to do for the same SQL call is in one place and that's the only place you need to change it. Ideally, the presentation layer will talk with a business layer who talks with a domain layer. The business layer just returns what's neccesary to rendure a page or screen. The business logic could also be interfaced by tag librarys that allow the html developer to focus on presentation logic and an engineer will code the business logic plus the calls those objects make to the domain. I recommend you get read some books on patterns and the gang of four books. It'll help move you from the realm of hack script kiddie to engineer. So in summary, the idea of seperation is for isolation and reuse of common functionality.

  55. Re:Extreme Programming brings teamwork to the cubi by Alioth · · Score: 1

    For me - I don't care if someone's looking over my shoulder or not (my last big software development project had plenty of peer-reviews). I just hate being the one doing the looking over the shoulder.

    It's probably some stupid thing hardcoded in my brain, but if I'm not actually the one at the keyboard, my mind tends to drift within minutes and I'm thinking of something else completely unrelated. For some reason I just don't remain focused if I'm looking over someone's shoulder. Same with meetings - I have a hard time staying awake in a meeting unless I'm the one presenting or actively discussing.

  56. Re:Extreme Programming brings teamwork to the cubi by chromatic · · Score: 1

    I'm the same way. Fortunately, pair programming is an active discussion. It's a lot like the conversation you have in your head while you're writing code, except there are two people involved.

    This can be awkward at first, but it's pretty impressive to realize how quickly you can go. If you get stuck, your pair probably has a good idea of what to do next.

  57. In my experience... by SuperKendall · · Score: 1

    Code duplication was not the problem in the case of the project I worked with. Well, it was not the reason for excessive tests at any rate!

    Part of the problem was that requirements were changing a lot, and many many tests had to bend to accommodate them. We spent many days in SCM hell where a change to the core object model had to me made and tests all over the place would not even compile... and of course because we were actually trying to produce working code sometimes the tests lagged behind in fixing. To me, that breaks an almost more fundamental rule than test first - Thou Shalt Not Break the Build So That Others Might Work Upon The Code.

    Refactoring also breaks tests, and they did a lot of that as well. So between the requirement changes and the refactoring, the tests hardly stood a chance. That's exactly why the business owners demanded they be scrapped - and at the time I have to say I was glad to see them go, because work started getting done and I could go whole days without seeing a compile error from the repository.

    That's why I'm saying test-first alone is too simplistic. There needs to be a strategy for test deprecation and retirement, or any kind of large project ends up mired, and create loss of confidence in the project.

    The thing I dislike about arguing the merits of XP is that someone always comes along saying "you needed to use the idea of X and the idea of Y, of course it failed as you did not use these ideas". Well, people have used these very ideas and seen them fail, even in conjunction with idea Z that was going to be brought up next. Sometimes a project just plain has bad people on it and is doomed. Sometimes the people feeding you requirements are running in circles and you need to figure than out and reign them in, regardless of what methodology you are using. XP is like a technique that is good and finding local minima and maxima, but to me seems like it can get stuck there and not proceed to the best point on the curve in a complex situation. That's when you need real people, not methodology, to pull you further along.

    Personally, my primary methodology is "sniff-first" development. At the start of a project I take a good whiff of the thing as a whole - who will be using it, who is giving the requirements, what is the history behind the need. Then I decide if it's possible to pull off using gut instinct or if it reeks too much to bother with. I've had very few of THOSE pushed at me but I've decided (from experience) with enough Powerpoint slides you can convince management to abandon anything.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  58. More than just for changing the type of database by oneiros27 · · Score: 1

    It's not just changing the database, it may be the data structure that changes, and you get stuck with it.

    Now, under some situations, you can define a view that mimics the original table, but when you're adding extra interfaces to an existing product, and you don't have control of the underlying structure, you have to deal with what might happen when it's upgraded.

    It'll normally occur when someone gets on a kick of normalization, or they decide that there's a need to handle journaling on a table.

    Obviously, you know what sort of an environment you're dealing with, and how likely the odds are of something like this in happening. The more recently you're taken on new staff, or changed management, the more likely this is to happen.

    --
    Build it, and they will come^Hplain.
  59. Re:OK this one isn't great, but is there a great o by Stu+Charlton · · Score: 1

    In general, Martin Fowler's "Patterns of Enterprise Architecture" contains a number of patterns for web & business systems.

    "Performance Solutions" by Smith et al is probably the best modern (i.e. recognizes OO)treastise on how to design a system for performance.

    For the Java world, I would suggest "Advanced JavaServer Pages" by David Geary and/or "Expert One on One: J2EE" published by Wrox.

    There isn't much on integrating XML services out there, and there's a lot of freedom.

    As for SQL services, the book I found most helpful is Expert One On One: Oracle by Thomas Kyte. It's oracle-specific, but a very high signal/noise ratio.

    --
    -Stu