Welcome to the Lounge

The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.

It was developed and promoted out of the Chrysler C3-Payroll development project. The project took approximately 5 years to fail. In the 4th year, the developers who had come up with this nonsense came to believe that they had found a new "magic bullet" for rapid development processes. They went out and promoted their new paradigm quite heavily and by doing so reached the mainstream development community in which it became highly popularized.

However, in the 5th year of the project all of the short-comings of the paradigm reared their ugly heads and subsequently caused the entire project to fail. Unfortunately, no one ever really heard about the failure so developers went on believing that XP actually worked.

As a software engineer I can tell you that there is absolutely no substitute for the logic of the traditional "Waterfall" approach. You may modify it, adjust it to your needs but in the end planning, design implementation, and testing are the four pillars of quality development.

You can't avoid them or short-change them with the idea that you are developing a new way of doing things...

Personally, I don't think it works. It seems to me that you end up with the lowest common denominator: since both programmers have to understand all of what's going on, the level you get corresponds to that of the less able programmer. I imagine that if you get a couple of not-very-talented programmers, they can kind of push each other along... but I dread to think of the clusterfuck they'd create.

Having said that, I've done it once - kind of by mistake - I ended up working on something with another very talented programmer - both of us were well past the point at which programmers actually think about such things as DRY and REST and other such mental crutches - and in that case, it did become like sharing a single mind: we could complete each others' sentences in code, as it were... but that's highly unusual: you have to start with a couple of programmers whose code looks like liquid, who can program at the speed that they think, and who never have to stop and think about what they're doing.

If the lowest common denominator means that you get code that both programmers easily understand, then isn't that a good thing? Isn't it more,likely that the code will be easily maintained in the future because any programmer is likely to be able to understand it?

Surely better than a single programmer developing 'clever' code that takes anyone else ages to decipher?

ALso, the assumption is that you don't employ crap developers on any team. If they are still learning, that's one thing, but if they are just crap, then pair programming and code reviews should weed them out pretty quickly

Well... theoretically... assuming that anyone who looks at what they do understands it -- it works OK in large organizations, but in many cases, especially in smaller startups, the pair of them may well be the only programmers in the organization - don't laugh: this happens far more often than you think...

Properly "clever" code is instantly understandable: it should be elegant and light with an obvious purpose. Tricky, write-only code isn't necessarily clever code...

[crap developers]: Have you tried employing any programmers recently? I have - it's a depressing exercise... it seems that a few years ago, a huge number of students emerged from college holding shiny new computer science degrees... and nothing else - ability, knowledge or talent, for example. There's just... too many of them!!

We've been hiring recently - so far without success. I wrote a little test for the candidates: just three questions, each of which requires a little bit of lateral thinking.

The first was an SQL question: a table containing people, a table containing sports (each of which was basically an identity column and a text field), and a link table between them for a many-to-many join. The question said, "Write a query to return the names of the people who play *every* sport." Nobody got this right, although one guy almost worked out the idea of it.

The second question said, "Write an algorithm to produce a 20-element array with the numbers 1 to 20 in random order in it. Assume you already have a function to create a random number." Nobody could do that, either. One guy said, "I can't do this. It's not a business function." The only guy who even made a basic attempt at it wrote one of those things where you think up a random number for each array element and then check to see if you've used it before, and keep thinking up more random numbers until you're done. Horrible.

The third question was: int a=543;int b=624;a^=b; b^=a; a^=b; // or in C, a^=b^=a^=b -- which doesn't work in C# for some reason.

What are the values of a and b when the code has run?

Strangely, the guy who complained about the business function knew the answer immediately (that it swaps the values) -- but he was old - binary XORs were obvious to him, even though nothing else was.

To take the pressure off a bit, I told the candidates that a right answer and perfect syntax weren't the point - that the test was for me to be able to evaluate how they think... apparently, none of them could. The closest answer to question 2 was from a guy who sort of got the point, but was using things like SortedList and inbuilt Sort functions to do it -- I asked him if he could do it using a simple array and actual code, and he couldn't. Amazing.

I've said it before, I think tests like this are generally a waste of everyone's time.

The SQL one amazes me nobody got it - I'd put it in the trivial SQL pile.

The third question I wouldn't know the answer to - I have no idea what the little hat symbol is used for in this context - but i am a good developer -so your test fails.

Second question I can imagine people coming up with all sorts of answers - but what's the point? And then one comes up with an answer and you change the goalposts? Why couldn't he use a sort function etc.?

I prefer to have a conversation with interviewees - talk about what they have done, what they want to do, have them talk through some stuff.

Looking at their resumes i make a call on how competent they should be - I try to give them a look at the code base they'd be working on, introduce them to the developers they'd be working with, and let them ask me questions.

I make it exceedingly cleat that I will sack them if they're crap at what they claim to be good at on their resume.

Actually, I didn't change the goalposts -- I told them before that they had to write an algorithm, not use library functions to do it. The SQL one is harder than it looks -- it's certainly not just a bunch of joins. Once I gave that question to a guy who made $150,000 a year back in the '90s doing SQL, and he said it couldn't be done. I didn't hire him.

The point of each question was to see if they could think -- I didn't want the guy to use a library function because if he's a programmer he should be able to program, not just use other people's code. For the sake of an interview question, I want something he could write in two minutes -- the point is to find out whether he tries to fill the array one number at a time, looking over and over again for distinct numbers (inefficient and stupid) or whether he fills the array with the numbers 1 to 20 in sequence and then swaps each element with a random one (efficient).

In the third question, ^= means XOR = (which I explain in the question) -- I want to see whether these people understand anything at a level lower than the user interface they're designing. It's not possible to describe the amount of value that an understanding of machine code adds. Apparently, the only one who did was incapable of doing anything about it.

I also did have a conversation with them first -- of course that's important. But at some stage, I want to know how their brains really work.

Marc Clifton wrote:Would you read (YA) book on this topic? What would it take to get you to read such a book?--------------------------------------------------------------------------------------

With the number of books already on the market on the Software Development and XP, I couldn't imagine wanting another, unless...

Unless, that book took on a code-and-architecture implementation driven approach using an actually real world project, or better yet, series of real world projects from different industry domains and technologies, to explain each step of the Software Development process. The idea here could be (should you consider this) show just how extreme programming can be implemented in a complete traceable Software Development Life Cycle (SDLC for short) - if, indeed, this is possible.

The reason I say this is because my experience of XP leads me to see the process as strictly a creative process that can be used within a SDLC framework. This notion may sound strange but the reality is that the current (and even the tradition) SDLC frameworks have already clearly shown their strengths to account for project management for managing the Software Development effort. And, I believe, due to a number of problems including the lack of software development standards, that XP is now showing a strong means to ensure the software process gets done while allowing the developer(s) an excellent piece of mind to exercise their creativity as they are applying their skills, learning from each other, learning new technologies, and capturing a happier customer in the process.

So while the current SDLC (or perhaps, someone can introduce a modified version of XP to include a strong project management framework) can be used to manage the project, then the XP lead implementation for developers would serve as the highly aggressive approach to product delivery and developer retention. Once we have achieve this combination, I believe (that's just me) that XP will be adopted faster than I am taking to writing this message!

Of course, the title of the book can reflect on this stance and as a final point - we love stories (haven't met anyone who doesn't) and, we in the developer community, especially, crave for those stories of people (developers' experiences) at work actually doing the stuff - making the book in this fashion can make it irresistible. (Heck, I am still craving for more literature like the book called "Extreme Programming Adventures in C Sharp")

But, I believe the point is that extreme programming on its own still has to prove itself TO BE on its OWN, which I'm sure most folks will agree with me. So, if you can write something (perhaps like what I've just mentioned or better) then XP will finally have its place (and developers WORLDWIDE will be thanking you (or whoever) for their enjoyment AND piece of mind).

I hope your experience of Dubai was better than mine. Overnight stops going to and from Uganda; on the way out trying to sleep on hard plastic benches, on the way home stuck for four hours because their computer systems were not working properly.

My worst was only two changes: Paris and Karachi.Paris was a PITA (as it always is), but Karachi was just stupid - 7 hours, and a body search to get into the transit lounge where the Goat Curry was. Mind you, it was good Goat curry.

If you get an email telling you that you can catch Swine Flu from tinned pork then just delete it. It's Spam.

If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?Help me to understand what I'm saying, and I'll explain it better to youRating helpfull answers is nice, but saying thanks can be even nicer.

Heading off to the http://www.oilandgasuk.co.uk/events/awards.cfm[^]. Feeling groggy as hell and really hope the beer will sort me out! The youngest started coming down with a cold a few days ago, and I felt it starting yesterday. Tried to have a sleep this afternoon for an hour, but just felt sh!t and kept waking up.

We are sponsoring one of the awards tonight, and also one of my technicians is a finalist in the "young technician of the year" category. Here's hoping he has done enough and scoops his award. If not, well, there is always the bar!

After 20 years offshore, I no longer worry about missing things because of being "scheduled" to be on the platforms. It sometimes works in your favour as well you know! (more often than not come to think of it).

Panic, Chaos, Destruction. My work here is done.Drink. Get drunk. Fall over - P O'HOK, I will win to day or my name isn't Ethel Crudacre! - DDEthel CrudacreI cannot live by bread alone. Bacon and ketchup are needed as well. - TrollslayerHave a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett

My workstation was just upgraded to windows 7, which is great. However, they are locking down all the windows 7 computers to allow only 'user' access. If there is a need for more access then we can request it and it may be allowed for up to 90 minutes. I am a developer and am writing programs as the rest of you do. Have any one else run into this issue and how have you dealt with it?

I have first hand experience of this issue. I did a project a few years back where we all had two accounts, one user account and one admin account. The admin account would log you out after an hour no matter what you were doing. I took this issue to anyone who would listen but to no avail. Then they all wondered why we couldn't meet any deadlines.. in the recrimination meetings all I could do was reiterate the fact that we needed proper admin access to do our jobs properly and making us work in restricted accounts was akin to giving a delivery driver one of those two wheeled granny shopping cart things to deliver sofas in.

my sympathies. some people don't think about the consequences of their decisions. this is one such case.

Panic, Chaos, Destruction. My work here is done.Drink. Get drunk. Fall over - P O'HOK, I will win to day or my name isn't Ethel Crudacre! - DDEthel CrudacreI cannot live by bread alone. Bacon and ketchup are needed as well. - TrollslayerHave a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett

I've never worked at a place where developers didn't have administrative access to at least their own development systems. Once the tools are installed, you can actually do a lot of work without administrative access, though when you need it, you usually really need it.

At one recent company, the IT guys delivered new systems without local admin access, but quickly rectified it once we explained the situation.

Put in a request for admin access for every 90 minutes covering the next 12 months, its only 1300 requests and then makes sure you go home after you have done the 7.5 hours per day that the access covers

You cant outrun the world, but there is no harm in getting a head start

This is the first time I have not had Admin rights. A bit of a pain. Like I cannot get an html editor, and it has delayed work when stuff had to be installed. Also get these stupid notices that upgrades are available, and cannot upgrade, so they just pop up. The most irritating one is "New CollabNet Desktop version is available" which pops up everytime a start a project in source control. Also, cannot read a USB drive, so have to send things through email, and cannot send exe's.

Well, as a developer, you DO need admin permissions to do certain things, like install tools.

But, you should be developing your code as a normal user. This is because admin accounts will let you do things that a normal user running your completed app cannot do. For example, as an admin, you can write your code to write to a Access database under Program Files. As a user, you can't do that. Everything under Program Files is ReadOnly by default.

I can't tell you how many times little security bugs like this have crept through Repackaging because the developer has said "It works on my machine!"

Seriously, it's much better to find this sort of bug when you're writing the code than having to wait for QA to find it, write up a bug report, and send it back to you to be fixed. Especially if you can't reproduce the bug locally because you're running as administrator.

"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

I can agree and disagree with this. I think my development machine should be setup in whatever way allows me to work the most efficiently. If I need a more restrictive environment to test on I think that should be a separate environment setup to more closely replicate a users environment, perhaps a VM.

CPallini wrote:

You cannot argue with agile people so just take the extreme approach and shoot him.:Smile:

That's what VMs are for. I even have a whole domain setup in my VMs when I need to test some of the weirder settings created by admins (three VMs running to use it, the server, the client, and a third to play router).

And VS doesn't even run properly on my machine without admin rights (my file permissions are screwy for some reason).