My Struggles with TDD
Dave Farley, in his YouTube video, explains several challenges in adopting TDD. As someone who aims to improve my TDD skills (particularly as a design tool), and based on my experiences, I believe those challenges can be summarized into two main categories:
Environment that practices TDD
While I’m convinced that TDD is better way to write software, utilizing it as a design tool (its intended purpose) is difficult. Dave mention that the best way to learn TDD is by learning from more experienced programmers. In Indonesia, however, this is quite a challenge due to relatively low TDD adoptions and advocacy within companies and among programmers. Learning through videos can not fully replace the exchange of information and interactions that occurs in an actual face-to-face session.
Skill Development
TDD possesses a steep learning curve, and giving up mid-way undoubtedly indicates a skill issue. Additionally, using TDD can initially lead to slower software delivery compared to traditional methods. Setting up a project for TDD often requires significant effort and may involve trial and error. Therefore, overcoming these challenges requires skill development.
It’s important to note that skill acquisition can be achieved through learning and practice. However, without a supportive environment (aforementioned point), mastering TDD becomes a significantly more time-consuming endeavor.