Extreme Programming Explained

When I saw Kent Beck's "Extreme Programming Explained" in our office, I was shocked. I've already accepted the inevitable occasional purchasing of obscure C++ wisdom, exemplified by titles such as "Effective C++", "Exceptional C++", "Imperfect C++", "Modern C++ Design" and so on. Yikes. Oh well. As long as nobody uses the boost libraries in production code, they can entertain themselves by ordering whatever they want as far as I'm concerned.

But XP? A software development methodology? A programmer ordered a book on methodology? I have to find out who that was. Well, I found out and the shock became worse, because it was one of the cooler kids. Largely out of respect for that guy, I grabbed the book, took it home and read it. What follows is my book review. Spoiler: I say quite some positive things there.

XP and hire/fire dynamics

I didn't look for quotes on this subject, it's just that all of them caught my eye. Maybe it's because HR implications of things are inherently interesting, maybe it's because everything else in a "methodology" is life-threateningly boring, and maybe both. Anyway, the quotes are:

"Given the choice between an extremely skilled loner and a competent-but-social programmer, XP teams consistently choose the more social candidate."

Gotta love the "but". Well, what can I say about this approach? This approach would prevent the best pieces of software and hardware I've seen developed from happening. In all those cases, there was one or more "extremely skilled loners". More on that later, when we get to code ownership, open spaces, pair programming and the like.

For now, it's sufficient to say that a methodology preferring mediocre to "extremely skilled" and calling itself "Extreme Programming" is, um, interesting. That "competent-but-social" is a euphemism for "mediocre" is as clear to me as the fact that mediocrity, while related to lack of talent, is first and foremost a personal value.

"Here's a sad but repeated story: a development team begins applying XP, dramatically improves quality and productivity, but then is disbanded, its leaders fired and the rest of the team scattered. Why does this happen? … The team's improved performance shifted the constraint elsewhere in the organization. The new constraint (e.g. marketing, who can't decide what they want fast enough) doesn't like the spotlight."

I have a fairly developed imagination, especially when it comes to organizational dysfunctions. For example, I can imagine how a team delivering a good result without working overtime will be appreciated less than a team delivering a bad result through heroic efforts (this example is from the book, too; of course the unappreciated team is the one "practicing" XP).

Getting fired over productivity? Because marketing can't invent features fast enough? What??

Now, that certainly challenges one's imagination skills. But we aren't the kind of people to turn down a challenge, are we? OK, lez do it. Imagine. Imagine an organization so rotten, so disgusting, so peculiarly brain-damaged that it can fire people because they work too fast to invent new work for them. Hooray! We did it! I see it right in front of my closed eyes!

But wait, what's that? Are those unfortunate victims of corporate idiocy Extreme Programmers? The competent-but-social programmers? If they're so "social", can't they see what stinky a hole they've landed at? You don't get fired from such places; you quit. I mean, realizing that you're in a hopeless human quagmire is among the most basic social skills – even I have it.

I failed the challenge. I can't imagine this picture.

Brad Jensen, Senior VP, Sabre Airline Solutions: "If programmers won't pair or if they insist on owning code, have the courage to fire them. The rest of the team will bail you ought."

Aha. XP, the two-edged sward. Get fired for using XP or get fired for refusing to use it. Just ducky.

No, really. I don't want to be mean. I won't even pick on the VP's "courage to fire" wording. You know what – I'll even praise this wording. The employer depends on a strong programmer more than the programmer depends on them, and firing an evil, antisocial strong programmer is likely the most courageous act a manager can commit.

All I'm saying is, XP is basically this religious cult, as more quotes will show. This cult is spreading in your organization. They fire people. They easily fire exceedingly productive people, "skilled loners" that won't "pair" and insist on code ownership – nothing evil or antisocial. They fire people just for refusing to accept their most controversial "practices".

Could it be the real reason for the occasional extermination of productive XP teams, assuming Kent Beck is right and the disbanded XP teams he saw actually were productive? With all those "loners" I work with and the kind of "process" we use, I can easily imagine my reaction to a hypothetical XP epidemic at my workplace. Probably something along the lines of "Come and get me! Let's see who gets fired first."

XP "practices"

Why do I place the word "practice" in quotes? I dunno, do you know a better way to typographically mark stupidity? The word kinda reminds of "spiritual practices", the religion thing again. But primarily it reminds me that there's just too much money in this industry. I mean, I have a relative who makes and sells ceramics. Neither she nor her employees use any "best practices". There's not enough money in ceramics for "practices"; you have to work. No time to listen to people talking about work, hence no market for their talks and writings.

This term is annoying on so many levels that I could go on for ages. For example, the words "best practices" and "questionable practices" convey infinite amount of ignorant, arrogant idiocy. You could never pass an exam citing "best practices" – you are supposed to analyze the problem and prove your solution. But in the industry it's perfectly possible to get away with, and even get promoted by substituting analysis with rules of thumb, irrelevant to the case in point as they may be.

OK, enough said about the term "practices"; maybe it's just me. Let's talk about some practices.

Sit Together

XP likes open space. I don't like open space. I'm exceptionally good at ignoring external events when I concentrate, to the point where it takes me 10 seconds to understand what you're saying when you interrupt me in the middle of something. But there's a limit to this autism, and when lots of conversations I can relate to, intellectually and emotionally, happen around me, I can't work.

Many people have talked about the state of "flow" and how you don't want to interrupt someone when they're in it because they're extremely productive, and how interrupting someone all the time means they work at a fraction of their full speed. Myself, I "value" communication as this would be called in XP. I like to talk to people, and people like to talk to me. Lots of them. And much as like it, I like flow, too, and closing the door in my room is quite a Best Practice.

To be fair, with XP, you won't be able to concentrate behind a closed door, either, because of…

Pair Programming

We'll start with some quotes:

"Personal hygiene and health are important issues when pairing. Cover your mouth when you cough. Avoid strong colognes that might affect your partner."

"When programmers aren't emotionally mature enough to separate approval from arousal, working with a person of the opposite gender can bring up sexual feelings that are not in the best interest of the team."

"In Figure 6 the man has moved closer to the woman than is comfortable for her. Neither is making his or her best technical decision at this point."

"Programmers that won't pair." Sounds more like "programmers that won't couple."

"I like to program with someone new every couple of hours…"

OK, OK, this is neither emotionally mature nor in the best interest of the team. Enough with this sort of quotes.

XP measures time in "pair-hours", since all production code must be written in pairs. Since we programmers are good at math, it's easy to see that this halves your task force. Kent Beck claims that pairs are more than 2x more productive than 2 people working alone, so it's a net gain. Is that really so, even if each of the 2 people can close the door?

I worked in teams of size 2 or 3, with everybody going pretty much at full speed, and I can't imagine gaining back the 2x spent on sitting together. Maybe if you're doing something so extraordinarily boring and trivial that you can barely move without talking to someone about it.

No, really, I think XP is for writing huge piles of straightforward code. And here's my proof.

Shared Code

As we've seen, in XP, there's no code ownership unless you want to get fired. The code is owned by the team, and everybody can and is encouraged to change ("refactor") any piece of code, any time.

This concludes the triad of XP practices that I'll call "The Coupling Practices", both because of my emotionally immature amusement with the quotes above and because of the coupling between everything (it's one system owned by everyone, not separate modules with separate owners). The Coupling Practices are:

  • Open space
  • Work in pairs
  • No code ownership

Kent Beck raises just one objection to the shared code practice – people might act irresponsibly and make expedient changes. Well, paranoid attitude towards coworkers is not one of my many sins; if you trust someone to work for your company, then you trust them to act responsibly most of the time, don't you think? My objections are different.

First, the coupling. I'm a great believer in Conway's Law: Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. I'm the great believer that I am simply because I've never seen this law fail in practice. Strong module boundaries mostly appear at social boundaries – code ownership and responsibility – or at technical boundaries (different programming languages, different processes, different machines, kernel space/user space).

If everybody owns all modules, and unless each module is a separate kernel module, they'll quite likely become one big hairy program. And I don't like coupling, at least not in this sense. Sure, XP encourages refactoring, which should take care of the problem; I just never saw anything beat Conway's Law. To me, it's like defeating the law of gravity with spiritual practices.

My second objection is that shared ownership can't work except for trivial code, and this is the proof of the "XP is for trivial stuff" claim I've made above. Let me start with an example.

I used to think that ASIC engineers, the kind that write hardware description code in Verilog or VHDL, are sociopaths. I mean, the ones I've met were very helpful and patient when it came to explaining things to my feeble programmer mind, but apparently they couldn't stand each other. If one of them even touched another's code, the other guy would go to pieces. As a programmer, I was used to the Shared Code practice (you don't need XP to have a happy tar pit of coders friendly patching each other's stuff). So these hardware types scared me off.

And then I began to understand what you were saying in Verilog. In hardware, you have a bunch of variables, and you have code that computes the next values of variables given their current values. Hardware is like a huge recursive function of its registers' state, with the reset logic being the base of the recursion. Now, it's trivial to understand how a variable is updated – it's spelled using the usual arithmetics and logic and if-then-else and stuff. But understanding how all these updates propagate, and what will happen in, say, 4 cycles, and how the pipelines work together is, I dunno, impossible.

So you see, when you have this mental model of how this monstrous state machine works, and someone makes a change to it, you tend to be upset, because it's hard to read someone else's change and update your mental model. And why are they so sure their change makes sense in the first place? They can't possibly understand everything there is to understand! You could say that it's all irrelevant since XP is about software, and this is hardware, but to me, the line is quite blurred. It's code in a programming language. You can run this code on a simulator or an FPGA without manufacturing anything, just by copying bits. It's software.

Now, obviously we have the other extreme – code so straightforward that you can read it from top to bottom and understand it completely. Say, a one-screen script shoveling through the file system, doing simple regexpy parsing and printing statistics. You know, Practical Extraction and Report. They even have a Language for it. The question is, where is most software – is it like a Verilog module or like a screenful of Perl? (BTW, my Verilog and Perl guru is the same person.)

Well, let's see. Low-level interrupt handling and scheduling code is definitely like Verilog – touch my code and I'll go to pieces. Compilers are also like Verilog, because you have complicated algorithms and you can't just read them and say "aha, I see why this is doing what it's supposed to be doing". There are lots of heuristics and lots of knowledge about interaction of passes and complicated data structures. Optimized image processing code is also like Verilog, because there are all the precision considerations and knowledge about the target optimizer and platform. Computer vision code is also like Verilog… Everything I currently deal with is like that.

I mean, code is not like descriptive prose you'd put in a local wiki. You can't read it, say "I get it!", update it, and make the author happy with the "refactoring". Code is more like poetry: change this line, and now the next line doesn't rhyme, or you've broken the rhythm, or you've put angry words into a happy poem, that sort of trouble. Which is one reason to like code ownership.

It's probably useful to have a second programmer with "read access" to important pieces of code, so that at least 2 people can help debug each piece. You can get there with code reviews, and without the Coupling Practices, which I can't imagine working except for code so straightforward that I doubt there's much of its kind.

XP and CMM

Brad Jensen, Senior VP, Sabre Airline Solutions: "The pure XP projects have very few defects… (Even) the (impure) XP projects have very competitive defect rates, one to two defects per thousand lines of code. The Bangalore SPIN, consisting of ten CMM level-five organizations, reports an average of 8 defects per thousand lines of code."

"Defects per LOC". Interesting metric. How do we improve it? First, we don't record "defects". What's a "defect"? Are 10 reported problems caused by one defect or several? Depends on the "root cause analysis", which is of course up to us coders. The second important thing to do is to write more code. That guy working on the data-driven layout rendering should be taken out and shot. We have editing macros for that. You could squeeze 50K LOC out of rendering if it was spelled as code like it should be.

Who is stupid enough to use a metric encouraging people to misattribute problem reports, increase code size, or simply quit the silly job? Why, it's the Capability Maturity Model, of course. Meet XP's competitor: the dreadful CMM.

I could have received a certificate telling that I was trained in CMM, but I couldn't take it and asked my manager to bail me out (and so he did, THANKS!!). It was stupid to the point of physical pain. The CMM instructor, making $160/hour, talked like this: "Blah-blah-blah-PRACTICE!! Blah-blah-blah-ESTABLISH-AND-MAINTAIN!! Blah-blah-blah-GOAL!!" – yelling at some random word, so you couldn't even fall asleep in the absence of any kind of rhythm your brain could learn to ignore. The sleep deprivation and the countless repetitions caused some of the garbage to be ingrained in my memory. Here's an excerpt for ya.

CMM has 5 levels. CMM level 1 is where you operate right now: it denotes the ability to ship something. CMM level 5, the one mentioned in the interview from Kent Beck's book, denotes complete paralysis. To do anything, you have to write or update so many documents, have so many meetings with "relevant stakeholders", and to perform so many pointless measurements of the defects/LOC kind, that it's much more productive to just go postal and at least remove a CMM auditor or two from the face of the Earth in the process.

Levels 2 to 4 indicate various intermediate stages where paralysis is spreading, but you can still ship. For example, level 2 is called "Managed Process". "Managed Process is distinguished by the degree to which the process is Managed". I'm not making this up. There's a book called Capability Maturity Model Integration, and this book, heavy enough to kill a human, is full of this sort of stuff. Reading it is impossible.

And this is why I think XP is a great thing. (See? I promised I'll say positive things; and I'm not done yet!) I've actually read Extreme Programming Explained. About 75% of it seemed meaningless, but I made it through. The CMMI book, on the other hand, is pretty much infeasible.

CMM has hundreds of practices. XP has a couple dozens. CMM has extremely costly certification process. XP doesn't. CMM forces you to write a zillion documents. XP forces you to write a zillion tests, documentation of features, and story cards. CMM is about lengthening the development cycle. XP is about shortening the development cycle.

CMM is inflicted on you by customers who believe the lies of the worthless bastards from the Software Engineering Institute that their "process" will make you ship quality software. XP attempts to establish itself as an alternative legitimate "process" in the realm of suspicious customers and costly vendors. XP tries to sell commonsense stuff like automated testing to the desperate programmers working on a single-customer product with scarce resources. XP also tries to sell itself to the customer, relieving the desperate vendor's programmers from the insane, intolerable overhead of level 5 CMM paralysis.

XP brings hope to dark, wet, stinky corners around the world. I sincerely think it's great. The permanent brain damage of that CMM training course makes me admire XP.

But then there are people who work for product companies and inflict XP upon themselves. It's like paying taxes the government doesn't ask you to pay. XP is an alternative to CMM. You need it if your customer or manager requires you to use a ready-made methodology, out of lack of trust. If you don't have that problem, make yourself your own "process". You are blessed with an opportunity to just work, and organize your work as you go and as you see fit. Why "practice" stuff when you can just work?

How many product companies use CMM, XP or any other ready-made process, and how many make their own process? How many successful companies borrow existing "methodologies" without being forced to do so? I don't know the numbers, but my bet is that most of them don't.

XP and religion

"EMBRACE CHANGE"

This quote is right from the book cover. "Extreme Programming Explained. EMBRACE CHANGE." Does it freak you out the way it freaks me out? Maybe it's because of the cultural gap created by my Russian origins? Nay, I know plenty of English slogans I can relate to. Say, "Trust a condom". Beats "Embrace change" hands-down. Changes come in two flavors, good and bad. Should I "embrace" both kinds?

"Even programmers can be whole people in the real world. XP is an opportunity to test yourself, to be yourself, to realize that maybe you've been fine all along and just hanging with the wrong crowd."

Is this a religious cult or what?

"The key to XP is integrity, acting in harmony with my true values… The past five years have been a journey of changing my actual values into those I wanted to hold."

"Journey". Talking about being good. Do you like hippies? I like hippies more than nazis. I like XP more than CMM. But IMO the hippie world view and general style is suboptimal.

"With XP, I work to become worthy of respect and offer respect to others. I'm content to do my best and strive always to improve. I hold values I'm proud of and act in harmony with those values."

"I have seen people applying XP bring renewed hope to their software development and their lives. You know enough to get started. I encourage you to start right now. Think about your values. Make conscious choices to live in harmony with them."

It's a religion, people.

I'm not strictly against religion. I even have vague respect towards religious people, those stating that their purpose in life is to be good and that they know how to do it. (I similarly respect the intentions and discipline of various development methodology followers.) Of course when a religious person behaves as an asshole, it's way more annoying than a secular asshole is, because the latter at least doesn't state that he's all about being good and living right. (I noticed that many people who love to talk about "proper process" commit the worst atrocities.)

Some religions or sects are awful, to the point of human sacrifices. (CMM.) Most modern mainstream religions are kinda nice though, and they promote good Values and Practices, like not killing, not stealing and helping each other. (XP promotes automated testing, short build, integration and release cycles.) Many religions have peculiar regulations when it comes to sex. (XP has The Coupling Practices.) This is when religious people start to get annoying, to the point of throwing stones at people who are improperly dressed, not to mention engaging in forbidden sexual relationships. (Refuse to "pair" and XP gets you fired.)

Interestingly enough, the majority of religious people feel much stronger about the peculiar regulations of their religion than the universally recognized atrocities, which are also forbidden by their religion. They never gather around prisons to throw stones at convicts going on vacation, they are more likely to do so near a gay parade. (The Senior VP from Kent Beck's interview didn't recommend firing over lack of tests, which all of us would recognize as a crime; he recommended firing over the violation of The Coupling Practices.)

And this is when my patience towards religious people evaporates. So there's a gay parade. Got a problem with it? Shove it! I'm not gay, but the idea of harassing people based on this sort of criteria is disgusting. (I think I can blend in very well in a team engaging in pair programming and collective ownership, but I know awesome programmers who can't work that way; just try to get them fired.)

But still, religion is not all bad. I think that there are religious communities which are less inflicted with drug abuse compared to your average secular community. (It's not unlikely that many XP teams have more tests and less bugs than "secular" teams using no "standard" process.) Few people have the courage and the patience needed to openly attack religion; in particular, holy scriptures tend to be long and obscure. (Skim through an XP or especially a CMM book and try to stay awake or find refutable claims.)

Young people who aren't cynical enough to realize that bullshit is free and hence everybody is going to bullshit you if only you let them tend to be an easy target for religions seeking expansion. (When I started working as a programmer, I was shocked how messy everything was, and cheerfully welcomed every "methodologist" about to create order out of the chaos. Today, even saying "Best Practice" near me is nor recommended.)

Summary

I treat XP as a religious lifestyle (true of any methodology). XP is not a bad religion. Its primary virtue is the threat it poses to the cannibalistic cults such as the CMM. While I don't want to be anywhere near XP churches, I think religion is an inevitable attribute of human existence, and as far as religions go, XP is not at all bad.

557 comments ↓

#1 levinv on 06.30.08 at 7:25 pm

Hi there,

As an acolyte of the XP religion, I never the less appreciated your blog posting. I do think that having some honest to goodness set practices is a good idea, and I ever believe that pair programming does add a lot of value in many ways. None the less, there is always a tension in any defined practice between discipline and dogma. On one side you wind up with a complete absence of standards; on the other hand you end up with people who start to look like a cult. The goal is to find a sane middle ground, but it's definitely easier said than done.

#2 jeremy on 06.30.08 at 9:59 pm

I agree with many of the things you've said, a few points:

* When you have a large company with a software product you need to maintain for decades then having code owners is a liability. You don't want loaner star programmers, which you can put up with in a startup, you want to write software that works and you can maintain.

* Pair programing may lower individual programmer output but it also lowers bug count. It's like unit testing – looks like it's slowing you down but actually speeds things up. Of course, for really good programmers there is no gain because they're so good at writing lots of good code with low bug counts but few programmers are like that.

* In the end the motivation here was to sell a book, for that you need enough wording to make up something people will buy.

* About the openspace thing – see PeopleWare…

I think, like any methodology you can just take what works for you out of it.

#3 levinv on 06.30.08 at 10:07 pm

I'd just like to add that the "coupling practices," to my mind anyway, are about helping the developers in the team evolve toward a *shared* mental model of the code. Combined with automated tests, this reduces the chances of introducing problems. To me the cost benefit is roughly: cost of introducing problems vs. cost to productivity of having only one person working on a piece of functionality over time without other people understanding what that person is doing, and of course the possible loss of that developer entirely.

Again, it's important to stress that professionalism and competence is a pre-requisite: You don't want people making willful or stupid changes. I definitely believe that raw competence is very loosely coupled with any methodology. In other words, some XP practices have, in my opinion, improved my programming skills, but having poor programmers follow XP religiously will not produce a particularly good result.

#4 Yossi Kreinin on 07.01.08 at 10:55 am

To levinv: the way to summarize my argument is that I think code should have a write lock :) As I said, it's OK and sometimes crucial to have other people who read the code in addition to the guy writing it. But for non-trivial there should be just one person making modifications, and a guy who reviewed the code and knows it shouldn't think that it's enough to make modifications sensibly. If the "write-locker" wishes to move on to something else, the write lock is released and one of the readers gets it. All I'm saying is that I don't like concurrent updates to the same code by several people, because of mental model synchronization problems. XP warns about the problem with long-living branches; why are they a problem? Because merges can make changes that were valid separately invalid in the merged version, even if automated merge passes. My worst bugs came from merges with myself – when changes done in different branches were finally brought together after a year or so. Several people making changes to the same tricky code is even worse.

#5 Yossi Kreinin on 07.01.08 at 11:06 am

to jeremy:

* regarding maintenance – to me "ownership" is the "write lock" from the comment above. If "ownership" means "read and write lock and intimidation of anybody trying to get near your code", then you get the problem you mention.

* I think pair programming lowers throughput dramatically as you can't enter the state of flow. Synchronizing a pair of brains all the time wastes a lot of effort. I like most to work in pairs on boring stuff which also can't be done very quickly because you have to shovel through a mess, and neither of you quite knows how to do each step at first glance. For stuff where you can get into a state of flow, or stuff where you need to concentrate deeply and look at ideas and pick some good one, I think you lose 10x speed on top of the 2x immediately lost due to pairing. It's hard to believe that the bug reduction coming from having two pairs of eyes gives you back the 20x. Perhaps you saw it work that way though.

* Wording – well, if you use wording appropriate for a self-improvement New Age booklet all over the place, I can guess who you're trying to sell that book to…

Regarding taking what works from methodologies – sure, the way secular laws or morality are not unlike religious laws, and you can see holy scriptures quoted at times in "secular wisdom"… I'm going to use the quote about overproduction being the greatest waste myself, and it's from the book (although itself some Toyota-related quote).

I just don't want to be anywhere near a religion or a methodology in its full glory.

#6 M@ on 07.01.08 at 12:53 pm

Very good writeup, and you are right on target. Try to get your mind around this one: I spent a year working for a large software shop that claimed to be both XP and CMMI. In your description, this would be like being a Christian Athiest.

I did as your article suggested anyone with a brain would do and quit.

#7 Yossi Kreinin on 07.01.08 at 1:10 pm

to M@: more like Christians sacrificing humans every Christmas or something. XP+CMMI=ZOMFG.

#8 Aristotle Pagaltzis on 07.01.08 at 2:50 pm

I just had to point out one thing, that “EMBRACE CHANGE” is not as nonsensical as you may think. And yes, it does indeed refer to both good and bad change. What it should say is “Change is inevitable – deal with it.” The slogan is about the core idea of “Agile” – inasmuch as there is anything worthwhile to those methodologies at all, it’s that Big Design Up Front does not and cannot work. Making up a complete design prior to any programming and following up with a phase in which that design is “merely implemented” is fantasy.

But you have to know that ahead of time for the slogan to make much sense at all.

PS.: I hate your guts for making me sign up for another account.

#9 Yossi Kreinin on 07.01.08 at 3:18 pm

Yeah, but do you really think this hatred of my inner workings compensates for my pride for finally getting your comment? :)

EMBRACE CHANGE doesn't seem to be about Big Design Up Front, although the book does mention BDUF, LDUF (Little…) and ENUF (no, not Enough…, something Else Design Up Front; I hoped there would also be a FUKOF, but no.)

EMBRACE CHANGE is about changing the way you think about software development, your life, the universe, and everything. Let's not play naive. The book is full of quotes about CHANGE, and most of them are about changing you, not changing your code. There's even a place where he says that people are more ready to accept CHANGE shortly after experiencing a failure (is that a note you'd expect a cult promoter to take or what?) Quotes about "us going about our business of changing the way people think about software".

You should CHANGE to become an XP believer. EMBRACE it already.

#10 del.icio.us bookmarks for June 30th, 2008 through July 1st, 2008 < Subject Code on 07.01.08 at 4:31 pm

[...] Extreme Programming Explained – [...]

#11 links for 2008-07-02 on 07.01.08 at 4:44 pm

[...] Extreme Programming Explained (tags: blog programming psychology management projects productivity software) [...]

#12 ProjectX Blog » Blog Archive » Xlinks - 2 / 7 / 2008 on 07.01.08 at 6:07 pm

[...] Extreme programming explained Added on 07/02/2008 at 01:40PM [...]

#13 KillJones on 07.01.08 at 9:13 pm

Loved this post. As a developer in an environment that is making steady progress toward becoming religious, you had me shouting, "preach on, brother, preach on!"

I often wonder if many of the advantages of XP are short-lived. For example, I have found it to be true that one produces fewer bugs when pair programming. This is largely because pairs tend to screw off less. But, if following a good TDD style, wouldn't bona fide hard-working developers be as productive? More productive?

I admire the collaborative development of XP. It is a truly good thing. All good things, though, run the risk of becoming bad ones (in ridiculous portions). If you don't believe me, go eat an entire bottle of vitamins and get back to me.

#14 levinv on 07.01.08 at 9:14 pm

Hi Yossi, I wonder if what you're referring to is a model along the lines of OSS development. As far as I can tell, in say the Linux kernel, there's a hierarchy of committers. If you want to supply a patch, you may try to get it checked into a branch somewhere, and eventually your check-in may percolate to a main committer who will then decide whether it is acceptable to go into the trunk for release in the "official version". I think this is major overkill for any kind of normal integrated development team though. In any kind of sensible software shop environment, I'd expect the following: a) don't just randomly check in a change to some piece of code you never actually have any reason to work with; b) if the code is complex, make sure you understand the underlying algorithms/principles being applied and talk to the guy who does most of the work on this code before making changes; c) include automated testing as part of the development process (they don't have to be XP "unit" tests. For example, in the case of concurrent code, you may have tests that run traces and check them for problems) .

#15 Entity on 07.02.08 at 4:30 am

Don't know about your opinion Yossi, but would like to hear it.

During my time overseas I had a great opportunity to talk to several business managers regard software development inside their organization. One of the most common thing i found, is that most organization would adopt curtain methodologies that suited their software development field. Though, they would not adopt everything, instead would use key aspects of the methodologie that suited them instead.

I knew each business owner personally, and talked with most of their staff well overseas. Smaller shops had the tendency to embrace software ownership and faster development turn around times. Larger development shops, would use different systems for different departments. Though each department seem to adopt or change a core design practices regardless of the management practices in place. Full enterprise shops would focus more on documentation, and less on code ownership, instead would be more reliant on commands coming from above.

One common thing they all had in common though. All of them were have trouble staying on-top of the work they had coming into the business, and keeping existing staff. So maybe it isn't really a problem with what methodologies you adopt or don't. But having a stable work force that knows your systems and keeping them.

#16 timander on 07.02.08 at 10:11 am

Thanks for the good read.

I am curious if you read the first edition or the second edition of the book, they seem to have quite a different attitude (the first one is a lot more cult-ish).

I agree that adopting practices without understanding the principles behind them is like being in a religious cult. I see XP as one implementation of practices to support Agile Principles.

Pairing programming is not for everyone all of the time.
Pairing is not necessarily going to reduce problems with your code base.

Pairing has been successfully for my team because it has accelerated learning, increased code clarity, and identified ways to simplify and test the code. It's like having continuous code review. It has also helped us minimize risk by distributing knowledge to everyone.

I also agree that someone who doesn't understand what the code is doing has no business changing something that is going to mess up everyone's mental map, but it might be appropriate for someone who needs a change to pair with someone who is familiar with the code base.

#17 Yossi Kreinin on 07.02.08 at 11:14 am

To timander: I read the second edition. Your remark makes me wonder what was in the first :)

To Entity: I didn't quite understand which opinion of mine you ask about :) Anyway, doing things mentioned in methodologies isn't using methodologies, it's using common sense. My problem with methodology is when instead of saying "I do whatever makes sense", you say "I do XP".

"Processes" aren't technology; no point or a good way to reuse them. Using an existing operating system instead of rolling your own makes sense. Using someone else's advices and wisdom instead of your own common sense in everyday life makes no sense unless you're a cult follower. Which is why sane companies rarely borrow process unless forced to do so for certification purposes.

#18 The Burgeoning Openly Owned Web » links for 2008-07-03 on 07.02.08 at 5:24 pm

[...] Extreme Programming Explained If ya need to bluff or just have an interest (tags: xp extreme programming) [...]

#19 joemama on 07.03.08 at 5:22 am

XP can't possibly work, never has, and never will, and anyone who suggests that any of its elements can ever work is a religious zealot. I don't for the life of me understand why people keep insisting that we "change," what we've been doing all along is working just fine, thank you very much.

Oddly, this article looks recent, even though the book is 4 years old, and the original is near ten years old. Obviously you've been keeping up with trends in software development, something every programmer as smart as you should be doing. Maybe you can rant about CASE tools next.

#20 DGentry on 07.03.08 at 5:54 am

I've never worked in an Extreme Programming shop. I suppose I'd be willing to try it, though I'd have this deep-seated worry that some day I'd be explaining to the police detective that my paired programmer had quibbled over the naming of loop variables one time too many…

#21 andy.edmonds.be › links for 2008-07-03 on 07.03.08 at 6:10 am

[...] Extreme Programming Explained If ya need to bluff or just have an interest (tags: xp extreme programming) [...]

#22 Yossi Kreinin on 07.03.08 at 1:10 pm

To DGentry: myself, I always liked working in pairs, and specifically I think that I'm very tolerable to style differences (so I'd gladly rename my loop vars to suit the emotional needs of the other guy). However, (1) that it's fun doesn't mean that it doesn't decrease productivity and (2) that it's fun to me doesn't mean it's even tolerable for other equally or more productive people and (3) 1 and 2 aren't compatible with the firing practices advocated by XP.

To joemama: being the lazy dimwit that I am, my policy is to let other people monitor trends to first see who tends to get interested. Then if the brilliant people like yourself love a trend, I of course immediately follow it without questions. If chaps in my league are interested, I take a closer look. As RTFAing would reveal, nobody seemed to care about XP around me for a long time, so I kinda didn't want to waste my time checking out a methodology.

#23 Weekly linkdump #133 - max - блог разработчиков on 07.03.08 at 9:35 pm

[...] шикарная статья с критикой XP методологии, Extreme Programming Explained. Там и CMM(I) досталось по ходу дела. Лучшая статья по [...]

#24 links for 2008-07-06 « The Adventures of Geekgirl on 07.05.08 at 8:46 pm

[...] Extreme Programming Explained (tags: programming xp development extreme agile blog methodology) [...]

#25 brynt on 08.21.08 at 9:56 am

You're spot on with the whole "I think XP is for writing huge piles of straightforward code.", but I don't think that's a bad thing. The majority of modern software development is about straightforward business code just applied slightly differently. Writing the actual code generally isn't that exciting, and the challenge becomes keeping people focussed on the task at hand. Pair programming keeps one from getting too distracted, and helps get the weaker members of the team up to speed. CMM and the rest of the heavily process driven models don't seem to consider "human boredom" as a primary factor at all.

#26 Yossi Kreinin on 08.21.08 at 11:09 am

I've wrote my share of businessy code. I'm not sure how straightforward it is on average. One aspect of this is that when you have to generate many printed reports, you can "straightforwardly" hand-code them all or you can have a data-driven printing engine, etc. Another aspect is that there are gnarly corners of behavior specification. And of course people are bored by different things, moreover, some care more about the process of coding and some care more about the result (working projects), and the latter kind is less prone to boredom.

But I dunno, maybe you're right and there's intrinsically more boring coding than any other kind (as opposed to "most code is boring because people do it wrong"). I can't judge the distribution of such things. What I can say is that a way to battle boredom shouldn't be called "Extreme Programming" or "Agile Methodology", and shouldn't be marketed as the best way of life for small teams trying to do interesting stuff quickly.

CMM surely considers boredom as a primary factor, albeit not in the way you mentioned – they use it as their number #1 weapon, boring their victims to the point of inability to resist.

#27 brynt on 08.22.08 at 8:34 am

Maybe "straightforward" not in the sense that the problems are easier than other kinds, but that it's a field where a problem you face will probably has already been worked on by a hundred other people who will have found answers to it and written it up on their website.

I think people get stuck when writing business programs more often through a sheer loss of motivation than for other reasons (not knowing what to do, not being "smart enough" etc). It witnesses that problem you pointed out in "cardinal programming jokes", where people claim they just don't know how to proceed but would suddenly change their tune if there was a million dollar carrot attached. By putting two people together XP tries to reduce the overlapping area in the Venn diagram of What Bores You. Even if both people are bored by the same thing, they're far less likely to give up/procrastinate/do the wrong thing if there's someone else sitting next to them.

The process oriented side gets it wrong when hearing "I just don't know how to proceed". It ignores motivation entirely, and believes that people just need to have their instructions spelt out in condescendingly simple deatils. Now there's two problems, unmotivated people and a ton of superflous process to follow, along with a nice papertrail so no one can claim they didn't know what to do.

Motivation is such a key part to programmer productivity in general, that while it could be named better, addressing the problems of a lack of motivation has to be a key part of any programming methodology.

#28 Yossi Kreinin on 08.22.08 at 9:04 am

I'll confess that I don't have the slightest idea how to motivate anybody. One of the very many reasons I don't want to manage anything. I used to think that most people would happily grind away if only nobody got in their way. I currently lean towards the opposite conclusion – most won't work unless there's a $1M carrot or a $100 chainsaw involved. Depressing.

And specifically with programming the thing is worse 'cause it's a mass profession and many people who can't stand it end up trying to do it for the money (that's why I became a programmer). I heard that on average, people quit programming after 5 years.

To which I reply, whatever. I ain't no manager, founder or any other sucker. Not My Problem.

That said, if you say that from your experience pair programming can actually put the fun back into the whole thing, I can only say "three cheers". As long as nobody tries to sink "skilled loners" in snake oil.

#29 programming by evolution? - Page 3 | keyongtech on 02.23.09 at 8:08 am

[...] to fix them. 2009-02-09 Today, i happened to run across a blog on the eXtreme Programing FUCK. http://www.yosefk.com/blog/extreme-p…explained.html Great article! Xah $B-t(B [...]

#30 Alexander Byndyu on 04.16.09 at 6:51 am

Thanks for post! Very interesting things for me.

#31 James T. Savidge on 07.17.09 at 9:43 am

Greetings,

You wrote: “Getting fired over productivity? Because marketing can’t invent features fast enough? What??”

Yes it sometimes happens, but nowadays they frequently call it being “laid off.”

If a productive team or a bad economy manages reduce the work back-log, a company will see the need for fewer resources and will try and save money.

Why “lay off” the productive programmers?

Level of productivity may not really be a factor in the considerations of who is to be let go. The “lower productivity” people are likely to be the ones who have been with the company longest, and their “institutional knowledge” might make it more expensive for the company to let them go that it is for the newer hires. The newer hires might be the higher productive ones, in part because of their lack of knowing how the company is supposed to do things.

Programmers that are so productive that not only does the company no longer need their fast output, but actually tells them to go away, often end up moving into contract and consulting work, where they expect the companies to tell them at some point: “Thank you. Now please go away.” :-)

Hopefully my use of quotes won’t be an overdone attempt to mark places where I see stupidity. ;-)

Thanks for the article.

James T. Savidge, Friday, July 17, 2009

#32 Yossi Kreinin on 07.18.09 at 6:21 am

Regarding the importance of backlog for job security: Iiiiiii don't know. There are two questions: (1) is the geometry of the real world inherently evil here and those with backlog-job-security really end up better off on average, and (2) should one strive to be in alignment with that geometry provided it is in fact evil as described in (1)? I say, let's assume the world is inherently good and try to waste less. Let's assume that organizations which fire for productivity are sick and we don't want to be there anyway. Darwin will judge who was right. Many an evil empire collapsed in front of me under the weight of its backlog.

Regarding newer hires being more productive on average while fired more frequently on average: again, it can also be the other way around. As you accumulate experience in the organization, you can use it to shield yourself from work, and you can use it to get more work done (by knowing who really needs what and who's really good at what and what will work out and what won't), and of course you can do a combination of those. The question is, what happens on average? Go figure.

I still say that the ability of marketeers to come up with features as a new bottleneck created by a productivity gain is the weirdest problem to cite.

#33 Jason on 07.22.09 at 1:47 pm

We're actually trying to take the best aspects of both ends of the spectrum and do what makes sense for us; we do some XP and we do some formalized CMM-3-like process.

It works for us. We're always looking to do as little as makes sense.

So, I am skeptical of the claims of both, but I believe both have positive ideas. As far as XP goes:
Others have written about XP, paraphrasing:

- If integrating is a good thing, integrate continuously.
- If testing is a good thing, write your tests first.
- If peer review is good, have your peer review as you write.
- If communication is good, sit together in an open environment.

So, the argument that XP seems to make is that there is never too much of a good thing. From my standpoint, that's not true in life, so why should it be true in software development?

#34 The Accelerated Weight Loss Program...That Never Fails! | 7Wins.eu on 08.25.09 at 11:39 pm

[...] The Weight Loss Diet and Exercise Guru » Blog Archive » Behind the neck press, good and bad carbs, cardio conundrumAOPA ASF Blog: Safety eJournal » Blog Archive » "A Random Act of God…"Timothy Dwight College | Yale University » Notes and NewsInternal Parasites: Protect Your Health — Hypnosis Network BlogTrading Outlook for CIT Group Inc. (CIT) | Hot Penny Stocks InvestmentsSpace Politics » Thoughts on the Augustine committee meetingU.S. Pharmacist » Blog Archive » Erectile Dysfunction: Beyond the Phosphodiesterase Inhibitors400 Bad Request [...]

#35 mcdonalds coupons on 09.13.09 at 6:32 pm

Thanks very much for this awesome entry.

#36 Matt Katz (mattkatz) 's status on Monday, 12-Oct-09 16:54:26 UTC - Identi.ca on 10.12.09 at 8:54 am

[...] http://www.yosefk.com/blog/extreme-programming-explained.html a few seconds ago from IdentiFox [...]

#37 Nathan on 10.12.09 at 9:11 am

Wow, that's a new kind of spam. Clever.

#38 Diego on 11.16.09 at 11:27 am

Great article. I'm in debt with the guy from slashdot that linked you.

Some time ago I tried to experiment pair-programming with one of my partners. The conclusion was:

Positives:
* Occasionally we learned something new from the other one
* Occasionally the non-typer did some good suggestions

Negatives
* Difficult if your job involves anything more than just coding (is there a programmer that just types all day long?)
* Requires the same level of knowledge in the subject domain , or this degenerates in a teaching session
* The detected errors are usually the most trivial ones (the ones a bit of testing should catch); but the mayor ones (usually in the design) are not discovered in this phase (again until actual testing)

Also, we embraced a limited version of test-driven development with good results. IMO the tests are some sort of extension to the specification, apart from their "problem-catcher" appearance. Nobody talks more about XP.

#39 Yossi Kreinin on 11.16.09 at 3:11 pm

Glad you liked it.

Regarding TDD the trademark/mantra – again, on one hand I've personally spent loads of time directly on testing in some contexts, on making tests easy for others in other contexts and on mandatory nightly testing in still other contexts and while it was one of the most mundane things I've worked on, it was (in perhaps a less than exciting way) among the most useful; but on the other hand I'm doing it as a secular activity and wouldn't like to join a testing religion.

#40 Eljay on 11.30.09 at 7:34 am

If some poor programmer is stuck in CMM hell (or alternatively Sigma Six paralysis hell, or the spawn-of-CMM hell known as TSP/PSP), and he can sell XP as an approved alternative in that CMM culture — and here's the trick — the programmer is not bound to by-the-book XP.

The XP programmer can do whatever he want, call it XP, and no one is the wiser. If someone calls the XP programmer on not following XP by-the-book, he can claim they are using an Agile variant of XP. And if continued to be pressed on that as being not-XP-enough, can claim they are using Lean XP hybrid, or Scrum XP hybrid, or Continuous Integration XP hybrid.

There's enough ammo there to fend of CMM (or Six Sigma, or TSP/PSP independent of CMM) indefinitely.

Now where did I put my Six Sigma black belt…

#41 Yossi Kreinin on 11.30.09 at 10:02 am

Perhaps this could work, although at places where CMM sells they like what they call identifiable work products (things one can print out to collect some dust), so you'd have to produce some of those matching whatever notion of XP you sell as an alternative to CMM. Not that you couldn't do it given enough persistence and willpower, just saying that fighting bureaucracy tends to generate bureaucracy as a side-effect similarly to the way fighting violence with government tends to generate some level of violence by the government as a side-effect. Overall I'm all for governments as well as grassroots counter-bureaucracy bureaucracy, in the few places when those are necessary.

#42 Ryan on 12.17.09 at 5:39 am

I had never heard of Conway's law until just now, and thank you for teaching me. It explains my company's product perfectly. Yesterday I had a thought, "Everything bad that happened today could have been solved by better business practices". Then I thought "wtf am I thinking. I must be old". Great article.

#43 Yossi Kreinin on 12.17.09 at 6:23 am

I think that Conway's law generally shapes things in good ways (not that there's much that can be done when/if it doesn't). If you compare the way things should be broken into subsystems based on articulated analysis and the way things tend to get broken into subsystems based on the evolution of responsibility of different people and teams, the second way turns out in hindsight to be neat in some unexpected ways, or more practical than the first way which turns out to have unexpected flaws or expected flaws of unexpectedly high practical importance.

#44 bfish.xaedalus.net » A tech blog recommendation on 03.25.10 at 2:14 pm

[...] On extreme programming (aka. XP, aka. Agile process) as a religious cult [...]

#45 Wayne Ariola on 09.28.10 at 4:32 pm

There is merit to the XP and the the latest craze over iterative approaches. This is a good article:

http://www.parasoft.com/alm

#46 Yossi Kreinin on 09.29.10 at 12:39 am

This isn't an "article", it's a page advertising a product. A programming-related product. This makes it a spam comment, whereas the phrasing passes the Turing test. Left hanging here for combining the two properties – never met human/AI-generated spam comments before, thought I'd keep the sample.

#47 Paul M. Parks on 12.30.11 at 8:25 am

Am I the only one who thinks that the slogan "Embrace Change" is a contradiction in terms? The word "embrace" connotes clinging; how does one cling to change? Or, maybe, the author was using the sense of adoption — I should adopt change?

It strikes me as being rather nonsensical. I think you're spot on in calling it religious.

#48 Yossi Kreinin on 12.31.11 at 3:15 am

@Paul: interesting site.

#49 bcat on 04.01.12 at 3:22 am

that would be the longest article I read in some time, good job :)

another parallel with religion – there are 2 types of people, the ones that do the right thing automatically when told "do what/how you want" and the ones that would do unspeakable/terrible things. Former would be confused by any unnecessary practices, later really need religion/methodology

#50 Vintharas on 07.24.12 at 12:26 pm

Omg that was a freaking hilarious read XDDDDD Awesome XDDDD

#51 Sigi on 10.03.12 at 10:39 am

Another *great* article, Yosef, and interesting discussion underneath (the best blogs are usually also the ones with the great comment flow, yours is no exception).

However, one link is still missing here:

http://programming-motherfucker.com/

#52 Martin on 10.30.13 at 10:46 pm

I might have an explanation of why/when XP genuinely works. If you have mediocre programmers that don't give a hoot about the work, having someone there will give you a sense of commitment, sense of comradery or a sense of being watched, whichever makes you plow ahead. When I was in high school I was recruited for pair-gym time. In this sense two bored programmers with some sense of having to work because (they're letting the other one down OR their laziness will be visible OR a sense of us against them OR something) will definitely outperform two bored programmers being bored separately. ….. you'll have to replace bored with the adjective that describes the actual situation. ….. and of course, if this theory applies, it would only cause an improvement for mildly un-engaged programmers that have some skills. I.e. not morons, assholes and not people who are skilled, productive and engaged, the former category is beyond the help of this religion, the latter doesn't need it.

You can graph the XQ (XP quotient, some kind of product of skills, motivation and ingredient X) and you'll get a nice bell shaped curve. Or so my theory predicts.

There is a formula for calculating the effect on productivity. But I won't write it here so I'm not killed by the armies of zealous followers. :-) LOL ETC

shrugs

#53 DementevArnold1998Lax on 04.30.19 at 8:49 pm

5023 viagra vs enzyte

lexapro viagra

#54 RannevLax on 05.01.19 at 8:24 am

europa viagra barata

#55 RannevLax on 05.01.19 at 8:28 am

buy online viagra in canada

#56 RannevLax on 05.01.19 at 8:39 am

viagra no prescription paypal

#57 RannevLax on 05.01.19 at 8:41 am

irlanda viagra barata

#58 RannevLax on 05.01.19 at 8:52 am

viagra psychischer strung

#59 RannevLax on 05.01.19 at 9:08 am

wow inexpensive is

#60 RannevLax on 05.01.19 at 9:24 am

viagra online with paypal

#61 RannevLax on 05.01.19 at 9:45 am

teachers union viagra

#62 RannevLax on 05.01.19 at 9:46 am

is for sale cork

#63 RannevLax on 05.01.19 at 9:56 am

is 50mg tablet price

#64 RannevLax on 05.01.19 at 9:58 am

is per amore

#65 RannevLax on 05.01.19 at 10:06 am

is grande 50 mg

#66 RannevLax on 05.01.19 at 10:09 am

buy pink viagra by pfizer

#67 RannevLax on 05.01.19 at 10:25 am

i recommend cheap viagra

#68 RannevLax on 05.01.19 at 10:39 am

online viagra france

#69 RannevLax on 05.01.19 at 10:47 am

click here is soft

#70 RannevLax on 05.01.19 at 10:58 am

buy viagra 25mg tablets

#71 RannevLax on 05.01.19 at 11:39 am

viagra pris sverige

#72 RannevLax on 05.01.19 at 11:50 am

link for you female viagra uk

#73 RannevLax on 05.01.19 at 11:51 am

viagra cialis einnahme

#74 RannevLax on 05.01.19 at 11:59 am

acheter viagra en suisse

#75 RannevLax on 05.01.19 at 12:19 pm

viagra sales usa

#76 RannevLax on 05.01.19 at 12:33 pm

is tablets best price

#77 RannevLax on 05.01.19 at 12:52 pm

viagra age use

#78 RannevLax on 05.01.19 at 1:11 pm

33 viagra order online

#79 RannevLax on 05.01.19 at 1:32 pm

does rush limbaugh use viagra

#80 RannevLax on 05.01.19 at 1:45 pm

viagra overdose 200mg

#81 RannevLax on 05.01.19 at 1:56 pm

viagra online to buy

#82 RannevLax on 05.01.19 at 2:12 pm

be is 25mg tablets

#83 RannevLax on 05.01.19 at 2:25 pm

viagra for sale cork

#84 RannevLax on 05.01.19 at 2:33 pm

usefull link viagra 100mg

#85 RannevLax on 05.01.19 at 2:44 pm

viagra e nitroderivati

#86 RannevLax on 05.01.19 at 3:05 pm

sample is coupons

#87 RannevLax on 05.01.19 at 3:37 pm

price of viagra in cozumel

#88 RannevLax on 05.01.19 at 3:39 pm

sirve es y que viagra que para

#89 RannevLax on 05.01.19 at 3:50 pm

we use it original viagra

#90 RannevLax on 05.01.19 at 4:06 pm

order is cheap online

#91 RannevLax on 05.01.19 at 4:19 pm

in tijuana viagra pharmacy buy

#92 RannevLax on 05.01.19 at 5:21 pm

buy cheap female viagra

#93 RannevLax on 05.01.19 at 5:32 pm

wow inexpensive viagra

#94 RannevLax on 05.01.19 at 5:43 pm

order viagra cheap online

#95 RannevLax on 05.01.19 at 5:55 pm

videos usando is femenino

#96 RannevLax on 05.01.19 at 5:56 pm

usefull link is 100mg

#97 RannevLax on 05.01.19 at 6:04 pm

viagra vendita on lin

#98 RannevLax on 05.01.19 at 6:08 pm

tomar viagra hace dano

#99 RannevLax on 05.01.19 at 6:24 pm

something better than viagra

#100 RannevLax on 05.01.19 at 6:25 pm

generisches online viagra

#101 RannevLax on 05.01.19 at 6:37 pm

viagra gnrique inde

#102 RannevLax on 05.01.19 at 6:44 pm

viagra grande 50 mg

#103 RannevLax on 05.01.19 at 6:56 pm

viagra and diarrhea

#104 RannevLax on 05.01.19 at 7:16 pm

isprobeprobe paypal

#105 RannevLax on 05.01.19 at 7:37 pm

cheap viagra online 25mg

#106 RannevLax on 05.01.19 at 8:09 pm

sale is uk

#107 RannevLax on 05.01.19 at 8:11 pm

can be is in malaysia

#108 RannevLax on 05.01.19 at 8:38 pm

viagra preisvergleich 12

#109 RannevLax on 05.01.19 at 8:59 pm

try it viagra price online

#110 RannevLax on 05.01.19 at 9:11 pm

barato is suave

#111 RannevLax on 05.01.19 at 9:42 pm

click now is sales online

#112 RannevLax on 05.01.19 at 9:50 pm

where to be herbal is

#113 RannevLax on 05.01.19 at 10:11 pm

should i take cialis or viagra

#114 RannevLax on 05.01.19 at 10:22 pm

viagra quanto costa

#115 RannevLax on 05.01.19 at 10:35 pm

rapid heart viagra

#116 RannevLax on 05.01.19 at 10:43 pm

the best site canadian viagra

#117 RannevLax on 05.01.19 at 11:15 pm

natural viagra alternatives

#118 RannevLax on 05.01.19 at 11:43 pm

achat is

#119 RannevLax on 05.01.19 at 11:48 pm

is purchase in uk

#120 RannevLax on 05.02.19 at 12:28 am

viagraprobeprobe paypal

#121 RannevLax on 05.02.19 at 12:36 am

google low price viagra

#122 RannevLax on 05.02.19 at 12:47 am

generic viagra from china

#123 RannevLax on 05.02.19 at 1:29 am

buy viagra manhattan

#124 RannevLax on 05.02.19 at 2:30 am

how do i get viagra prescribed

#125 DementevArnold1998Lax on 05.02.19 at 2:35 am

5023 link for you uk viagra online

how to buy viagra manila

#126 RannevLax on 05.02.19 at 2:41 am

price of is in cozumel

#127 RannevLax on 05.02.19 at 3:34 am

where to buy viagra for cheap

#128 RannevLax on 05.02.19 at 3:35 am

dirrections for use of viagra

#129 RannevLax on 05.02.19 at 3:38 am

cost of is 2013

#130 RannevLax on 05.02.19 at 3:46 am

is effetti durata

#131 RannevLax on 05.02.19 at 4:02 am

try it real viagra

#132 RannevLax on 05.02.19 at 4:34 am

be real brand is

#133 RannevLax on 05.02.19 at 4:56 am

mejor viagra natura

#134 DementevArnold1998Lax on 05.02.19 at 5:19 am

a149 is natrlich

is apotheke online

#135 RannevLax on 05.02.19 at 5:28 am

commander du viagra en suisse

#136 RannevLax on 05.02.19 at 5:31 am

does is really work men

#137 DementevArnold1998Lax on 05.02.19 at 5:36 am

a149 prezzo is originale pfizer

levitra versus is

#138 RannevLax on 05.02.19 at 5:41 am

online sales of viagra

#139 RannevLax on 05.02.19 at 6:12 am

campioni viagra generici

#140 RannevLax on 05.02.19 at 6:19 am

viagra precio receta

#141 RannevLax on 05.02.19 at 7:03 am

viagra from indian company

#142 RannevLax on 05.02.19 at 7:07 am

acheter viagra le moins cher

#143 RannevLax on 05.02.19 at 7:24 am

viagra online rosario

#144 RannevLax on 05.02.19 at 7:37 am

tarif viagra tarifs viagra

#145 RannevLax on 05.02.19 at 8:35 am

the is be in

#146 RannevLax on 05.02.19 at 8:42 am

wheretogetviagra

#147 RannevLax on 05.02.19 at 8:57 am

is vendita canada

#148 RannevLax on 05.02.19 at 9:13 am

order viagra online dk

#149 RannevLax on 05.02.19 at 9:15 am

will cost viagra go down

#150 RannevLax on 05.02.19 at 9:19 am

symptoms of overdose in viagra

#151 RannevLax on 05.02.19 at 10:08 am

viagra in toronto office

#152 RannevLax on 05.02.19 at 10:22 am

viagra online kaufende

#153 RannevLax on 05.02.19 at 10:55 am

i recommend viagra from canada

#154 RannevLax on 05.02.19 at 11:09 am

tomar is hace dano

#155 RannevLax on 05.02.19 at 11:40 am

viagra cialis or levitra cost

#156 RannevLax on 05.02.19 at 12:01 pm

viagra for men benefits

#157 RannevLax on 05.02.19 at 12:37 pm

google low price is

#158 RannevLax on 05.02.19 at 12:53 pm

costs of viagra at rite aid

#159 RannevLax on 05.02.19 at 1:09 pm

cod online viagra cz

#160 RannevLax on 05.02.19 at 1:16 pm

viagra red bull juntos

#161 RannevLax on 05.02.19 at 1:23 pm

viagra generic drug

#162 RannevLax on 05.02.19 at 1:34 pm

viagra billig keine vorschrift

#163 RannevLax on 05.02.19 at 2:09 pm

is herbal for men

#164 RannevLax on 05.02.19 at 2:10 pm

is is legal in malaysia

#165 RannevLax on 05.02.19 at 2:26 pm

cialis viagra tadalafi

#166 RannevLax on 05.02.19 at 2:34 pm

cialis y viagra diferencia

#167 RannevLax on 05.02.19 at 2:41 pm

viagra generic japan

#168 RannevLax on 05.02.19 at 2:55 pm

waar kan ik viagra bestellen

#169 RannevLax on 05.02.19 at 3:48 pm

avis viagra cialis levitr

#170 RannevLax on 05.02.19 at 4:17 pm

viagra discounts

#171 RannevLax on 05.02.19 at 4:45 pm

3 viagra pills 4 sale

#172 RannevLax on 05.02.19 at 5:06 pm

why to take viagra

#173 RannevLax on 05.02.19 at 5:56 pm

efeito do viagra generico

#174 RannevLax on 05.02.19 at 5:58 pm

viagra 100 mg 4 cpr

#175 RannevLax on 05.02.19 at 6:13 pm

is from indian company

#176 RannevLax on 05.02.19 at 6:17 pm

acheter is en suisse

#177 RannevLax on 05.02.19 at 6:39 pm

online is in india

#178 RannevLax on 05.02.19 at 7:16 pm

buy maestro viagra

#179 RannevLax on 05.02.19 at 7:31 pm

is gnrique inde

#180 RannevLax on 05.02.19 at 7:32 pm

is y is diferencia

#181 RannevLax on 05.02.19 at 7:40 pm

is names

#182 RannevLax on 05.02.19 at 7:56 pm

i use it viagra online online

#183 RannevLax on 05.02.19 at 8:21 pm

kwikmed coupon viagra

#184 RannevLax on 05.02.19 at 8:41 pm

sale viagra uk

#185 RannevLax on 05.02.19 at 9:13 pm

at 25mg is

#186 RannevLax on 05.02.19 at 9:34 pm

mexico viagra online

#187 RannevLax on 05.02.19 at 9:45 pm

wirkstoff viagra beipackzettel

#188 RannevLax on 05.02.19 at 10:15 pm

is safe pills

#189 RannevLax on 05.02.19 at 10:16 pm

just try viagra lowest price

#190 RannevLax on 05.02.19 at 10:35 pm

viagra tablets best price

#191 RannevLax on 05.02.19 at 11:06 pm

cheapest viagra 100mg tablets

#192 RannevLax on 05.02.19 at 11:27 pm

online viagra in india

#193 RannevLax on 05.02.19 at 11:42 pm

viagra running

#194 RannevLax on 05.02.19 at 11:51 pm

can i cut 50 mg is in half

#195 RannevLax on 05.03.19 at 12:07 am

yohimbe and viagra together

#196 RannevLax on 05.03.19 at 12:26 am

can viagra cause gout

#197 RannevLax on 05.03.19 at 1:21 am

viagra canada online generic

#198 RannevLax on 05.03.19 at 1:42 am

us or canada discount viagra

#199 RannevLax on 05.03.19 at 1:56 am

viagra young people

#200 RannevLax on 05.03.19 at 1:57 am

look here buying viagra online

#201 RannevLax on 05.03.19 at 2:26 am

acheter is le moins cher

#202 RannevLax on 05.03.19 at 2:32 am

costs of is at rite aid

#203 RannevLax on 05.03.19 at 2:40 am

tomar viagra mujeres

#204 RannevLax on 05.03.19 at 2:54 am

canada viagra canada cheap

#205 RannevLax on 05.03.19 at 3:28 am

just try is for ed

#206 RannevLax on 05.03.19 at 3:30 am

is customs uk

#207 RannevLax on 05.03.19 at 4:05 am

is viagra legal in malaysia

#208 RannevLax on 05.03.19 at 4:13 am

the viagra buy in

#209 RannevLax on 05.03.19 at 4:29 am

watch is blue online

#210 RannevLax on 05.03.19 at 5:08 am

generic viagra sale usa

#211 RannevLax on 05.03.19 at 5:42 am

cipla viagra stores

#212 RannevLax on 05.03.19 at 5:43 am

teachers union is

#213 RannevLax on 05.03.19 at 5:44 am

liquid is for sale

#214 RannevLax on 05.03.19 at 6:41 am

only now 50mg viagra uk cheap

#215 RannevLax on 05.03.19 at 7:02 am

experience with generic viagra

#216 RannevLax on 05.03.19 at 7:19 am

generic suppliers buy viagra

#217 RannevLax on 05.03.19 at 7:34 am

viagra and price

#218 RannevLax on 05.03.19 at 7:53 am

levitra 20 mg o is

#219 RannevLax on 05.03.19 at 8:02 am

viagra svizzera prezzo

#220 BelousovaPlatonida1997Lax on 05.03.19 at 8:48 am

is ato dove

363a is use stories

#221 BelousovaPlatonida1997Lax on 05.03.19 at 11:47 am

is haltbarkeit abgelaufen

363a ordonnance permanente is

#222 BelousovaPlatonida1997Lax on 05.03.19 at 12:47 pm

click now isbest is

363a pilule de poids is

#223 BelousovaPlatonida1997Lax on 05.03.19 at 4:12 pm

is dosering

363a purchase only 1 is

#224 BelousovaPlatonida1997Lax on 05.03.19 at 5:14 pm

is chile sin receta

363a is valencia

#225 BelousovaPlatonida1997Lax on 05.03.19 at 8:51 pm

be is soft online cheap

363a is 5 mg online

#226 BelousovaPlatonida1997Lax on 05.03.19 at 10:57 pm

5023 cialis mexico online

visit our site cialis on ine

#227 BelousovaPlatonida1997Lax on 05.04.19 at 12:24 am

is pharmacie pas che

363a is grekland

#228 BelousovaPlatonida1997Lax on 05.04.19 at 1:56 am

a149 comprar is natural madrid

the best choice cost is

#229 BelousovaPlatonida1997Lax on 05.04.19 at 2:23 am

a149 be is in port elizabeth

puedo tomar is en ayunas

#230 BelousovaPlatonida1997Lax on 05.04.19 at 3:27 am

double dose 25 mg is

363a forum is kamagra

#231 BelousovaPlatonida1997Lax on 05.04.19 at 4:24 am

a149 is non va

is ohne rezept zoll

#232 BelousovaPlatonida1997Lax on 05.04.19 at 4:30 am

is drug stores

363a link for you order is usa

#233 BelousovaPlatonida1997Lax on 05.04.19 at 7:59 am

is senza ricett

363a is cost in thailand

#234 BelousovaPlatonida1997Lax on 05.04.19 at 8:59 am

is kaufen zurich

363a meilleur is

#235 RannevLax on 05.04.19 at 11:46 am

is teva canada

#236 RannevLax on 05.04.19 at 1:38 pm

comprar viagra en puerto rico

#237 RannevLax on 05.04.19 at 1:59 pm

is running

#238 RannevLax on 05.04.19 at 3:30 pm

google online is sales

#239 RannevLax on 05.04.19 at 5:23 pm

look here being is online

#240 RannevLax on 05.04.19 at 6:15 pm

viagra en los jovene

#241 RannevLax on 05.04.19 at 10:36 pm

viagra frauen online kaufen

#242 RannevLax on 05.04.19 at 11:56 pm

viagra necesita receta

#243 RannevLax on 05.05.19 at 2:09 am

the best site viagra oral

#244 RannevLax on 05.05.19 at 3:41 am

is 100 mg 4 cpr

#245 RannevLax on 05.05.19 at 4:01 am

videos usando viagra femenino

#246 RannevLax on 05.05.19 at 8:38 am

i use it is online online

#247 RannevLax on 05.05.19 at 9:43 am

be pink is by pfizer

#248 RannevLax on 05.05.19 at 11:16 am

viagra ou pas

#249 RannevLax on 05.05.19 at 3:23 pm

viagracom prices

#250 RannevLax on 05.05.19 at 7:02 pm

experience with at is

#251 RannevLax on 05.06.19 at 5:44 am

click here viagra soft

#252 RannevLax on 05.06.19 at 7:04 am

why to take is

#253 RannevLax on 05.06.19 at 8:36 am

how do i get is prescribed

#254 RannevLax on 05.06.19 at 10:01 am

sell is online affiliate

#255 RannevLax on 05.06.19 at 12:08 pm

liquid viagra for sale

#256 GavrilaPestov1998Lax on 05.06.19 at 12:24 pm

precio indio de isa

4878 prix is officiel france

#257 GavrilaPestov1998Lax on 05.06.19 at 3:58 pm

can i purchase is

4878 is et pharmacie en ligne

#258 GavrilaPestov1998Lax on 05.06.19 at 4:21 pm

be cheap is super force

4878 is at next day

#259 GavrilaPestov1998Lax on 05.06.19 at 4:28 pm

mad tv is

4878 is dom rep kaufen

#260 GavrilaPestov1998Lax on 05.06.19 at 8:59 pm

at is uk be

4878 is pill australia

#261 GavrilaPestov1998Lax on 05.06.19 at 9:06 pm

ato do remedio is

4878 pill women is pink

#262 GavrilaPestov1998Lax on 05.07.19 at 1:06 am

price per pill of is

4878 the best site 5mg is

#263 GavrilaPestov1998Lax on 05.07.19 at 4:16 am

can i be is in the store

4878 i use it isbest is

#264 GavrilaPestov1998Lax on 05.07.19 at 7:55 am

at is super ialis

4878 cost of is 100mg

#265 GavrilaPestov1998Lax on 05.07.19 at 8:26 am

is a 20 ann

4878 is den store danske

#266 GavrilaPestov1998Lax on 05.07.19 at 12:57 pm

where to be is online

4878 is aus indien bestellen

#267 GavrilaPestov1998Lax on 05.07.19 at 1:03 pm

enter site is alternatives

4878 is veritable

#268 RannevLax on 05.07.19 at 1:16 pm

is at drug

#269 RannevLax on 05.07.19 at 2:06 pm

where to buy herbal viagra

#270 RannevLax on 05.07.19 at 2:34 pm

viagra cialis simili

#271 RannevLax on 05.07.19 at 2:55 pm

gnrique viagra

#272 RannevLax on 05.07.19 at 3:09 pm

recommended site is uk

#273 RannevLax on 05.07.19 at 3:10 pm

online at is sales

#274 UstinovIsidor91Lax on 05.07.19 at 3:52 pm

is livraison angleterre

64ae is prices europe

#275 UstinovIsidor91Lax on 05.08.19 at 12:52 am

is und levitra rezeptfrei

64ae meilleur is

#276 UstinovIsidor91Lax on 05.08.19 at 1:29 am

is once a day wirkun

64ae is 20mg for sale

#277 RannevLax on 05.08.19 at 6:22 am

uk is online using paypal

#278 RannevLax on 05.08.19 at 6:27 am

expired is is levitr

#279 RannevLax on 05.08.19 at 6:47 am

dirrections for use of is

#280 RannevLax on 05.08.19 at 7:00 am

iss sans ordonnance

#281 RannevLax on 05.08.19 at 7:10 am

buy cialis get viagra free

#282 RannevLax on 05.08.19 at 7:25 am

sirve es y que is que para

#283 UstinovIsidor91Lax on 05.08.19 at 7:27 am

couponn discounts is brand

64ae venta is professiona

#284 RannevLax on 05.08.19 at 8:08 am

buy real brand viagra

#285 RannevLax on 05.08.19 at 9:38 am

100mg is be ny pfizer

#286 UstinovIsidor91Lax on 05.08.19 at 10:15 am

is fachinformation

64ae is low price

#287 StanislavaLax on 05.08.19 at 11:39 am

top in WI cash advance

bd65 rezeptfrei is preis

bd65 wow discount is is

bd65 is next day uk resources

bd65

#288 RannevLax on 05.08.19 at 12:06 pm

herbal alternative viagra to

#289 RannevLax on 05.08.19 at 1:58 pm

viagra e cialis onlin

#290 RannevLax on 05.08.19 at 2:06 pm

viagra herbal for men

#291 RannevLax on 05.08.19 at 3:00 pm

is libido

#292 RannevLax on 05.08.19 at 3:14 pm

apotik yang jual viagra

#293 RannevLax on 05.08.19 at 4:03 pm

achat viagra arnaque

#294 RannevLax on 05.08.19 at 4:31 pm

be is manhattan

#295 RannevLax on 05.08.19 at 4:34 pm

su pillola viagra

#296 RannevLax on 05.08.19 at 4:52 pm

free viagra on line to buy

#297 RannevLax on 05.08.19 at 5:10 pm

just try viagra for ed

#298 AndreevDaniel1993Lax on 05.08.19 at 6:18 pm

d1fe can you buy viagra pharmacies

viagra ansia prestazione

#299 RannevLax on 05.08.19 at 7:20 pm

osta viagra

#300 RannevLax on 05.08.19 at 7:23 pm

viagra dosage men

#301 RannevLax on 05.08.19 at 7:38 pm

viagra varighed

#302 RannevLax on 05.08.19 at 7:52 pm

viagras sans ordonnance

#303 RannevLax on 05.08.19 at 8:28 pm

viagra piller online

#304 RannevLax on 05.08.19 at 8:43 pm

generic 25mg viagra

#305 RannevLax on 05.08.19 at 8:54 pm

is online kaufende

#306 RannevLax on 05.08.19 at 10:55 pm

comprare online viagra

#307 RannevLax on 05.08.19 at 11:12 pm

viagra deals online

#308 RannevLax on 05.08.19 at 11:20 pm

viagra pricelist

#309 RannevLax on 05.08.19 at 11:54 pm

at is from china

#310 RannevLax on 05.09.19 at 12:37 am

reputable online viagra

#311 RannevLax on 05.09.19 at 1:56 am

viagra purchase in uk

#312 RannevLax on 05.09.19 at 2:13 am

order viagra in singapore

#313 RannevLax on 05.09.19 at 2:36 am

how com is cost so much

#314 RannevLax on 05.09.19 at 2:47 am

sample viagra coupons

#315 RannevLax on 05.09.19 at 3:07 am

be is get is free

#316 RannevLax on 05.09.19 at 3:07 am

viagra online ua

#317 RannevLax on 05.09.19 at 3:10 am

kosten pro dosis fr viagra

#318 RannevLax on 05.09.19 at 3:27 am

osta is

#319 RannevLax on 05.09.19 at 4:07 am

2000 mg viagra

#320 RannevLax on 05.09.19 at 4:50 am

achat viagra

#321 RannevLax on 05.09.19 at 6:08 am

forum is pour femme

#322 RannevLax on 05.09.19 at 7:30 am

viagra iv

#323 RannevLax on 05.09.19 at 8:25 am

mercury drug store viagra

#324 RannevLax on 05.09.19 at 8:57 am

billige viagra online apotheke

#325 RannevLax on 05.09.19 at 9:21 am

only now bio viagra herbal

#326 RannevLax on 05.09.19 at 9:31 am

order is in singapore

#327 RannevLax on 05.09.19 at 11:25 am

is ato costo

#328 ShiryaevErik96Lax on 05.09.19 at 11:30 am

is generika empfehlen

335b be is over phone in usa

#329 RannevLax on 05.09.19 at 11:35 am

where can i be is tablet

#330 RannevLax on 05.09.19 at 12:37 pm

woman viagra

#331 RannevLax on 05.09.19 at 1:54 pm

be is online free

#332 RannevLax on 05.09.19 at 2:25 pm

viagra buy viagra online

#333 RannevLax on 05.09.19 at 4:03 pm

at is on a plane

#334 ShiryaevErik96Lax on 05.09.19 at 4:21 pm

how good is at is

335b everyday low dose is

#335 RannevLax on 05.09.19 at 5:44 pm

is cost 50mg vs 100mg

#336 RannevLax on 05.09.19 at 6:59 pm

is pris sverige

#337 RannevLax on 05.09.19 at 7:09 pm

can is cause gout

#338 RannevLax on 05.09.19 at 8:43 pm

click now viagra sales online

#339 RannevLax on 05.09.19 at 8:56 pm

viagra sildenafil tabs

#340 RannevLax on 05.09.19 at 8:58 pm

viagra canada law

#341 RannevLax on 05.09.19 at 9:16 pm

barato viagra suave

#342 RannevLax on 05.09.19 at 9:32 pm

phone in order for viagra plus

#343 ShiryaevErik96Lax on 05.09.19 at 10:12 pm

ddfa is 20 an

look there is pfizer

#344 ShiryaevErik96Lax on 05.09.19 at 10:13 pm

ddfa is hvor

is precio ato

#345 RannevLax on 05.09.19 at 10:38 pm

prescription en ligne viagra

#346 RannevLax on 05.09.19 at 10:41 pm

is levitra differenze

#347 RannevLax on 05.09.19 at 10:49 pm

viagra how to use it

#348 ShiryaevErik96Lax on 05.09.19 at 11:07 pm

rx is prezzo basso

335b very good site is onlines

#349 RannevLax on 05.09.19 at 11:32 pm

viagra without a doctor

#350 RannevLax on 05.10.19 at 12:31 am

should i take is or is

#351 RannevLax on 05.10.19 at 1:25 am

viagra levitra differenze

#352 RannevLax on 05.10.19 at 3:56 am

is sildenafil citrate 50mg

#353 RannevLax on 05.10.19 at 4:27 am

is without a doctor

#354 RannevLax on 05.10.19 at 4:44 am

i recommend rx online is

#355 RannevLax on 05.10.19 at 6:41 am

waar kan ik is bestellen

#356 RannevLax on 05.10.19 at 6:53 am

100mg viagra buy ny pfizer

#357 RannevLax on 05.10.19 at 7:34 am

is to be pay on delievery

#358 RannevLax on 05.10.19 at 8:56 am

i recommend rx online viagra

#359 RannevLax on 05.10.19 at 10:09 am

kanada preiswerter is

#360 RannevLax on 05.10.19 at 10:22 am

try it is price online

#361 RannevLax on 05.10.19 at 11:00 am

men health viagra

#362 LytkinAaron94Lax on 05.10.19 at 11:13 am

look here cheaper is

3456 is 150 mg og is too much

#363 RannevLax on 05.10.19 at 11:27 am

site sur pour achat viagra

#364 LytkinAaron94Lax on 05.10.19 at 12:56 pm

is brand name for sale us

3456 i want the cheapest is

#365 LytkinAaron94Lax on 05.10.19 at 1:23 pm

online is is ricetta

3456 fast real is shipping

#366 RannevLax on 05.10.19 at 3:11 pm

is svizzera prezzo

#367 RannevLax on 05.10.19 at 3:28 pm

phone in order for is plus

#368 RannevLax on 05.10.19 at 4:56 pm

uk viagra online using paypal

#369 LytkinAaron94Lax on 05.10.19 at 6:45 pm

vente is quebec

3456 pillule bleu is

#370 RannevLax on 05.10.19 at 7:13 pm

iscom prices

#371 RannevLax on 05.10.19 at 9:26 pm

expiration pfizer viagra date

#372 RannevLax on 05.10.19 at 10:23 pm

does viagra really work men

#373 RannevLax on 05.10.19 at 10:43 pm

yohimbe and is together

#374 RannevLax on 05.10.19 at 11:57 pm

price is in india

#375 RannevLax on 05.11.19 at 12:14 am

is brand uk

#376 RannevLax on 05.11.19 at 5:13 am

cheapest original viagra

#377 RannevLax on 05.11.19 at 6:32 am

brand viagra inventors

#378 RannevLax on 05.11.19 at 6:40 am

is is or levitra cost

#379 RannevLax on 05.11.19 at 7:13 am

i recommend cheap is

#380 RannevLax on 05.11.19 at 8:59 am

wheretogetis

#381 RannevLax on 05.11.19 at 9:24 am

is how to use it

#382 RannevLax on 05.11.19 at 12:20 pm

irlanda is barata

#383 RannevLax on 05.11.19 at 12:31 pm

is young people

#384 RannevLax on 05.11.19 at 1:09 pm

be online is in canada

#385 RannevLax on 05.11.19 at 1:45 pm

is sildenafil tabs

#386 RannevLax on 05.11.19 at 2:43 pm

pfizer workshops is

#387 RannevLax on 05.11.19 at 3:33 pm

only for you viagra in canada

#388 RannevLax on 05.11.19 at 4:26 pm

can heart patition take is

#389 RannevLax on 05.11.19 at 4:46 pm

click here viagra one a day

#390 RannevLax on 05.11.19 at 7:12 pm

try it generic viagra mexico

#391 RannevLax on 05.11.19 at 10:57 pm

viagra e fegat

#392 RannevLax on 05.12.19 at 12:26 am

google online viagra sales

#393 RannevLax on 05.12.19 at 3:48 am

viagra per amore

#394 RannevLax on 05.12.19 at 6:04 am

kanada preiswerter viagra

#395 RannevLax on 05.12.19 at 7:20 am

viagra vendita canada

#396 RannevLax on 05.12.19 at 7:46 am

viagra plus for discount

#397 RannevLax on 05.12.19 at 4:01 pm

does rush limbaugh use is

#398 RannevLax on 05.12.19 at 4:46 pm

cosa costa viagra farmacia

#399 RannevLax on 05.12.19 at 6:10 pm

cheap online generic viagra

#400 RannevLax on 05.13.19 at 6:52 pm

efeito do is ato

#401 newz aimbot on 05.15.19 at 2:04 pm

Thank You for this.

#402 vn hax on 05.16.19 at 12:19 pm

Very interesting points you have remarked, appreciate it for putting up.

#403 aimbot fortnite on 05.16.19 at 4:12 pm

This is good. Cheers!

#404 ErshovAvvakum91Lax on 05.16.19 at 8:11 pm

is online pfizer soft 2

d111 kann man is billig kaufen

#405 nonsense diamond download on 05.17.19 at 6:25 am

I consider something really special in this site.

#406 fallout 76 cheats on 05.17.19 at 9:54 am

I kinda got into this article. I found it to be interesting and loaded with unique points of view.

#407 red dead redemption 2 digital key resale on 05.17.19 at 3:04 pm

Your website has proven useful to me.

#408 redline v3.0 on 05.17.19 at 6:07 pm

I have interest in this, thanks.

#409 viagra on 05.18.19 at 2:06 am

Hello!

#410 online_viagra on 05.18.19 at 6:44 am

Hello!

#411 Yaeko Koll on 05.18.19 at 7:26 am

I enjoy your opinion on this topic and look forward to new posts and comments here at yosefk.com. Thanks!

#412 badoo superpowers free on 05.18.19 at 7:32 am

Some truly wow posts on this web site , appreciate it for contribution.

#413 canadian_cialis on 05.18.19 at 1:23 pm

Hello!

#414 forza horizon 4 license key on 05.18.19 at 2:25 pm

I am glad to be one of the visitors on this great website (:, appreciate it for posting .

#415 viagra_cheap on 05.19.19 at 4:43 am

Hello!

#416 cialis_online on 05.19.19 at 5:55 am

Hello!

#417 viagra_online on 05.19.19 at 5:55 am

Hello!

#418 mining simulator 2019 on 05.19.19 at 6:24 am

I am glad to be one of the visitors on this great website (:, appreciate it for posting .

#419 viagra_professional on 05.19.19 at 7:22 am

Hello!

#420 buy_viagra on 05.19.19 at 7:23 am

Hello!

#421 smutstone on 05.20.19 at 11:03 am

Enjoyed examining this, very good stuff, thanks .

#422 LyudvigPanov1994Lax on 05.20.19 at 11:44 pm

cheap is tabs

ac10 click here usa is

#423 redline v3.0 on 05.21.19 at 6:31 am

Hi, i really think i will be back to your page

#424 free fire hack version unlimited diamond on 05.21.19 at 3:44 pm

I conceive you have mentioned some very interesting details , appreciate it for the post.

#425 nonsense diamond on 05.22.19 at 5:34 pm

Enjoyed reading through this, very good stuff, thankyou .

#426 cialis_cheap on 05.22.19 at 5:38 pm

Hello!

#427 krunker aimbot on 05.23.19 at 5:53 am

This does interest me

#428 bitcoin adder v.1.3.00 free download on 05.23.19 at 9:30 am

I like this site because so much useful stuff on here : D.

#429 vn hax on 05.23.19 at 6:15 pm

I enjoying, will read more. Thanks!

#430 eternity.cc v9 on 05.24.19 at 7:02 am

I’m impressed, I have to admit. Genuinely rarely should i encounter a weblog that’s both educative and entertaining, and let me tell you, you may have hit the nail about the head. Your idea is outstanding; the problem is an element that insufficient persons are speaking intelligently about. I am delighted we came across this during my look for something with this.

#431 ispoofer pogo activate seriale on 05.24.19 at 5:23 pm

I enjoying, will read more. Thanks!

#432 KsanfiiIgnatov1992Lax on 05.24.19 at 11:57 pm

is ato cipla online

5954 cheapest is in dubai

#433 cheats for hempire game on 05.26.19 at 6:01 am

I was looking at some of your articles on this site and I believe this internet site is really instructive! Keep on posting .

#434 iobit uninstaller 7.5 key on 05.26.19 at 8:49 am

Thanks for this site. I definitely agree with what you are saying.

#435 smart defrag 6.2 serial key on 05.26.19 at 3:08 pm

I conceive you have mentioned some very interesting details , appreciate it for the post.

#436 resetter epson l1110 on 05.26.19 at 5:37 pm

I conceive this web site holds some real superb information for everyone : D.

#437 sims 4 seasons code free on 05.27.19 at 6:54 am

Appreciate it for this howling post, I am glad I observed this internet site on yahoo.

#438 Lavenia Mccommon on 05.27.19 at 6:55 pm

5/27/2019 @ 11:55:13 AM Love this site– extremely easy to navigate and tons of stuff to think about!

#439 rust hacks on 05.27.19 at 7:31 pm

Your website has proven useful to me.

#440 gamefly free trial on 05.28.19 at 8:49 am

Hello, i read your blog occasionally and i own a similar
one and i was just wondering if you get a lot of spam remarks?

If so how do you prevent it, any plugin or anything you can suggest?
I get so much lately it's driving me mad so any support is very much appreciated.

#441 strucid hacks on 05.28.19 at 9:48 am

Great stuff to Read, glad that google took me here, Keep Up good Work

#442 expressvpn key on 05.28.19 at 6:52 pm

Respect to website author , some wonderful entropy.

#443 how to get help in windows 10 on 05.29.19 at 4:33 am

Amazing! Its really awesome paragraph, I have got
much clear idea about from this post.

#444 ispoofer activation key on 05.29.19 at 8:01 am

I’m impressed, I have to admit. Genuinely rarely should i encounter a weblog that’s both educative and entertaining, and let me tell you, you may have hit the nail about the head. Your idea is outstanding; the problem is an element that insufficient persons are speaking intelligently about. I am delighted we came across this during my look for something with this.

#445 aimbot free download fortnite on 05.29.19 at 12:01 pm

You got yourself a new rader.

#446 FedotSharov1988Lax on 05.29.19 at 2:40 pm

be 4 is

9f23 is drug test

#447 redline v3.0 on 05.29.19 at 4:28 pm

I simply must tell you that you have an excellent and unique site that I really enjoyed reading.

#448 FedotSharov1988Lax on 05.29.19 at 11:55 pm

how does is work on men

9f23 farmacias que venden is

#449 gamefly free trial on 05.30.19 at 5:10 am

An interesting discussion is worth comment. I believe that you should write more on this subject,
it might not be a taboo subject but generally folks don't speak about these topics.

To the next! Cheers!!

#450 vn hax on 05.30.19 at 5:39 am

I like this site because so much useful stuff on here : D.

#451 gamefly free trial on 05.31.19 at 12:39 am

Hello There. I found your weblog using msn. That is a really neatly written article.
I'll make sure to bookmark it and come back to read extra of your helpful info.

Thank you for the post. I'll definitely comeback.

#452 xbox one mods free download on 05.31.19 at 12:13 pm

I am not rattling great with English but I get hold this really easygoing to read .

#453 fortnite aimbot download on 05.31.19 at 2:58 pm

I dugg some of you post as I thought they were very beneficial invaluable

#454 gamefly free trial on 05.31.19 at 7:47 pm

Simply want to say your article is as astonishing. The clarity in your post is just excellent and that i can suppose you
are knowledgeable on this subject. Well along with your permission let
me to grasp your RSS feed to keep up to date with impending post.
Thanks a million and please continue the enjoyable work.

#455 SharovaGlafira1998Lax on 05.31.19 at 10:42 pm

canadian is pills

6468 is australia women

#456 gamefly free trial on 06.01.19 at 4:52 pm

I am regular visitor, how are you everybody? This post posted at
this web page is genuinely good.

#457 mpl pro on 06.01.19 at 6:03 pm

I like this website its a master peace ! Glad I found this on google .

#458 hacks counter blox script on 06.02.19 at 6:08 am

I’m impressed, I have to admit. Genuinely rarely should i encounter a weblog that’s both educative and entertaining, and let me tell you, you may have hit the nail about the head. Your idea is outstanding; the problem is an element that insufficient persons are speaking intelligently about. I am delighted we came across this during my look for something with this.

#459 gamefly free trial on 06.02.19 at 6:50 pm

fantastic points altogether, you just gained a logo new reader.
What may you recommend about your publish that you made a few days in the past?

Any certain?

#460 gamefly free trial on 06.02.19 at 7:09 pm

I am extremely impressed with your writing skills and also with the layout on your weblog.
Is this a paid theme or did you modify it yourself?
Either way keep up the nice quality writing, it is rare
to see a great blog like this one these days.

#461 aimbot download fortnite on 06.03.19 at 9:57 am

Hi, bing lead me here, keep up nice work.

#462 gamefly free trial on 06.04.19 at 1:06 am

I am really grateful to the holder of this web site who
has shared this enormous paragraph at here.

#463 gamefly free trial on 06.04.19 at 6:55 am

I am really inspired together with your writing abilities
and also with the layout to your blog. Is that this a
paid theme or did you modify it yourself? Either way stay up the nice high
quality writing, it is rare to peer a great blog like this one today..

#464 PorfiriiSorokin1992Lax on 06.04.19 at 9:22 pm

no is order prescription

769a online australia is

#465 PorfiriiSorokin1992Lax on 06.04.19 at 9:49 pm

is forum doctissimo

769a order is 20gm from europe

#466 gamefly free trial on 06.04.19 at 11:42 pm

Hmm it appears like your website ate my first comment (it
was extremely long) so I guess I'll just sum it up what I wrote and
say, I'm thoroughly enjoying your blog. I too am an aspiring blog blogger
but I'm still new to everything. Do you have any tips and hints
for novice blog writers? I'd really appreciate it.

#467 gamefly free trial on 06.05.19 at 5:02 pm

Good article! We will be linking to this great content
on our site. Keep up the good writing.

#468 EmelyanovGordian94Lax on 06.07.19 at 12:27 am

be is denmark

61dc herbal is alternative uk

#469 EmelyanovGordian94Lax on 06.07.19 at 12:30 am

para que es el is femenino

61dc is para mujeres en mexico

#470 RannevLax on 06.07.19 at 2:50 am

can be is bali

#471 RannevLax on 06.07.19 at 2:52 am

campioni is ati

#472 gamefly free trial on 06.07.19 at 5:51 am

Spot on with this write-up, I absolutely believe
this website needs a lot more attention. I'll probably be back again to read more, thanks for
the info!

#473 playstation games on 06.07.19 at 4:20 pm

If you are going for best contents like I do, just pay a quick visit this web page
all the time because it offers quality contents, thanks

#474 gamefly free trial on 06.08.19 at 1:15 am

It's nearly impossible to find educated people in this particular topic, but you sound like you know what you're talking about!

Thanks

#475 online_cialis on 06.09.19 at 6:25 am

Hello!

#476 cialis_generic on 06.09.19 at 2:41 pm

Hello!

#477 uy_viagra on 06.09.19 at 11:10 pm

Hello!

#478 EvseevSvyatopolk1988Lax on 06.10.19 at 5:47 pm

orexis and is together

340b cost of developing is

#479 gamefly free trial 2019 coupon on 06.10.19 at 8:10 pm

May I simply say what a comfort to uncover someone that really knows what they're discussing on the internet.
You actually understand how to bring an issue to light and make it important.

More and more people really need to look at this and understand this side of the story.
I was surprised that you are not more popular since you most certainly have the gift.

#480 AnfusaKomissarova92Lax on 06.11.19 at 7:29 pm

precio is lima peru

ca45 is generique et forum

#481 playstation 4 best games ever made 2019 on 06.12.19 at 1:41 pm

Way cool! Some extremely valid points! I appreciate
you penning this write-up and also the rest of the website is very good.

#482 Lax on 06.12.19 at 7:56 pm

be is online from usa

bc6d entrega mundial is

#483 playstation 4 best games ever made 2019 on 06.12.19 at 9:57 pm

You really make it appear really easy along with your presentation but I in finding this topic to be actually one thing that
I believe I might by no means understand. It kind
of feels too complicated and very huge for me. I am taking a look
forward on your next submit, I'll attempt to get
the cling of it!

#484 quest bars cheap on 06.15.19 at 1:15 am

My partner and I absolutely love your blog and find almost all of your post's to be
exactly what I'm looking for. Do you offer guest writers to write content in your case?

I wouldn't mind publishing a post or elaborating on some of the
subjects you write about here. Again, awesome blog!

#485 GalyaLax on 06.16.19 at 1:50 pm

069c experience with generic viagra

just try viagra brand name

#486 RannevLax on 06.16.19 at 3:43 pm

purchase viagra online safe

#487 quest bars on 06.16.19 at 3:58 pm

Hola! I've been reading your site for a while now and finally got the courage to go ahead and give you a shout out from Porter
Tx! Just wanted to mention keep up the excellent work!

#488 vn hax on 06.16.19 at 7:55 pm

I like this website its a master peace ! Glad I found this on google .

#489 GalyaLax on 06.17.19 at 12:11 am

069c how is viagra used

dapoxetine uk where viagra to

#490 MiloslavaLax on 06.17.19 at 7:41 pm

is de 40 mg

c61d where to be cheap is

#491 LaraLax on 06.18.19 at 8:30 pm

ordre par is

cf3b at is shipped uk

#492 proxo key generator on 06.19.19 at 8:13 am

I dugg some of you post as I thought they were very beneficial invaluable

#493 MolofeevaLax on 06.20.19 at 5:04 pm

is in psichiatri

d82c can is at

#494 vn hax pubg on 06.20.19 at 5:19 pm

I like this site, useful stuff on here : D.

#495 nonsense diamond download on 06.21.19 at 6:30 am

Hello, happy that i stumble on this in google. Thanks!

#496 plenty of fish dating site on 06.21.19 at 9:46 pm

First of all I would like to say awesome blog! I had a quick question that I'd like to ask if you do not mind.

I was curious to know how you center yourself and clear
your head before writing. I have had a hard time clearing my mind
in getting my thoughts out. I truly do enjoy writing however it just seems like the first 10 to
15 minutes are usually wasted just trying to figure out how to begin. Any recommendations or tips?
Thanks!

#497 quest bars cheap on 06.23.19 at 7:52 am

Unquestionably believe that which you said. Your favourite justification appeared to be
on the internet the simplest thing to consider of. I say to you, I certainly get annoyed while other folks consider issues that they just don't recognise
about. You managed to hit the nail upon the top and also defined out the whole thing without having side effect , other people could take a signal.
Will likely be again to get more. Thanks

#498 star valor cheats on 06.23.19 at 4:03 pm

I must say, as a lot as I enjoyed reading what you had to say, I couldnt help but lose interest after a while.

#499 gmod hacks on 06.24.19 at 2:08 pm

I dugg some of you post as I thought they were very beneficial invaluable

#500 free online Q & A on 06.25.19 at 3:54 am

Intresting, will come back here again.

#501 geometry dash 2.11 download pc on 06.25.19 at 6:49 pm

I conceive this web site holds some real superb information for everyone : D.

#502 skisploit on 06.26.19 at 5:28 am

I must say, as a lot as I enjoyed reading what you had to say, I couldnt help but lose interest after a while.

#503 ispoofer activation key on 06.27.19 at 5:00 am

This is good. Cheers!

#504 synapse x cracked on 06.27.19 at 7:45 pm

Intresting, will come back here once in a while.

#505 strucid aimbot on 06.28.19 at 6:17 am

I like this website its a master peace ! Glad I found this on google .

#506 advanced systemcare 11.5 serial key on 06.28.19 at 12:42 pm

Your website has proven useful to me.

#507 how to get help in windows 10 on 06.29.19 at 6:56 am

It is the best time to make some plans for the future and it is time to be happy.
I have read this post and if I could I want to suggest you few interesting things or
suggestions. Maybe you could write next articles referring to
this article. I want to read even more things about
it!

#508 cryptotab hack script free download 2019 on 06.29.19 at 8:00 am

I conceive you have mentioned some very interesting details , appreciate it for the post.

#509 cryptotab hack script free download on 06.29.19 at 2:21 pm

I conceive this web site holds some real superb information for everyone : D.

#510 chrysploit on 07.01.19 at 8:18 am

I am not rattling great with English but I get hold this really easygoing to read .

#511 cheat fortnite download no wirus on 07.01.19 at 7:06 pm

Respect to website author , some wonderful entropy.

#512 escape from tarkov cheats and hacks on 07.02.19 at 6:55 am

Great, yahoo took me stright here. thanks btw for this. Cheers!

#513 nonsense diamond on 07.02.19 at 12:30 pm

Hey, bing lead me here, keep up great work.

#514 vn hax download on 07.03.19 at 6:37 am

I love reading through and I believe this website got some genuinely utilitarian stuff on it! .

#515 cyberhackid on 07.03.19 at 6:34 pm

I really got into this post. I found it to be interesting and loaded with unique points of view.

#516 xforce keygen on 07.04.19 at 6:31 am

Intresting, will come back here once in a while.

#517 cialis on 07.04.19 at 6:36 am

Hello!

#518 what is seo in digital marketing on 07.04.19 at 3:00 pm

Parasite backlink SEO works well :)

#519 phantom forces hack on 07.04.19 at 6:19 pm

yahoo bring me here. Cheers!

#520 GalyaLax on 07.04.19 at 7:19 pm

is kgr 100

10c8 is tablets wholesale

#521 GalyaLax on 07.04.19 at 10:39 pm

wow is canadian at

10c8 is capsules barato comprar

#522 open dego on 07.05.19 at 6:32 am

I am not rattling great with English but I get hold this really easygoing to read .

#523 MegaLax on 07.05.19 at 11:13 am

at on line is

0fe2 is is online online

#524 erdas foundation 2015 on 07.05.19 at 6:45 pm

This is awesome!

#525 MegaLax on 07.05.19 at 9:14 pm

3984 we choice how does cialis work

cmprar cialis genericos

#526 synapse x on 07.06.19 at 6:20 am

Hi, google lead me here, keep up good work.

#527 gx tool mod apk on 07.06.19 at 10:36 am

Enjoyed reading through this, very good stuff, thankyou .

#528 rekordbox torrent download on 07.06.19 at 8:33 pm

I am not rattling great with English but I get hold this really easygoing to read .

#529 keygen serial licence call of duty black ops 4 on 07.07.19 at 7:28 am

I dugg some of you post as I thought they were very beneficial invaluable

#530 spyhunter 5.4.2.101 serial on 07.08.19 at 7:31 am

I must say, as a lot as I enjoyed reading what you had to say, I couldnt help but lose interest after a while.

#531 VichkaLax on 07.08.19 at 10:57 am

is levitra sales is

cff1 is en india chennai precio

#532 VichkaLax on 07.08.19 at 5:25 pm

licensed at is soft

cff1 produit is sans ordonnance

#533 fps unlocker download on 07.09.19 at 9:06 am

Some truly great goodies on this web site , appreciate it for contribution.

#534 quest bars cheap on 07.11.19 at 5:18 am

Greate post. Keep posting such kind of information on your blog.
Im really impressed by it.
Hello there, You have done a fantastic job. I will certainly
digg it and personally recommend to my friends.
I am sure they will be benefited from this site.

#535 foxxxi on 07.14.19 at 2:06 am

Thank you for the great read!

#536 plenty of fish dating site on 07.15.19 at 12:26 pm

I have been exploring for a bit for any high quality articles or weblog posts on this
sort of space . Exploring in Yahoo I ultimately stumbled upon this website.
Reading this info So i am glad to express that I've an incredibly excellent uncanny
feeling I came upon just what I needed. I most indisputably will make certain to do not fail to remember this website and provides
it a glance on a constant basis.

#537 legal porno on 07.15.19 at 11:54 pm

great advice you give

#538 legalporno on 07.16.19 at 12:29 am

great advice you give

#539 stella on 07.19.19 at 1:43 am

you are so great

#540 babe on 07.19.19 at 2:09 am

great post looking forward to more

#541 plenty of fish dating site on 07.19.19 at 2:16 am

Hi mates, good article and pleasant arguments commented at this place, I
am in fact enjoying by these.

#542 Buy Drugs Online on 07.19.19 at 3:04 am

This blog is amazing! Thank you.

#543 plenty of fish dating site on 07.19.19 at 4:35 pm

Very nice post. I just stumbled upon your blog and wished to say that I've really enjoyed
browsing your blog posts. After all I'll be
subscribing to your feed and I hope you write again soon!

#544 [prodigy hack] on 07.21.19 at 2:04 pm

Good Morning, google lead me here, keep up nice work.

#545 acid swapper on 07.23.19 at 11:35 am

I simply must tell you that you have an excellent and unique article that I kinda enjoyed reading.

#546 discount_cialis on 07.23.19 at 3:18 pm

Hello!

#547 natalielise on 07.23.19 at 3:38 pm

My family members every time say that I am wasting my time
here at web, however I know I am getting knowledge all the time by reading thes pleasant
articles or reviews. pof natalielise

#548 datfe cougar on 07.23.19 at 10:39 pm

I am 43 years old and a mother this helped me!

#549 darte cougar on 07.23.19 at 10:56 pm

I am 43 years old and a mother this helped me!

#550 date coufar on 07.23.19 at 11:35 pm

I am 43 years old and a mother this helped me!

#551 date co0ugar on 07.24.19 at 12:02 am

I am 43 years old and a mother this helped me!

#552 forza horizon 2 key generator on 07.24.19 at 12:03 pm

Respect to website author , some wonderful entropy.

#553 plenty of fish dating site on 07.25.19 at 11:57 am

I take pleasure in, result in I found exactly
what I used to be taking a look for. You have ended my
4 day long hunt! God Bless you man. Have a nice day. Bye

#554 ezfrags on 07.25.19 at 1:34 pm

Cheers, i really think i will be back to your site

#555 smore.com on 07.26.19 at 9:25 am

I'm not sure where you're getting your info, but good topic.
I needs to spend some time learning more or understanding more.

Thanks for magnificent info I was looking for this info for my mission. natalielise
plenty of fish

#556 skisploit on 07.26.19 at 2:38 pm

I am glad to be one of the visitors on this great website (:, appreciate it for posting .

#557 Ruben on 08.16.19 at 10:24 am

Great article. I'm not sure if anyone cares enough about the comments to scroll down past all the viagra spam, but anyway.

I have used pair programming with great success in the past. However, I don't necessarily disagree, since this was at an insurance company, with a codebase where only non-programmers have worked on. Changes were conceptually boring, but very tedious, and for me sitting with someone helped to keep me focus and avoiding mistakes (which was very important, since re-doing a step can take hours — they had really slow tests and huge Excel files).

At my current job, which requires some more intellect, I would imagine that it would slow me down to pair with someone.