Beauty and pain of TDD

When you like something, whatever it could be, it’s easier and natural for everyone to point out the beauty as well as the pros and the benefits. Cons, issues and pains are often left behind. But in some cases (or maybe always, who knows..) such an information is not enough to have a clear 360° view on the thing. It’s always the same old story, what may be good for you may not be as good for me.

As everything else in this world, TDD has not only pros and benefits. But googling around it’s easier to find most of all enthusiatic thoughts on it. Well, by chance I found someone using it and giving a clear and objective criticism towards TDD. What I really like is that this criticism is not an end in itself, but wants to help people to figure out what does using TDD means and to understand if it is the right choice or not.

Have a nice read: Test driven development at Transloadit.


Of HTML 5, of course! At the moment HTML 5 is still a rich promise, but neither Adobe nor Microsoft want to renounce their own slice of the cake. I can still remember the loads of articles talking about Adobe vs Apple and Adobe trying to obstruct the works for the new HTML specification. Adobe was so doubtful about it that Adobe’s CEO Shantanu Narayen dismissed HTML 5 as being “unable to deliver a consistent user experience across different Web browsers” and predicted that “a decade will pass before the specification gets standardized”. Sometimes fear is so hard to hide…. But tahnkfully now things have changed, fear disappeared and the new must are trust and committment.

And so came the support for the WebM project and the HTML 5 Pack for CS5 suite. But Adobe never stops thinking about it customer and so here it comes directly from the MAX 2010 the great idea: develop your own applications in Flash and thanks to one click only you will get a full featured copy of it into HTML 5. Woooow..that’s amazing! But, just one moment please. Let me think about it. Why should Adobe promote such a tool? Isn’t Adobe investing tons of dollars on Flash? Yes, but you remember, things have changed. The answer is simple: finally Adobe realized that the Flash Player is not a fully universal runtime and never will be. If Mohammed will not go to the mountain, the mountain must come to Mohammed. Or better to HTML 5. So Adobe reviewed its strategies and now wants to provide its customers with a full suite of products ready for HTML 5 development. Flash and HTML 5 will coexist. If you can’t kill them, make friends with them, said someone.

Could Microsoft just wait and see? Not at all. As a matter of fact if Flash should worry about HTML 5 so shoud do Silverlight. But the world should not be scared, Microsoft is really committed to HTML 5 too. As a matter of fact it seems that Silverlight won’t be no more the cross-platform runtime for RIAs as it were in the original plans. Also Silverlight will live and will coexist with HTML 5, but it seems that it will become part of the development plaftorm for Windows Phone.

So now everybody loves HTML 5 and most of all everybody wants its own slice of the cake.
It’s just a hunch, but now it seems that everyone is implicitly claiming that HTML 5 is the one and only real cross-platform technology to come. Who would ever have thought that?


Since a few days I started working in my new company. Soon I asked my colleague what I had to do to set up my workspace. Ask the chief, he said. Then my chief came and told me “There’s nothing to install. Here’s my hard drive, get one of my virtual machines and you use it as your own workspace”. It took me 20 minutes to copy the vm, in the meantime he wasn’t working as I was copying its workspace, and me too, of course. Once the copy finished I launched the vm and soon the problems came: memory not sufficient, neverending windows boot and finally the mess, the vm was a real mess and tuned to be unusable. I began asking some questions:
Why do I have to use your vm as my workspace if I have my real machine ready to work? Because by doing so you can start working immediately, of course. And switching from one project to one another will be simple: change vm and you are done. Easy as a pie….
Have we got a repository of ready to use vm? Ehem..maybe, here or there..we could have something..but, I don’t know..Mmmmm….

Two days ago I posted this and besides the DIY stuff, I liked the cloud-based approach. Browsing the net in search for some more ideas I found another interesting article from CMcrossroads.com titled Cloud-driven development. First of all let me say it’s very interesting. And I think I’m not alone since the Cloud-driven development is one of the key topics of the ALM Expo 2010. Anyway, in my opinion this title is a little bit high-sounding. But let’s understand what it’s all about. The author presents a new “methodology using cloud resources to improve the software development process from inception to production”. Sounds good. This should be done by “providing all of your developers and testers with dedicated test servers in the cloud whenever needed.”. Sounds really good but as you may notice he said test servers. As a matter of fact, reading through the article, you may notice how the it focuses most of all on how to improve test process by increasing the availability of testing resources thanks to cloud-computing. In my opinion this is not so “Cloud-driven development” as I really don’t see the cloud driving developers’ work. This is something more like leveraging the cloud to improve testing. It would have great effects on test feedbacks and code improvement, of course. But I think this name may be misleading.

Anyway, may the title be right or wrong, I think this is a good article giving us some very good hints to think about. One for all: provide the developer with the needed working resource right when needed. But I don’t think we should focus on testing environments only. I mean, we should try to exploit this power not only for tests. Why can’t we think about something supporting the real development too? As I said before, in my new job seems to be really time consuming to set up a new working environment so people tend to push and reuse vms. This easily leads to mess. And when you have loads of work to get through…. To speed up working environment setting up, avoid vms mess and increas productivity, we could think about a cloud based system in which to start working on a new project the cloud provisions the developer with the right yet configured development resources needed. Moreover, this would translate into other additional advantages like having a focused and very controlled set of vms.


Playing real test-driven development the right way may not be so easy as it seems and seeing a master doing it with your own eyes may be very helpful. Thankfully there’s somebody out there that is so unselfish to help us playing this game. James Shore published in his blog a very good set of lessons (43 by now, and counting…) on TDD called “Let’s play TDD“.

Actually Shore is not alone and if you google a little bit you will find a lot of interesting videos talking about TDD. Even Kent Beck published his own TDD lessons on the Pragmatic bookshelf. But you’ll  need some money to get it…while Shore’s lessons are totally free ;) . Hope this helps.


Powered by WordPress and theme PlainMagic.
Copyright © 2010 The Granma's garage