Monthly Archives: June 2011

The Agile Political Party

For years I’ve toyed around with the idea of a political party based on Agile principles. Here’s how I think a party like that would be:

Issue-free. I don’t care what your personal goals are. Want free healthcare? Sounds great. Want zero taxes? Sign me up. Want everybody to have an above-average income? This confuses me, but hell, might work, who knows? What we’ve learned over thousands of years of politics is that the goals we seek and the results we end up with are two different things. So let’s just decouple goals from process. Yes, tell us your goals, and we will elect you based on our agreement with them. But don’t go mucking around with how to accomplish those goals, because we already know the answer here.

This separates the “what” of government — what goals it is supposed to accomplish — from the “how”. It’s not like we have to reinvent the “how” every time somebody gets elected: that’s whacked. A dozen or so rules about the “how”, and you’re free to pursue whatever “what” you want. It’s a quantum leap forward in how government is done, and sorely needed. (I would note that this was the original intent of the U.S. Constitution, and I think the original text is amazingly prescient, it’s just time to add a bit more now after having looked at how these systems work in practice.)

Centralized decisions are almost always bad, but centralization is absolutely necessary. Centralized decisions, by definition, are broad rules enacted by people who make broad generalizations about the population and economy in order to help more people than they hurt. Even if mostly correct, these rules always harm a certain small percentage of the affected who don’t fit into the boxes set up by the planners. Over time — a very small amount of time — these “edge cases” build up, the system becomes archaic and inflexible, and it reaches the point where more and more rules are piled on top of old rules in an effort to keep things working. In technology this is called architectural cruft, but the same principle holds in government. I wouldn’t think any modern person would still have to argue this, but because of purposeful BS on the part of politicians we do: a million decentralized self-optimizing agents will always kick the ass of a centralized system. That’s not a political statement — you can pursue whatever goals you want in society, you just have to understand how things work first in order to make them happen.

That also doesn’t mean that centralized systems have no value: some things are natural singletons, like missile defense. There is a critical need for common definitions of things. How can you tell if one of a dozen broadband contracts is better than another without some kind of common rating system? Just not direct, detail-driven control. Centralized government can make the definitions, ensure the data is available to the smaller decision-making units, and keep large players from gaming the system, but they shouldn’t directly control things.

When decisions are made, say for the national budget, agreements are made on principles at a high level and the details are decided later at a low level. For example, for a national budget a good historical figure might be 15% of GDP. History shows that no matter what the tax code, we never get more than 20% of so of GDP anyway, so might as well be honest about it. How that is collected is up to each legislature, but the principle holds power first, the details later. Departments would have money allocated by percentage, not by dollar, so that the ebb and flow of tax revenues wouldn’t create huge crises. Control can be had at the high level for those singleton activities, but only on principles, not on details. People the closest to the problem have the best shot at making the correct decisions, and what works for one group may not work for another facing the same problem.

Nothing without a feedback loop. Want to give money directly to homeless people? Fine, then put it on debit cards and track and publicly and regularly report how the money is spent. Want to build a dozen new aircraft carriers? Fine, then regularly track how much those carriers help or hinder the national interest (probably through opinion surveys of foreign political leaders, but there could be other ways. The point is a regular, open feedback system with clear definitions for failure as a requirement for any money being spent or laws made.) Want to eliminate big box stores? Fine, then track the cost of products to the local consumer during the process and have before and after numbers. Compare directly to other configurations (see “No Centralized Control” above)

Everything has an expiration date. If there’s one thing the current debt crisis is teaching me, it’s that I have no obligation to debts made by my grandfather. Just like “no taxation without representation” was the rallying cry of the American Revolutionary War, I am not represented in decisions made decades ago that I have no practical way of reversing (Theoretically yes, but let’s be honest here: once these things are put in place, they never go away).

The only way around that is to limit the duration that changes last. Constitutional amendments? Say a generation or two. Creation of agencies? No more than 30 years. Class 1 felonies? Perhaps 20 years. Tax code? No more than 10 years. Congressmen? 12 years. And so forth.

This forces three things: first, it makes us examine whether things still make sense after a predetermined period of time. Second, it forces the system to “lean up” to the point where a lot more legislation can get done in a smaller amount of time. Third, it applies gentle pressure for the system to keep simplifying itself.

I could go on, in enough detail probably for a book, but you get the idea: it’s not like those principles that help in technology development are limited to just technology development. Yes, authors make analogies all the time and carry them too far, but the principles of technology development — being given resources and finite time to carry out some change in a system — is not solely limited to tech. We had to invent these things because tech is always reinventing reality from scratch. In a lot of ways, having so many technology development efforts fail and succeed over the years has given us thousands of examples of what works and what doesn’t. We should learn from this.

The interesting thing to ask here is “Why aren’t we already doing this?” It’s not like any of this is new. It’s not even related to what you want from government’ as I said before, you can demand anything you want from government and this structure will get it for you (or try). I think the answer is very simple: if we stuck to these ideas, politicians and political parties would have to be a lot more honest about why they do things. The real reason the tax code is so complex nobody understands it isn’t random chance; it’s because politicians purposely put all sorts of little details in there to reward people who give them votes and money. Perhaps we could start voting on people who were truly different from each other and had vastly different ways of looking at things and solving problems, instead of folks who all root for their team. This would also eliminate 95% of political arguments and fighting between parties, something no political party wants to do (fighting and angry people get them votes). Giving up that kind of control is a pipe dream — it isn’t very likely that is is going to happen.

But it could.

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Yes, it doesn’t work

Sometimes restating the obvious is a terribly deep thing to do.

I was reminded of that when talking to a developer a couple of years ago. He was talking about human growth and pointed out that “according to this growth curve, things cannot continue like they have”

Yes, but it doesn’t matter.

There was a video — I won’t source it — where a famous professor was mulling over various problems with humans on the planet. He’d plop up a series of data points, extrapolate a growth curve, and point out that we’re all doomed.

Math says it. It must be true.

Back in 1890, folks were terribly concerned about the end of sustainable growth for humanity. The problem? If things kept going the way they had been going, there wouldn’t be enough pasture for the horses to graze in so that transportation could happen. You can’t have a modern society without transportation.

In the 1970s, I read a book that explained that the population of the planet was growing at such a rate that the future of humanity was at stake. Sometime in the next ten or twenty years the “population bomb” would go off, and millions (perhaps billions) would starve.

Someday the world will indeed end, and all of those folks who had it figured out are going to be very upset when it doesn’t end the way they thought it was going to.

The problem here is that, given any sort of growth, especially exponential growth (which is what a lot of things look like), the growth cannot continue. Take a look, if you could, at fishing harvest by tonnage in ancient Greece. It’s not very hard at all to pick a few decades where fishing brought more and more food to the table, and project that the fishing stock cannot continue with this kind of stress.

Of course it continued for thousands of years.

It’s a true statement, but it mistakes a mathematical understanding of some points that show growth with the actual system itself, which is much more complex than the model. The model stops having the appropriate fidelity.

Let’s hit closer to home. Take a look at the various cellular-automata-type programs used to model global climate. As I understand it, they are getting quite good. But what do they all show? Some kind of runaway condition in the next century.

That may be true or false, but the problem is that these types of programs fail in exactly that way: showing runaway conditions. So here we have two problems: the problem of the model’s fidelity, and the problem that the type of model fails in such a way to predict disaster.

Doesn’t mean the models are bad, just that a little humility might go a long ways.

It’s interesting to me that my friend could see the growth of whatever he was concerned about, could see that it mapped to a mathematical function, and could see the obvious, that it couldn’t continue. What he couldn’t see was that any sort of exponential growth cannot continue in a finite system. Saying “it can’t continue” shares no new information. Whether it’s the population of squirrels in my backyard or the continuing rise in the price of gold, yes, it cannot continue.

So it won’t.

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Singing in the Brain

If you had a brain injury, but you were happier and enjoyed life more, would you be better off than if you were applied and smart enough to do a lot of neat things, but hated your life? What is more important, mood or performance?

As I write this, I’m running on about 3 hours sleep. I have a sleep disorder, so it’s not unusual for me to code/write/work with not a lot of sleep. I’m probably at 60% efficiency. Reflexes are down, short term memory trashed, and from time-to-time I experience “micro-sleep”

Because of my medical condition, the doctor prescribed Provigil, which is helps promote alertness. Back when I was a kid, we used to call this kind of thing “speed”, but Provigil is non-addictive (as far as I can tell), runs for 12 hours or more, has a tendency to build up in your system over time, lets you sleep while taking it, and has a tendency to make you nauseous.

Kind of a Devil’s Bargain. You’re a lot more energized — but you can feel very queasy also. And if you take it for several days and quit? Quitting is pain-free as far as I can tell, but you’ll be extra tired for a couple of days. Whatever the case, it beats falling asleep and crashing my car, so I’m a user from time-to-time whether I want to be or not.

The weird thing here is how the drug makes you feel. Provigil is commonly used off-label by programmers and other people in knowledge work as a performance-enhancer. I only take one now and then now, but back when I started I went for a month, and I felt really good! I got a lot of stuff done! I was energized, motivated, and I had a lot of creativity.

The thing is, once I stopped taking it and reviewed what I did, in some areas I didn’t do so well. While I was able to crank out code like the wind, I easily missed things I wouldn’t have missed had I taken my time. While I felt like writing a lot, the quality suffered. While I was in a great mood most all of the time, I also was more jittery than before.

In a lot of ways, my performance sucked, but I felt pretty good about it!

I’m a private pilot, although I don’t fly any more. Back when I was taking my exams, I remember reading about hypoxia — what happens to you as you fly higher and higher in an airplane without oxygen. As the oxygen in your blood decreases, it’s like turning down a light: your brain just gets slower and slower. Eventually you die. They put people in these machines and pump the air out slowly. Meanwhile they ask them to do things: write on paper, use their night vision, or show hand-eye coordination.

These people get worse and worse as the oxygen goes down, but something really weird also happens: if you ask these people how they are feeling, they well tell you pretty good! Feeling great! In fact, most of them really enjoy the experience.

If you ask them how well they are performing, they’ll say the same thing: kicking ass, man! Rock and roll!

Meanwhile their handwriting is complete nonsense, they can’t see at all in the dark, and they fail the coordination test. Researchers found night vision starting suffering as low as four thousand feet. Just fly into Denver from the coast at night and driving the rental car to the hotel? Guess what? You’re driving impaired.

Mother Theresa — a devout Christian and somebody whom most folks feel did great works in her life — suffered terribly with doubts about the existence of God and whether any of it made any sense or not. Was this a good way to live?

I bring this up because as an Agile coach and a hacker, I’m reading all the time about folks trying X, Y or Z and how much better they think things are. Some hackers are crazy about these wakefulness medications. Some agile teams try standups and think they suck, all the time communicating in ways they never had before.

I’m not saying you should throw all of these observations out the window, but I’m really concerned that 90% of what we read from hackers and teams are just subjective emotional reactions, not a measurement of whether it’s actually a good thing or not. We keep heading down this road and we’ll end up feeling totally awesome, while doing nothing much at all.

So next time you read about somebody hacking their mind with some chemical or trick, or some team trying something that they totally love and want to share with the world, ask yourself a simple question: how much of this is real, and how much is just a stupid human trick?

Bonus question: does it matter? (Remember the guy in the first Matrix movie? He knew the Matrix was fake, but it didn’t matter) If you do absolutely nothing in your entire life but take up space, but were happy the entire time and felt like you had the best life possible and there’s no way it could ever get better? Does it matter?

(If you’re wondering about the weird title, it’s a spin on a famous movie musical)

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

BigCorp Agile and Feedback Loops

I’m working with a new large client — a great company with outstanding folks which will go unnamed — and I’ve had a bit of troubling adapting to the corporate world after a year or so working startups and providing Agile coaching advice to small teams. After thinking about it for a while, I believe it all boils down to feedback loops.

Continue reading

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Modern Air Travel Explained to Somebody from 1940

You start several weeks before your trip, using many tools and perhaps spending several hours to find the best price. It’s not unusual for every person on a plane to have paid a different rate, and a cottage industry has sprung up to try to help you out. Most of these tools are ineffective.

You pay for your ticket electronically. This allows the government to track you better. If you pay by cash, you will be in for some extra intrusive treatment once you arrive at the airport. The government wants to know ahead of time exactly who is buying tickets to travel.

You will not receive a ticket. Instead, they will ask for your identification once you arrive at the airport. Be sure to have your identification papers handy! You need them in several places. Failure to have them will result in not being able to travel.

Once you present your identification, you will be given a few pieces of paper. Do not try to understand the nature of these pieces of paper: some will say boarding pass and some might say something about baggage claim. There will be times listed which will most likely be inaccurate. The airline will charge you for many things that you might have thought would be free: taking a suitcase with you, having a soda pop during the flight, or being able to sit in a special seating area. Be assured that although the legal nature of your arrangement with the airline will always seem murky to you, but the airline will know exactly where all the limits are.

After receiving your tickets, you will wait in line to have somebody rifle through all of your clothes in public view. This person will also ask you questions, looking for suspicious answers. They may pull out certain pieces of your belongings to run through various machines.

Remember that you are on video surveillance at all times once you enter the airport. As you walk to your gate, your family must stay back: only people who are flying today are allowed anywhere near the airplanes, and then only under strict conditions. If somebody who was not flying attempted to get into the area reserved for passengers? The use of force is authorized.

Next up you will stand in a long line, present your identification papers again along with your ticket. You will be asked questions. People will monitor your behavior and your responses. Assuming you do well here, you will then proceed to a machine which will take naked pictures of you to display to people in a nearby room. The manufacturer says the pictures are blurred out, but nobody is quite sure exactly what the machines are capable of or how the software works. That’s all classified.

This checkpoint, and thousands more like it, is ran by an armed paramilitary force solely responsible for controlling huge amounts of personal and business travel in the United States. They keep a list of undesirable people. If your name is on the list, you cannot fly. Nobody knows how folks get on the list or off. That’s all classified too.

If you don’t want the naked pictures taken, they will take you aside and grope your private parts looking for contraband. If you appear irate about this treatment, you may be selected out for further interrogation and detainment.

At this point you have left all of your rights behind you. You must do what you are told, immediately, or face criminal charges (and perhaps violent treatment). You may not argue with the flight attendant, you may not stand up in the airplane except at certain times, you may not smoke, you may not use the many available phones to talk. When approaching or leaving a plane, you will walk in a general line as directed. Do not slow down too much or appear unusual. Such behavior may trigger further action by authorities.

Once on the plane, you may be forced to sit on the runway for many hours. This is because the pilots start getting paid once the door is closed and the plane pushes back: they do not get paid for sitting at the gate, and it doesn’t matter to them whether they are flying or not. After a certain number of hours working, they “time out” and have to stop working.

During flight, there is a remote possibility that your government will order fighter planes to shoot you down. If your plane acts in a way that seems threatening, lethal force is authorized. What exactly would trigger such an act? That’s all classified too.

Flying is not as luxurious as it once was. Airlines cram you into tiny little seats with barely enough room to read.

While changing planes, you may learn that your next flight is not available. Airlines operate at such a high capacity that small changes in the system — say one airplane not being available — ripple through and cause many problems for everybody else. Airlines regularly sell more tickets than there are seats available on the plane.

If your flight is affected, do not expect the airlines to take care of you: they are operating at a loss most of the time, their customers hate them, and are doing their best never to have to talk to a real person. You will be sent to a little machine that will rebook your flight sometime in the next week. This may mean that you stay overnight (or many nights) in a faraway place you do not like. It’s of no concern to the airlines. Note that if you spend a lot of time and learn the system your chances of being dumped somewhere decrease, but never disappear.

If you experience poor service and actually speak to an airline employee, they will smile at you, even if they are telling you the most horrible news, such as you cannot return home for another few days. They are taught to smile most of the time, and soon you will be used to seeing people smiling who actually don’t like you and wish you would go away.

Once you arrive, and your baggage arrives (which might not be at the same time), congratulations! Now you get to do it all over again on the way back.

Some people say that such treatment is dehumanizing, that it slowly destroys our ability to recognize and appreciate our fellow man as a human being instead of an object. That treating folks like cattle and herding them from place to place is inappropriate and wrong. That to treat ourselves regularly in this fashion is to debase our own system of government and our lifestyle. That there is no stopping this insanity — it will just get worse and worse. One or two people each decade could usher in huge new invasions of our privacy, anonymity, and dignity. It’s unsustainable. It’s bad. It’s wrong.

Some people say that, but nobody is listening.

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Some Thoughts on Cancer from a Hacker

Just got through reading “The Emperor of All Maladies” on my Kindle today. Both my mom and dad died from Cancer, so it seemed like a good idea to read up on the subject.

This was an excellent book which provided a great historical overview of Cancer and how science has come to grapple with it. At one point the author makes the joke that Cancer has the Kevin Bacon thing going on: take any subject, and within 7 logical jumps you’ll be at Cancer research. It touches on almost all areas of modern life and science.

If you’ve suffered from Cancer or know somebody who has, this is a good book to read. A bit long and detailed, but it’s a big subject.

Now that I’m done, it got me to thinking: the structure of how we study Cancer might be entirely inappropriate to the disease itself.

Not to spoil the book (we don’t cure Cancer in the end), but as it turns out current belief is that each Cancer is a highly individualized thing — it’s your body’s programming breaking down, and each person’s programming breaks down in it’s own way. Yes, there are broad generalities — leukemia looks like leukemia — but even then, there are lots of different subtypes, dozens or hundreds of mutations can lead to the disease, and only a few of those might be critical. Indeed, it looks like part of the discussion nowadays is whether there’s some way of simplifying Cancer in order to create and provide treatment.

In response to this terrible uniqueness of the disease, I think, several new sciences around bioinformatics have sprung up. There’s a school of thought that says that what we need is not a cure: what we need is a computerized system that “debugs” what’s wrong with each person’s cancer and provides unique therapy appropriate to that. Lots of five-dollar words here, including proteomics, cytogenic chemotherpathy, etc.. The water’s too deep for me, but I get the part about complex systems of programming breaking down. Been there, done that.

This analogy makes a lot of sense to me as a layman, but I wonder about the way governments and scientists discover and approve new drugs. Does the solution fit the system we’ve created to find the solution?

The entire idea of empirical science is that we gather data, note patterns, make hypotheses, then prove them. Mathematical induction is key part of it: if it works a few times and can be reproduced, it will work always. But Cancer is exactly the opposite of that. In fact, one of the reasons it’s been so tough to handle is our idea that it’s just one disease we’re facing. It’s not.

So let’s suppose that there are a million different proteins which either are under or over expressed due to a Cancer. _If_ you had ways of correcting each one, and _if_ a computer could do the analysis, theoretically you could create an intervention that would be tailored to that particular cancer, changing and evolving as the “bugs in the programming” for that particular person mutated.

But how could you test this in a double-blind study? Would you test each one of the two million interventions? Impossible. Test the computer program? Non-conclusive (and perhaps not able of being reproduced, as the program should be evolving along with technology).

I don’t see any way the government could approve of such a therapy, and more importantly, I don’t see any way private companies could make money from helping folks, unless you let them start patenting each one of the two million interventions, which would effectively bring research to a standstill.

I think the way we do science, the way we do medicine, the way we regulate markets where companies can help each other — all of these things don’t match up to the solution we’re working towards in Cancer research. And a lot of people are going to die because of it.

Here’s hoping I’m wrong.

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Four Steps from Perdition

There are four steps in making big changes in a group or organization.

Descriptive/Sales. This is the first step. You buy the book, or attend the seminar. It looks hot, it looks like something that could make a big difference. So you make everybody read the book, or attend the seminar.

Instructive/Certification.That works for a while — it might even get a lot of folks excited, but soon enough you realize that the book or seminar always describes things in terms of a desired goal, not in terms of actually how to do your work. So you switch tracks, moving to instructing people and/or certifying them. Trainers come in, you set up systems of training and tracking people.

Coached/Mentored.The next step in your journey is to realize that even once you understand the goal, and understand the skills needed to get there, you don’t have any idea of how all the skills come together. It’s different for every group. This is a critical step: it’s the first step where you realize that applied knowledge and book knowledge are two different things. You don’t learn to play jazz piano by watching a movie about a great piano player, or by taking a test in music theory. You learn by trial and error, having somebody watch and provide feedback.

Pull-based problem lists.The final step is when you can provide your own feedback — you have become your own coach. You find this level of expertise among professional musicians. I’ve always known that no matter how good a musician is, he leaves the stage wishing he could have done a little better. He’s always got a running list of problems, and he’s always working on them. He doesn’t reach a place where everything is perfect — there is no such place in the real world. Rather he reaches a place where he is able to give himself an honest look over and decide what he needs to work on the most. Good teams aren’t good because they’ve mastered technology development: they’re good because they’ve mastered the art of critiquing themselves and working on the most important problems first. When you reach this step, not only are you able to perform, but you also find it a little funny how naive you were in step 1.

This seems like such a simple list, but over and over again I see folks hung up on one of the first three steps, never realizing that the last step is key. Sometimes never even realizing that there is a next step.

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

The Other End of the Telescope

Ran across a very insightful quote the other day that I’m going to mangle and paraphrase:

The main goal for a technology team isn’t the product, it’s the recipe for the product.

Many times we act like the way technology is put together is known: all we have to do is come up with a list of things that need doing — creating this list is where we add value. How we work together, how large groups create a dynamic, productive environment is simply a matter of learning something and repeating it.

The opposite is true. Creating technology to meet some random list of things is a trivial exercise — sometimes a painful, never-ending, death-march, but a trivial exercise. There isn’t a lot of creativity going on. Heck, most of the time there isn’t a lot of computer science going on either, just connecting up the wires. The part that we add creativity to is putting together all of the different people we have in this particular situation and with this particular problem in such a way that the solution happens quickly and people are pleased with the result.

We have shortcuts that sometimes work — a lot of agile is about creating and sharing those shortcuts — but sometimes they don’t work. I’m seeing a lot of Kanban being used in certain situations because sometimes it beats Scrum. Sometimes not.

The technical part of technology development turns out to be a no-brainer: any decent programmer can do a heck of a lot of things. The people and process part of technology — the part they teach you in various classes, seminars, and business schools — turns out to be so brutally non-trivial that huge organizations fail for lack of mastering it. I believe the reason why is that once we take the class or get the certification we believe we understand it when in fact we do not.

It occurs to me in technology development that most times we don’t even know what the important problems are that we are solving, focusing on the technical, easy-to-grasp instead of the social, difficult-to-work.

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Economics: What your Backlog is Missing

Up until a year or so ago I used to think that backlogs were the worst-done thing in Agile because nobody kept the backlog stories in some sort of format that described future behavior. Instead everybody lost track of being able to test them and just threw anything in there.

One group I worked with took all of their database tables and made each into a backlog story, so you’d have a story called “customer” or “address”. This led, of course, to indescribable and untestable stories. What’s done for “customer”? What does it mean to complete “address”?

These were components, not stories. They described proposed pieces of a solution, not things the system was supposed to do to make some external agent happy.

They were almost as bad as the stories that went something like “install SCM tool,” “add field X to the database”, or “Plan for testing hardware”

Those, of course, are “to-do” items, or tasks. Wonderful things to have inside a sprint, but outside of a sprint, in the project backlog, not so much. How big is “install SCM tool”? How will we know when it is done? If we mark it done and then we get a new development machine and have to install it again, does the story go back on the wall?

You have to have tasks to make any project work, and tasks are essential to providing value, but tasks don’t describe the value, they are completely supportive in nature. So yes, without “set up demo machine” nobody is going to be able to see what you’ve done, but the danger here is 1) cluttering up your list with an almost infinite list of smaller and smaller tasks, and 2) confusing supporting work with future behavior, which is the real goal. As you understand more and more of what you’re doing, tasks may come and go freely, but something like “sign-up user for discounts” is going to stay in place until it is split and completed.

Turns out, though, that this was the obvious way backlogs were hosed. There’s a much less obvious — and worse — way that I never really understood.


Continue reading

Share
If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.