views:

251

answers:

7

We are a small team (3 developers) and one of our main clients is about to submit a bunch of new feature requests and a follow on project to us to get estimates on cost and delivery times. Our last project with them was a 'success' in that they are coming back to us but I know we could have done a much better job (we used waterfall... testing was an after thought and as a result unit-testing code coverage is significantly lower than we feel comfortable with, not to mention the never-ending 'we are ALMOST done' problem).

I have just finished reading 'Art of Unit Testing' and 'Working Effectively with Legacy Code' and I have used TDD on a pet project of mine outside of work and now I can never go back to waterfall and testing after the fact.

What I want to know is are there are good 'easy to digest' videos for non-developers that clearly show the benefits of TDD along with Agile practices in a business sense? I'd be super happy if there are any sub 10 minutes videos but I'm also OK with longer videos (and I will reference them to a time index in it). If there are no good videos then a written source is next best thing.

I want nothing more than for them to be on board and really excited with the transition.

For me it is not an option to 'just do it' as there will definitely be a learning curve for the other two developers and without doubt the first number of iterations may be stressful and bumpy and that needs to be communicated to our client.

[I have answered my own question below with a number of videos I found since asking the question... they are not perfect for my use but definately my plan B if no-one else knows of a better one]

+1  A: 

Why would your client even notice the transition to TDD? Stressful, bumpy; how so?

Tell the client why you are upgrading to TDD. I'm sure the reasons are as compelling to them as they are to you. To me, TDD first of all means a much greater sense of reliability on what you produce.

Surely your client remembers all the regressions and manual testing from your last project?

bzlm
I was keen to approach the problem with a level of abstraction from our past with the client. I am hesitant to point out our many flaws during the last project as they can still choose another software house at this stage. I want nothing more than to be super open and honest with them but honestly I don't know if the relationship is developed enough for that at this point.
CuriousCoder
To be honest, it doesn't sound at all like a programming question then.
bzlm
+1  A: 

I don't know of any specific illustrations for you (the web is full of articles and blogs, but I'm not aware of any videos), but you pretty much answered your own question...

we used waterfall... testing was an after thought and as a result unit-testing code coverage is significantly lower than we feel comfortable with, not to mention the never-ending 'we are ALMOST done' problem

You just need to be honest with your client. Explain to them what the project methodology you used on your last project cost them in terms of flexibility, maintainability, and your ability to confidently provide them with quality code. Explain to them how TDD addresses that, and explain that you anticipate a slower start due to using a new methodology.

Illustrate for them, as concretely as possible, what they will gain, and it should be an easy sell. I would, however, approach it more from the "this is what we're planning on doing" angle, rather than the "can we please do this?" angle. Give them the impression (without being dishonest) that you are already planning on going this way and any change to that plan will be an inconvenience to you and your team, and will likely cost them productivity.

Cam Soper
A: 

I'm not aware of any videos, but explain to them that it took you N man-hours to redesign a certain feature on the last project due to original design not being correct taht was not caught until you started testing; and with TDD it would take M (<<N) man-hours since you would not spend the extra hours working based on a bad design/bug as happened last time.

Also, explain that the confidence level of having less buggy software will be raised by Y percent due to thought-out tests.

Then explain you estimate X hours for learning curve on the FIRST peoject, and ask them if the given benefits on ALL future projects will be worth it, when the initial time investment is depreciated across those.

DVK
I definitely have a number of compelling examples that occurred during the last project. Some of the problem is that we tried to consume the problems invisibly at our end so that the customer didn't notice. Specifically painful redesigns.
CuriousCoder
A: 

Firstly, unit testing isn't unique to Agile methodologies; I've been around a while and have seen it used on waterfall projects. In fact, I heard of unit testing long before I heard of Agile!

Afraid I can't point you to any videos that will help convince a client to switch development methodologies. Google may help though; if not with videos, then maybe with studies, blogs, etc.

Anyway, one suggestion for improving the chances that the client will accept your reduced productivity during your learning curve is to reduce his costs somehow. E.g. if you're billing by the hour either charge less by the hour for time spent learning, or just don't bill for those learning hours.

PTBNL
A: 

I spent the time since asking this question looking for the best videos I could and I've come across a number that are very close to what I need. I will post them here so that others will find them if they are in a similar position to me.

I realise that I asked more about TDD - but these videos capture a good portion of the message I'm trying to drive home... especially 'Why does Agile Software Development Pay' and 'Scrum in under 10 minutes'... it is the process of being responsive to change, producing higher quality code, having fewer defects and faster development cycles.

CuriousCoder
+2  A: 
Pascal Thivent
I have decided to go with this approach and I think this is an excellent way (the terminology and the graph you added) of demonstrating to them that starting with a methodology that manages technical debt from the first day the project commences will pay dividends down the road. The presentation you linked to was very useful too.Thank you.
CuriousCoder
Happy you find it useful. I like it too (and more generally all Henrik Kniberg's work) and use it frequently to explain that without TDD and other quality oriented practices (that might be perceived as nice to have and extra cost), your productivity will decrease with time. Actually, high quality is certainly not a nice to have, it's a must have for productive teams. Without quality, you can't achieve hyper productivity.
Pascal Thivent
+1  A: 

How you run your project internally is your business. Don't involve them in this decision. They are not experts in software development processes. Ask them about business requirements and things they know about.

Sound like you are doing this to improve project quality. Do you think it will cost more to do TDD? Why work to convince them of something and then ask their approval? Did you ask if you could do waterfall on the last project?

WW