The TDD and Refactoring Workshop offers a comprehensive, hands-on introduction to evolutionary design, clean code and automated testing.
Over the past decade, eXtreme Programming practices like User Stories, Test-Driven Development (TDD), Behavior Driven Developer (BDD), Refactoring, Continuous Integration and Automation have fundamentally changed software development processes and inherently how engineers work.
This workshop explores the foundations of TDD, unit testing, automated refactoring and improving the design of legacy code with the help of various patterns, strategies, tools and techniques. Students will learn essential test-first approaches via interactive discussions, multimedia content, hands-on exercises and quizzes.
Test-Driven Development (TDD) is a practice for efficiently evolving useful code. While its name implies that it's mostly about testing, test-driven development is primarily about design: it keeps programmers focused on exactly what they need to build and helps them avoid over-engineering. We'll demonstrate the TDD Rhythm. Participants will understand how TDD simplifies evolving lean, useful, fully tested software.
We'll give a small live demo of TDD and then Participants will get their hands dirty by using TDD on 3 different problems. We’ll conclude by highlighting the different styles of TDD.
Behavior-Driven Development (BDD) combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software developers and business analysts with shared tools and a shared process to collaborate on software development, with the aim of delivering "software that matters".
Although BDD is principally an idea about how software development should be managed by both business interests and technical insight, the practice of BDD does assume the use of specialized software tools to support the development process. Although these tools are often developed specifically for use in BDD projects, they can be seen as specialized forms of the tooling that supports test-driven development. The tools serve to add automation to the ubiquitous language that is a central theme of BDD.
To ensure a successful class, we require the following facilities:
"Inversion of Software Development", that's what Naresh gave me through his 5 days workshop at Amazon. He is one of the best mentors I encountered in my career.
The way he tries to explain TDD and Design principles with practical approaches, always challenging the concepts which we used to think were industry standards. Learning through his workshop, now coding is like blogging, drop dead simple, and you don't look back.
I hope we had more dojos like Naresh mentoring people in Indian Software Industries to let them know what real clean software development is all about. To sum up he instilled the idea - "Perfection isn't the goal, it's the baseline." about software development in me.
-- Rajat Talwar, Software Engineer II, Amazon
I recently met Naresh Jain during Test Driven Development(TDD) training at my current organisation. He is very knowledgeable and also very effective as a trainer. His enthusiasm and confidence is a game-changer when it comes to motivating the workshop participants.
I've really benefited from his training and by applying TDD in my day-to-day work . It was a great experience and I wish, I could get a chance to work with him on a real project.
-- Lokesh Gaur, Technical Lead,Samsung Research
It's been 3 weeks since I had the opportunity to attend a 3-Day TDD workshop followed by a 3-Day Design Patterns workshop by Naresh Jain. Post the workshops; I was able to fully test drive a feature that is already in production.
I had many take-away from his workshops, but the most important ones were - 1. It gave me the confidence that with TDD you can come up with good designs, 2. Learnt refactoring techniques and IDE tricks, 3. Got a deeper understanding of design values, principles and patterns. 4. Identifying code smells (the codes that I was proud of, now all I see there is code smells :P). But thanks to Naresh I know how to make it right.
-- Chandan Kumar, Software Development Engineer, Amazon
Rarely have I met a trainer who was truly hands-on. The depth of knowledge and on-field experience of Naresh Jain is truly inspiring. His proficiency in agile techniques and TDD is bleeding edge.
We have benefited immensely in barely three days of TDD training with him. We wish he was on our team here in EMC2.
-- Vimal Kumar, Principal Software Engineer, EMC2
Recently I attended Naresh's workshop on Test Driven Development (TDD) at Amazon, Hyderabad. It was a great learning experience and an eye-opener in few cases.
He is very involved with the Agile community and has worked with a lot of industry experts. That's the best part of getting trained by him. He is up-to-date with the latest trends and his skills are very relevant.
Naresh's in-depth knowledge and great attitude, fueled by his passion for technology makes him a great techie to work with. I had a great experience and would highly recommend him for training/coaching or even just to have good discussions.
-- Akshay Johri, Software Development Engineer, Amazon