Coding with Geeks- De Code the secrets behind TDD, BDD and ATDD

This session is a coding sessiont that takes a problem and shows clearly what is the difference between TDD, ATDD and BDD. Ths session uses code for the server layer as well as UI layer.

This session is not for you if you do not code. If you do code, please bring your laptop as we delve into the details of all these styles of programming techniques.

We will rotate between ATTD, TDD and BDD periodically and show it at use in different layers. This session will be using Java , Rails, Scala and C# together so that you can see how you can benefit do these techniques even when coding in different languages.

We look at common pitfalls and wrong beliefs that programmers have when it comes to these concepts

This session is purely keyboard and you will have to bring a laptop.

 
6 favorite thumb_down thumb_up 5 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist
 

Outline/structure of the Session

1) 10 minutes of presentaiton on what are the fundamental concepts and differences in each of these techniques

2) 20 minutes on TDD

2) 20 minutes ATDD

3) 20 minutes BDD

4) Mix and match all these techniques and feel in heaven with code

5) Bring your own laptop and participate.

6) You will also take home a paper that explains all of this so that you can go home and practice

Learning Outcome

1) How to code well using TDD, BDD, and ATDD

2) What is not TDD, ATDD, and BDD

3) Common challenges of TDD, ATDD, and BDD

4) legacy code and using these techniques

5) How about doing this in the Java script layer

Target Audience

Developers

schedule Submitted 4 years ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Sachin goel
    By Sachin goel  ~  4 years ago
    reply Reply

    hi - are there any special learnings form this hands on session which participants may struggle to get from free tutorials / books ?

    thanks - sachin

    • Vibhu Srinivasan
      By Vibhu Srinivasan  ~  4 years ago
      reply Reply

      The special learnings are doing these techniques together and understanding clearly the differences between the different techniques. Books do give details but I am hoping a hands on session will shed light on actual differences in techniques

  • Doc Norton
    By Doc Norton  ~  4 years ago
    reply Reply

    I know of very few people who have Rails, Java, Scala, and C# all well configured on their machine and ready for TDD, BDD, and ATDD. Even if they do have it set up, the liklihood that they've the same tools configured as you is incredibly slight.

     

    Is this going to be an issue for a hands-on session?

    • Vibhu Srinivasan
      By Vibhu Srinivasan  ~  4 years ago
      reply Reply

      Doc

      I am hoping that as long as they can code in one of these languages it should be okay. I do agree that even within the same language boundary the tools may not be the same. Since i am going more on the concepts i believe knowing a specific tool should not come in the way

  • Savita Pahuja
    By Savita Pahuja  ~  4 years ago
    reply Reply

    Thanks Vibhu. Going to be a good session. These are the practices people know theoritically but very few use those practically, specially in the right manner.


  • Liked Bernd Schiffer
    keyboard_arrow_down

    Bernd Schiffer - Net Promoter System for Agile Companies

    45 mins
    Talk
    Intermediate

    Customer collaboration is essential to every Agile business. To create and collaborate to keep a customer is the purpose of an organisation. But still lots of companies try to make bad profits, i.e. profits earned at the expense of customer relationships. The Net Promoter System (NPS) is a renowned open-source system which addresses and measures customer collaboration. And did you know that you not only can use it to get feedback on your products and services, but also on your employees and your personal performance?

    NPS is a perfect fit for Agile companies - and those who want to be. Most of the companies I worked with (Agile coaching, training, consulting) had not heard about it, and far less were actually using it. This really surprises me, since NPS integrates like a charm with Agile, e.g. within product development via Scrum.

    In this session I'll explain the basics of NPS, i.e. promoters and detractors, satisfied and delighted customers, bad profits (how to deal with bad feedback?) and good profits, and why and how to measure these. Several stories from companies like Apple Retail, Zappos, Southwest Airlines, and others will help to make my point. I’ll further show why NPS is a very good fit with Agile regarding products, employees, and personal performance. Dos and Don’ts regarding NPS (also from personal experience) will close this session. Related to the Don'ts, I also cover some of the negative critiques out there.

  • Liked Victoria Schiffer
    keyboard_arrow_down

    Victoria Schiffer - Agile Coaching? Sure thing! What about Life Coaching in Agile Thinking?

    Victoria Schiffer
    Victoria Schiffer
    Agile Coach
    SEEK
    schedule 4 years ago
    Sold Out!
    45 mins
    Talk
    Beginner

    I love being around awesome people, who build great products customers desire. 
    I love learning from and together with these amazing minds. 
    I love creating the right environment for teams to flourish. 
    I love change, and learning from new experiences. 
    I love working in Agile environments.

    How about you? 
    I bet there are some elements of this list why you're in Agile, too. And you can probably add even more elements to it.

    The Agile Manifesto states amongst others individuals and interactions, customer collaboration and responding to change.

    In our everyday life doing Agile we already respect these aspects in many ways. 
    But do we practice what we preach as best we can?

    I'd like to challenge your current way of thinking about people and processes. 
    I'd like to challenge you to focus on you, before you focus on others. 
    I'd like to challenge your current way of reflecting. 
    I'd like to inspire you to go different ways. 
    I'd like to inspire you to inspire others.

    In Agile we're already good in improving our processes and creating well performing teams and hence building the right things in the right way. And in the Agile Manifesto's communication and collaboration piece we can even get better.
    "You have not yet reached the limit of what you're capable of!" means we can always further improve. And we do follow this idea in our Agile processes, too, through continuous feedback (Retrospectives) and improvement.

    And why not take it even further? Why not go "Beyond Agile"?!

    Here's where aspects of Life Coaching come in handy: through also understanding and improving ourselves (how do we interact with people due to how we perceive our environment) we will even further improve communication and collaboration.

    Life Coaches believe our clients know the answer. And even if Agile Coaching is slightly different than Life Coaching, I see it as very relevant in Agile Coaching, too. If we apply this in Agile, instead of giving our clients (team, colleagues) the answers, asking them powerful questions to help them be more aware of what's happening at the moment, they will find their answer for it and will have a much better commitment to making the change for themselves, their teams and the company. It's not for us to TELL them what to do, but to ASK them what's going on for themselves. Here's where I see a huge chance for improvement.

    In my session I give lots of examples on how to link Life Coaching ideas to our Agile work environments. I've given the session at LAST Conference Melbourne and at the Agile Coaching Circles Meetup Melbourne. The audience was engaged and the attendees were very happy about having some new ideas on how to improve their daily work life.

    Come along to be inspired by Life Coaching and thus to benefit our Agile Thinking!

  • Liked Giovanni Asproni
    keyboard_arrow_down

    Giovanni Asproni - Methodology Patterns: a Different Approach to Create a Methodology for Your Project

    Giovanni Asproni
    Giovanni Asproni
    Consultant
    Asprotunity Limited
    schedule 4 years ago
    Sold Out!
    90 mins
    Tutorial
    Advanced

    In the software world we have been looking for “The Methodology” to solve our software development sorrows for quite a while. We started with Waterfall, then Spiral, Evo, RUP and, more recently with XP, Scrum, Kanban, DAD, SAFe (there are many others, but, their impact, so far, has been limited).

    In this tutorial, I'll show why this search for the holy grail is bound to fail--each methodology has strenghts and weaknesses that make it suitable only in some contexts--and I'll describe a different approach based on patterns and pattern languages, that teams can use to create their own methodologies to suit their specific needs, which, in my experience, has a higher chance of success. 

    The approach is based on the observation that all the practices used in all modern methodologies--e.g., user stories, use cases, team self organization, TDD, unit testing, acceptance testing, continuous integration, iterative and incremental development, etc.--come from the same set. Different methodologies just mix and match them differently. All those practices can (and many have already been) described as patterns whose relationships with each other form a set of pattern languages.

  • Liked Naresh Jain
    keyboard_arrow_down

    Naresh Jain - Scaling XP Practices inside your organization using Train-the-Trainer Model

    Naresh Jain
    Naresh Jain
    Founder
    ConfEngine.com
    schedule 4 years ago
    Sold Out!
    90 mins
    Workshop
    Advanced

    How do you effectively scale skill-based, quality training across your organization?

    Over the years, I've experimented with different ideas/models to scaling skill-based training across an organization. In the last 4 years, I've pretty much settled down on the following model. Its very useful when mentoring teams on skills like Test-Drive-Development (TDD), Behavior-Driven Development (BDD), Product Discovery, Writing User Stories, Evolutionary Design, Design Patterns, Problem Solving, etc. I've successfully implemented this model at some very prominent fortune 500 enterprises.

    The goal of this workshop is to explore what other successful models organized have used to scale skill-based training in their organization.

  • Naresh Jain
    Naresh Jain
    Founder
    ConfEngine.com
    schedule 4 years ago
    Sold Out!
    45 mins
    Demonstration
    Intermediate

    "Release Early, Release Often" is a proven mantra and many companies have taken this one step further by releasing products to real users with every commit a.k.a Continuous Deployment (CD).

    Over the years, I've built many web/infrastructure products, where we've effectively practiced CD. However at Edventure Labs, when we started building iPad games, we realized there was no easy was to practice CD, esp. given the fact that Apple review takes a few days.

    Our main question was: As mobile app developers, how should we architect/design our apps for CD?

    We were a young startup, learning new behavior about our users (kids aged 5-8) everyday. We could not afford any delay in releasing latest, greatest features to our users. To solve this problem, I believe we've built an innovative solution to enable any mobile app developer to achieve CD.

    If you are building real products, which have platform/3rd-party dependencies and you want to practice CD, this session is for you.

  • Liked Pramod Sadalage
    keyboard_arrow_down

    Pramod Sadalage - Ten Patterns of Database Refactoring

    Pramod Sadalage
    Pramod Sadalage
    Developer
    ThoughtWorks
    schedule 4 years ago
    Sold Out!
    45 mins
    Talk
    Beginner

    Over the life of an application as requirements change, application usage patterns alter, load and performance changes the need to change database and database architecture is inevitable. There are patterns of these changes such as

    1. 1. Encapsulate Table with View
    2. 2. Migrate method from database
    3. 3. Replace method with views
    4. 4. Introduce Read only table
    5. 5. Split table
    6. 6. Make column non-nullable
    7. 7. Drop column
    8. 8. Add foreign key constaint
    9. 9. Merge columns
    10. 10. Replace columns

    In this talk we will discuss the above database refactoring patterns and different implementation techniques to enable blue, green deployments, allow for legacy applications to work with fast changing database and enable the teams to effectively refactor the database to fulfill the changing needs of the organization.

  • Liked Cara Turner
    keyboard_arrow_down

    Cara Turner - Building Creative Teams: Motivation, Engagement and Retrospectives

    Cara Turner
    Cara Turner
    Agile Coach
    Khanyisa Real Systems
    schedule 4 years ago
    Sold Out!
    90 mins
    Talk
    Advanced

    How do software teams become creative? If you're not a start-up, does creativity even play a role in the business driven world of software development? Idea generation is the basis of all our work - no matter how challenging or mundane. With a scientific approach to implementing change, creativity is the basic tool we have for addressing the challenges of software development.

    This talk explores the elements of engagement and creativity along with the neuroscience of generating ideas. These give us specific insight into how employing different agile retrospective formats over the course of the product development process can extend our usual practices and develop a thinking mind-set comfortable with tackling daily work with a fresh and explorative approach.

  • Liked Johannes Brodwall
    keyboard_arrow_down

    Johannes Brodwall / Niruka Ruhunage - Remote Pair Programming

    45 mins
    Demonstration
    Beginner

    Can you maintain agile engineering practices with a distributed team?

    Johannes is the Oslo based Chief Scientist for the Sri Lanka based company Exilesoft. In order to promote agile engineering practices, he uses remote pair programming to connect with teams halfway across the world.

    In this talk, we will go through a practical approach for remote pair programming adopted for high-latency situations. We will demonstrate remote pair programming with a live example and we will discuss the advantages and usages of the approach. We will also cover the practical parts of remote pair programming, such as tools and setup.

    After seeing this talk, the audience should be able to remotely pair with members of their distributed team. They will also get a lot of tips on how to use pair programming effectively in both local and remote settings.

  • Liked Michael Heydt
    keyboard_arrow_down

    Michael Heydt - Applying Lean UX to Capital Markets - Lessons From a Year of Lean UX on Wall Street

    45 mins
    Talk
    Intermediate

    The Lean UX approach to interaction design is a spectacular model for defining and implemented what is needed in appications to support the users in their jobs, as compared to technical deliverables that in the end often do not meet the needs of the users.  In this talk, I will go over strategies for applying lean UX practices to capital markets projects, adapting UX to agile processes, including executing user interviews, rapid UX design, mockups to UI prototypes, and rapid implementation through continuous delivery and end user experience / acceptance testing.

  • Liked Vinod Sankaranarayanan
    keyboard_arrow_down

    Vinod Sankaranarayanan / Pravin Kumar Thakur - Introducing Agile Knowledge Transfer

    20 mins
    Experience Report
    Beginner

    After more than 5 years of supporting the thetrainline.com platform, ThoughtWorks worked with The Trainline teams to transfer knowledge and context  back to the Trainline Teams.

    This methodology was co-created by ThoughtWorks and Trainline as a healthy sustainable and mature way to transfer knowledge. The transition itself was about a year long and involved multiple agile concepts around remote pairing, program MVP and above all, continuous delivery and non-disruption to business through the process.

    This presentation would take the audience through the experiences and learnings of the process. This session is co-presented by ThoughtWorks and Trainline (vendor and customer) and will provide an insight across multiple spectrums of delivery and business.

  • Liked Nikhil Joshi
    keyboard_arrow_down

    Nikhil Joshi - Build - Measure - Learn : Without spending a fortune

    20 mins
    Experience Report
    Beginner

    At times we have great product ideas but the biggest barrier to entry lies in answering few questions such as:

    - How do I define and validate Problem hypothesis, Solution hypothesis and Underlying assumptions?

    - How do I quickly setup a platform for people to register their interest?

    - What will keep the potential customers engaged, excited until the first release (or beta) is out?

    - How do I get feedback from the early adopters?

    - And eventually when I have answers to some of these questions, how do I make a decision to persevere or pivot?

    If you've faced a challenge while answering any of these questions while building/validating your product idea, this session is for you. We'll look at tools and techniques to validate the product hypothesis early-on without spending months or fortunes. We'll also look at a case study to highlight how some of these tools, techniques helped us validate our product idea.

  • Liked Ram Srinivasan
    keyboard_arrow_down

    Ram Srinivasan - The Conflict Paradox

    90 mins
    Workshop
    Intermediate

    It is not a question of if a team is going to have a conflict; it is a question of when. Equipping them to deal with conflict is more than creating agreements or having a good facilitator. We look at a conflict model that focuses on dynamics of conflict by understanding- 1. Cognitive skills:self-awareness about triggers, hot spots, emotions,behaviors. 2. Emotional skills:reading emotions, body language, balancing emotions, using curiosity 3. Behavioral skills:understanding others’ perspectives and needs, avoiding 8 destructive behaviors, embracing 8 constructive behavior. In an organizational setting, it is important to understand the source (culture, interdependence, incompatibility, personality, power, etc.) and types of conflict (cognitive vs. affective). Creating awareness about conflict processes, retaliatory cycles and building a conflict profile can empower teams engage in constructive disagreements. 

  • Liked Andrea Heck
    keyboard_arrow_down

    Andrea Heck - Distributed Product Owner Team for an Agile Medical Development

    Andrea Heck
    Andrea Heck
    Agile Coach
    Siemens AG Healthcare
    schedule 4 years ago
    Sold Out!
    45 mins
    Case Study
    Advanced

    We are developing medical imaging and workflow software in an agile way with development teams distributed to several countries. One of the major challenges is how to set up and communicate within the Product Owner team. There we have to deal with the distribution, e.g., have the Product Owner either onsite with her peers or with her Scrum team, travelling, or with proxy. We need people who are good in two different fields of knowledge: medical and software development. As a third issues, the environment of the customers may be different in different countries.

    We have ramped up local Product Owners in different countries, have found local collaboration customers, and have developed a set of communication channels and workshops how to synchronize Product Owners in the team, share a common vision and backlog with their Scrum teams, and collaborate with customers locally and globally.

  • Liked Mushtaq Ahmed
    keyboard_arrow_down

    Mushtaq Ahmed - Using a modern web framework for big enterprise agile project

    Mushtaq Ahmed
    Mushtaq Ahmed
    Mr Scala
    ThoughtWorks
    schedule 4 years ago
    Sold Out!
    20 mins
    Demonstration
    Advanced

    At ThoughtWorks, a 50-people team is building a marketing website backend for one of the largest consumer electronics brands in the world. We are Play-Scala as our web framework which allows us to design the application in a very different but powerful ways. This experience based talk will talk about these differences, emphasizing on two of them: "Dealing with concurrency without threads" and "Dependency resolution with constructor injection".

    Dealing with concurrency without threads
    - The backend is end to end non-blocking with highly concurrent architecture
    - Each page consists of 20+ reusable snippets, so each page request translates into 20+ outbound web service calls to get data for the snippet data in parallel
    - Posting data involves download/upload of large images from/to remote services, also done in parallel
    - We will show you how Scala Futures, Play and ReactiveMongo functional programming paradigm allows us to do all this without blocking any thread or managing thread-pools by hand

    Dependency resolution with constructor injection
    - Dependency injection is considered essential for designing applications that are easy to test. Usaully, dependencies are specified as constructors parameters
    - Scala traits allow us to get rid of constructors by wrapping classes and their factories inside components that in turn can depend on other components, this enables a compile time mechanism for dependency resolution which is very flexible
    - We will show examples of this pattern, its effects testing without external DI frameworks

    We will briefly talk on how functional programming style in general helps with testing and software delivery on agile projects. Finally, we will also cover the pain-points these approaches bring out, and argue if it is worth to pay that cost.

     

     

  • Liked Gerry Kirk
    keyboard_arrow_down

    Gerry Kirk - Create an Agile virus in your organization, empower your team, change your life

    90 mins
    Tutorial
    Beginner

    Need buy in from a key manager or executive to adopt Agile? Desiring better team collaboration? Hungry for a saner life at home?
    Try Personal Kanbanwinner of the Shingo prize for Operational Excellence. It's the fastest, simplest way to taste test the goodness of the Lean Agile approach to managing knowledge work. Personal Kanban empowers small teams and individuals, at work and at home.Give that overwhelmed executive instant relief. Build your own system, and soon curious onlookers ask and then create their own. Look out, you've just released an Agile virus in your organization!
    You've also discovered a way for you and your team to get more out of your efforts, to improve communication, and find time for the things that matter most.In this session you'll learn how to create a Personal Kanban system through stories, examples and interactive exercises. Walk away understanding the psychology behind visualizing work and limiting work in progress, inspired and motivated to make a difference at work and home. 

  • Liked Anna Obukhova
    keyboard_arrow_down

    Anna Obukhova - The SCRUM and the willpower: how neuroscience can boost your productivity

    Anna Obukhova
    Anna Obukhova
    Agile Coach
    Luxoft
    schedule 4 years ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    Willpower is the force that is between the brain activity (I want to do this or I need to do this) and the action itself (start coding). If there is not enough willpower, people find it difficult to start any activity (especially that involves
    decision making).


    What is the standard approach when you feel tired and find it difficult to concentrate? Take some coffee (but latest research shows that coffee depletes the brain activity, even when body has more energy), take some sweets (but sugar ends quickly and gives even more exhaustion to the body)? These widely used strategies generally do not work, and in long-term even add harm to the body and brain.


    The willpower is not endless (so-called muscle theory of willpower), it can be saved, it can be trained, there are approaches how to keep the willpower level high. To keep the willpower (and thus, productivity) on the high level, people should know and use different approaches that lay in the field on the social and cognitive science.


    There are a lot of evidences that SCRUM improves the developer’s productivity in terms of speed of development, code quality, and accuracy of design. Unfortunately mainly all recommendations from SCRUM coaches look like “believe me, if you do this, you will have better velocity”. Yes, it works. But why does it work?


    Sometimes SCRUM does not give such great results even when main elements are in place. The question “Why” and “What makes the difference” is here again.


    I will describe the model of relationship between the willpower related brain metabolism on very low level (specific amino acid cycle) and the SCRUM practices. I can prove that SCRUM addresses the productivity of the people’s brain using 3 different flows simultaneously. There are several tips that make these productivity flows working or not. You can make Agile productive, you can have non-productive Agile. I will show you where the difference is.


    Overall there are 10 productivity tips that can be put into 3 flows.


    As the outcome of this session, Agile coaches, and all people who can change the process (in fact that is any team member) will review their SCRUM: does the way they have it improve the productivity or they are losing all the power? The changes are cheap, the outcome can be huge.

  • Liked Karthik Sirasanagandla
    keyboard_arrow_down

    Karthik Sirasanagandla - When Agile becomes Fr-agile..learn your lessons the fun way!

    45 mins
    Talk
    Intermediate
    So you have heard of "Code Smells". Did you hear of "Agile Smells"? Yes or No; then this session is for you (us).
     
    In this session, Karthik intends to talk about the very many things that go wrong in companies that attempt to be or become Agile.
    But fault-finding is the easiest thing. Can Karthik provide concrete solutions? Yepp, he intends to share the solutions as well for most if not all the problems.
    And in same breadth seeks to know what others has to offer from their experience.
     
    Piquing your interest? Are you wanting to get a taste of some of the Agile smells? Below are some of them:
    * Belated Stand-ups
    * Non-participative stand-ups
    * War-zone Retrospectives 
    * Unfruitful Sprint planning meeting
    * Zero-Test development
    * Inverted Test Pyramid development
    * Gate-keeper QAs
    * Hierarchical Roles
    * Velocity Driven Development
     
  • Liked Naveen Nanjundappa
    keyboard_arrow_down

    Naveen Nanjundappa - Why not estimate? Think different for story point estimation.

    45 mins
    Talk
    Intermediate

    The Agile Community talks a lot about Estimation and need for it. A large majority have different opinions, but when it comes to teams and organizations that are transforming to Scrum, mostly suffer in group estimation and story point estimation technique. 

    Agile primarily focus on value based deliver and that doesn't need estimation. 

    This presentation enrich those audience who need estimations for their project/product development, with details that make estimates better. At the same time it doesn't advocate estimation as a must have for product development.

    Following 4 aspects will be connected to story point estimation and help audience understand the story-point estimation.

    1. Concept of Accuracy and Precession

    2. Cone of Uncertainty

    3. Story point Estimation scale

    4. Group Estimation and Relative Estimation

    Teams struggle in estimating the product backlog items. Composition of estimation: any estimate is a mix of "the known, unknown and complexity". The presentation shall also connect estimation thoughts to product backlog and the cone of uncertainty

  • Liked Johannes Brodwall
    keyboard_arrow_down

    Johannes Brodwall - Bare-Knuckle Web Development

    Johannes Brodwall
    Johannes Brodwall
    Chief Scientist
    Exilesoft
    schedule 4 years ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    Can you go faster with less weight?

    We have all learned the benefit of reusing application servers like JBoss, ORMs like NHibernate or dependency injection frameworks like Spring that "solve all the plumbing code for you", but how real are these benefits really? Most developers struggle using techniques like test-driven development and refactoring effectively in their day to day project. Many developers spend a majority of their day finding out which magic incantations will make your framework solve your requirement.

    Yes, frameworks probably will reduce the size of your code base. But will their reduce the time it takes to develop that code base? And perhaps even more pressingly: How certain are your estimates when you know that a the majority of your work is to find out exactly which few lines of code you need to change by debugging, reading documentation and searching for answers on stack overflow?

    When I was first learning math, my dad told me that I didn't to use a calculator before I could do the math without it. In the same tradition, this talk builds on the premise that you shouldn't use a framework that you can't do without: I will create, live, a realistic web application without generators, without frameworks and without bullshit. Instead, I will use test-driven development to ensure steady progress to a solution with no magic.

  • Liked Arijit Sarbagna
    keyboard_arrow_down

    Arijit Sarbagna - Quality in Code not in Management Slides

    45 mins
    Talk
    Advanced

    Agile has always challenged people with the question on how much to design upfront! It doesn't end there, it even flows in the day-to-day work of the developers & the associated Engineering Practises. We do understand the need to have a scalable design, rigid code quality checks - but who is eventually driving these? How are the architects coping with the changing dynamics of development methodolgoy? Are we really driving those practises in reality or are they finding place in management slides only?

    This session is an attempt to project how the practise of architecture is getting mis quoted/mis understood in most of the ongoign Agile projects & what has been the root cause behind them.

    We also try to come to an agreement as what should be the ideal approach towards setting up an Agile Architecture.