Well i have been so busy over the last year working with startups in London, so my apologies for not updating sooner.
I have been looking for a new contracting role recently, and i have seen so many roles that require TDD and I know that these companies are just using it because it’s the current buzz word in tech. I would argue that BDD and TDD both have their own place, I have been a keen advocate to say that interfacing platforms, e.g. iOS, Web, Android, etc should be BDD because the user interacts with their behaviour, not programmatically or mathematically. In addition to this, the interface is forever evolving so the cost of refactoring a TDD interface is significantly higher than a BDD interface.
In my opinion TDD should be used for the API layer where most of the business logic will exist, this logic usually won’t change once its established and everything created in the API should have unit tests.
For the interface, that’s why UI Unit tests exist e.g. selenium, calabash, ui unit tests(Xcode), so if your interface does have some business logic, then yes write a unit test, but there is no need to have the whole app written in a TDD way!
I think the lack of understanding of TDD and BDD is a problem for businesses right now, they should be relying on their tech lead & architect to determine where and when to use the correct methodologies.
A great real world example is a company who will remain unnamed, a friend of mine mentioned they are looking for permanent staff who can develop in a TDD environment and use a specific tool/framework! I found it laughable that they have such requirements, clearly the person who is in charge of hiring employees is blind sighted to thought that you can find a permanent TDD developer who can write in this framework. What they really should do is re-evaluate their current infrastructure, determine where to use TDD and BDD, re-organise current employees and then look at hiring the correct personnel. If they need a TDD developer, then hire a TDD developer but don’t put the requirement that they must have experience with a particular framework, there is frameworks popping up left right and centre and the current framework they are using is probably out of date already in the first place!