The act of reading everything about ExtremeProgramming and responding with every fiber of your body and soul but not being able to practice it.
Often for this condition we prescribe "XP Jelly". This is best used by having Beck or Jeffries come in and, um, apply it. -- rj
Just do it. Start introducing XP practices into your workplace one at a time.
Unit tests is a good place to start.
-- EricUlevik
I can think of a couple workplaces where XP can't be used. Companies that make consumer electronics based on other companies chipsets and code (modems, for example) are a prime candidate. The problem is that you have a ton of code, it's short source, you will be getting new code that will reject most of your changes (and they aren't likely to accept code patches for inclusion), etc. That said, you usually only have to add a couple things, and you can refactor a little there, but not much. -- AlastairBridgewater
Why can't you use XP there? Each of your "couple things" can be a UserStory resulting in FunctionalTest(s), scheduled via the PlanningGame, coded with PairProgramming, and made maintainable via StarUnit. Even if most of what you're doing is thrown away from release to release you can still apply solid process to each release; the benefit should be increased quality and productivity, reductions in developer stress, and improvements in project balance, harmony, and predictability. -- PeterMerel
Most tests here are of the GuruChecksOutput type (either it's so simple that it's easier to check it manually, or you need an expensive piece of simulation hardware and a couple hours...), each thing is of the type "Do this. It's due by 3:00, but we only found out about it 15 minutes ago", there are only two programmers in this department (each assigned different things), much of the work is "Build the code in this configuration", and so on. If you ever get a complex task, you have to call for someone who knows the codebase (and they're in another company, and always busy, and don't nessecarily know the answer). On the other hand, there's a project coming up that I should be able to use ExtremeProgrammingForOne on (and will need to, given the shape that code is in). -- AlastairBridgewater
GuruChecksOutput is sometimes appropriate for functional testing, but never for unit-testing. Functional testing tells you that what your system does is correct; unit testing tells you that what just a few lines of your system does is correct. You need no guru to check that - you write the few lines, so you know what they're supposed to do.
For the functional tests, replace GuruChecksOutput with GuruWritesAutomatedTest where you can. Where you can't, the guru just became a customer for the project, and should be treated as such.
The pair of programmers being "assigned different things" simply means you have no management buy-in for pairing. There's no inherent reason in your problem domain for this - though there's no way you can XP without management buy-in. The fact that you have CaptainHornHair telling you "it's due by 3.00" indicates XP may be a hard sell. The only solution then is for you to quit and go work some place where you can get management buy-in for XP.
If most of the work is "build the code in this configuration" then arguably you're not programming; you're managing configurations. The fact that you don't know the codebase seems to confirm this. The fact that your programmers work for another company only suggests that you'd need to get the other company to do your XP. The fact that they're "always busy" strongly suggests their scheduling techniques are quite inferior to the PlanningGame, which would allow them to schedule your requests for change as new UserStories, and let you prioritize them.
As to ExtremeProgrammingForOne, again, that won't work without management buy-in. If you can get management buy-in, then it's not obvious why you can't apply XP except that there's just the one of you ... right? -- PeterMerel
Thank you for pointing out exactly why I hate my job. I've been wondering about it for a while.
There's only one real programming (as opposed to CM and minor hacking) project coming up, and that's sometime next year. Fortunately, management around here is rather hands-off when it comes to one and two person projects, so I should be able to ExtremeProgrammingForOne there.
After that, however, I think I'll start looking. -- AlastairBridgewater
Alastair -- why wait? Maybe you'll be able to find a "real programming" project sooner than sometime next year...
I don't know. Loyalty? Stupidity? Not entirely sure of how to go about it? Not entirely sure I know what I'm looking for?
I know how you feel, I recently left a job and I wasn't entirely sure 'why' - it was just time to go. What stopped me doing it earlier was FearOfTheUnknown. Could I get another job? What am I looking for? What's the meaning of life :-)? But, when I did leave the sense of relief was amazing. -- ChanningWalton