As developers, we often shy away from making changes to existing (legacy) code base due to the fear of breaking existing functionality. While we've enough industry wisdom on how to refactor large monolithic applications, its usually hard to find team members, who can champion the cause. For many folks, refactoring code without having automated tests can be scary. And quite often, it ends up being an egg-and-chicken problem, .i.e. to write tests one needs to refactor the code. But to refactor the code, we first need tests. Even if we break the egg-and-chicken problem, where do we start and how do we visualise the progress, becomes a big challenge.

This hands-on workshop will equip you with the necessary tools, technique and skills to confront legacy code. It teaches you how to use various safe-refactoring strategies, while breaking dependencies and writing first few scaffolding tests to guide your excavation. These techniques are very useful to get existing code safely under test for refactoring. You will also learn how to use these techniques in conjunction with TDD to breathe new life into large existing code bases.


Outline/Structure of the Tutorial

  • Using Test as a Probe
  • Clean Code Fundamentals
    • Identifying code smells
    • Simplifying code structure
    • Organizing data and methods
    • Simplifying and encapsulating logic
  • Changing Legacy Code
    • Identifying the change point
    • Finding interception points
    • Breaking internal and external dependencies
    • Writing a scaffolding test
    • Test-Driving the change
    • Removing the scaffolding test
  • Refactoring Strategies
    • Divide & Conquer
    • Narrowed Change
    • Parallel Change
  • Techniques for break dependencies with Awkward Collaborators
    • Extract and over-ride
    • Parameterise constructors (Dependency Injection) and methods
    • Adapter
    • Strategy
    • Command 
    • Mediator
    • Self-Shunting
  • Techniques for dealing with other awkwardness
    • Hidden and global dependencies
    • Singletons
    • Inaccessible methods
    • 3rd Party Library dependencies
    • Dealing with constraints imposed by your Framework
  • Using C3 to visualise the health of your codebase and to identify hot-spots in your code

Learning Outcome

  • Understand when to refactor and when to rewrite parts of your legacy system.
  • Learn how to choose from various strategies to confront legacy code.
  • Understand to quickly write scaffolding tests.
  • Learn how to find and secure an inflection point
  • Pickup refactoring tools/techniques to evolve/improve the design of your code.
  • Learn how to make your code testable by breaking dependency with awkward collaborators.
  • How to visualise the health of your codebase and identify hot-spots in your code using C3.
  • Accommodate changing requirements without the fear of damaging your design.

Target Audience

Developers, Technical leads and Architects

schedule Submitted 4 years ago

  • Dave Thomas

    Dave Thomas - Value Driven Development - Maximum Impact, Maximum Speed

    Dave Thomas
    Dave Thomas
    Chief Scientist
    CSO Kx Systems
    schedule 4 years ago
    Sold Out!
    45 Mins

    Agile, OOP... are like good hygiene in the kitchen, it results in meals with consistent quality and predictable prep and service times. It doesn't result in great meals nor substantially impact the ROI! Lean Thinking clearly shows that the only way to make a significant impact is to improve the value chain by improving flow. If everyone is following best practices no one has competitive advantage. Major improvements in the value chain depend on continued disruptive innovations. Innovations leverage people and their ideas. We use case studies to illustrate the different business and technical innovations and their impact. We conclude with a discussion of how to build and leverage an innovation culture versus a sprint death march when dealing with high value time to market projects.

  • Joshua Kerievsky

    Joshua Kerievsky - Modern Agile

    Joshua Kerievsky
    Joshua Kerievsky
    Industrial Logic Inc.
    schedule 4 years ago
    Sold Out!
    45 Mins

    Genuine agility is enormously effective in helping us achieve our dreams. The trouble is, Agile has grown into a complex tangle of roles and rituals, frameworks and tools, processes and certifications. We need a return to simplicity. Modern Agile is here to help.

    Designed for people in many domains (not just IT), Modern Agile is defined by four guiding principles:

    • Make People Awesome,
    • Make Safety a Prerequisite,
    • Experiment & Learn Rapidly and
    • Deliver Value Continuously.

    Understanding and deeply practicing these four principles will help you get better results faster.

    In this talk I’ll share how these four principles power world-famous companies and how they can help you work with greater speed, simplicity, safety and success.

  • Fennande van der Meulen

    Fennande van der Meulen / Maartje Wolff - The Power of Purpose - workshop on How purpose drives employee happiness and company results

    90 Mins

    Having a clear purpose in both life and work is essential to happiness. And, science and business support this view. Companies with a clear purpose perform better than companies without. Purpose is increasingly seen as the key to navigate the volatile and complex world we live in. And, people with a purpose in their live longer and are healthier. However, finding your purpose, your personal and companies purpose, is not an easy task. In this workshop we discuss what purpose means and key elements of a sustainable and meaningful purpose. We elaborate the four steps to identify the company purpose and how to build your business around it.

  • Dipesh Pala
    Dipesh Pala
    Agile Leader - Asia Pacific
    schedule 4 years ago
    Sold Out!
    45 Mins

    As we reflect back on our numerous struggles with making Agile Teams more efficient and operate like well-oiled machines, we are often overwhelmed with wondering how we didn’t learn the lessons faster or earlier.  Life is too short to learn from just our own mistakes – we have to learn from others’ mistakes as well.

    In this session, Dipesh will be drawing upon more than a decade of Agile experiences in multiple organizations across nine countries to share stories and challenges of transitioning into an Agile Leader, while also focusing on what we in the Agile community are struggling with most.

    There has been a lot written about techniques for creating great Agile teams.  Dipesh will take these theories a bit further, and look into how Leaders can build great teams, not by using a new method or management style, but rather by understanding their own Agile team dynamics and behaviour.  

    You will learn about the assumptions and challenges surrounding self-organizing Agile teams and how to build a stronger team of Servant Leaders.

    If you are a leader or an aspiring leader of an Agile team, this session will provide clear implications for where to focus your efforts so that you do not worry about the wrong things. You will be inspired by knowing how to establish trust within the teams that is required to embrace uncertainty and ambiguity while confidently making better decisions.

  • Bas Vodde
    Bas Vodde
    Consultant, Speaker, Trainer
    schedule 4 years ago
    Sold Out!
    45 Mins

    This talk is based on story-telling, where Bas will share the creation of LeSS and within that side-track on explaining better how LeSS works.

    LeSS is a lightweight (agile) framework for scaling Scrum to more than one team. It was extracted out of the experiences of Bas Vodde and Craig Larman while Scaling Agile development in many different types of companies, products and industries over the last ten years. There are several case studies available and an upcoming book describing LeSS in detail.

    LeSS consists of the LeSS Principles, the Framework, the Guides and a set of experiments. The LeSS framework is divided into two frameworks: basic LeSS for 2-8 teams and LeSS Huge for 8+ teams. All of these are also available on the website.

    LeSS is different with other scaling frameworks in the sense that it provides a very minimalistic framework that enables empiricism on a large-scale which enables the teams and organization to inspect-adapt their implementation based on their experiences and context. LeSS is based on the idea that providing too much rules, roles, artifacts and asking the organization to tailor it down is a fundamentally flawed approach and instead scaling frameworks should be minimalistic and allowing organizations to fill them in.

  • Jez Humble
    Jez Humble
    Technology Advocate
    Google LLC
    schedule 4 years ago
    Sold Out!
    480 Mins

    Getting software released to users is often a painful, risky, and time-consuming process. The practice of continuous delivery sets out the principles and technical practices that enable rapid, low-risk delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and IT operations, teams can get changes released in a matter of hours—sometimes even minutes—no matter what the size of the product or the complexity of the enterprise environment.

    In this workshop, Jez Humble presents an in-depth guide to the principles and practices behind continuous delivery and the DevOps movement, along with case studies from real companies and ideas to help you adopt continuous delivery and DevOps within your organization. You’ll start by learning the value proposition and the foundations that enable continuous delivery, followed by an introduction to the pattern at the heart of continuous delivery–the deployment pipeline. The training then dives into the key development practices of continuous integration and comprehensive test automation. These lessons cover change management, agile infrastructure management, managing databases, architecture, and the patterns that enable low-risk releases. They conclude by discussing the culture and organizational change patterns of high performing companies. After taking this training, you will understand not just the principles and practices that enable continuous delivery and devops, but also how they are implemented in high performing organizations. With this knowledge you’ll be ready to transform your organization’s software delivery capability to get high quality solutions to market fast, while reducing the risk of the release process.

  • Julian

    Julian - The Gamification of the on-boarding and Engaging People

    45 Mins
    Case Study
    According to that counts over 18 million users per month (15 millions are in USA) one new employee out of 6 quits his new job in the first 3 months. 1/3 of employees quit their job within the first 6 months. Out of this 1/3, 1 in 3 cited insufficient on-boarding services. Nearly 1/4 said that a properly managed on-boarding process would have helped persuade them to stay in their positions. Considering the average recruitment costs (the Head Hunter, the total hours dedicated to the candidates’ screening, the interviews, the tests, the final interview, the stress of the Team waiting for the new colleague or boss…), why are companies not paying attention to this very crucial moment in people’s careers? It is like going to a travel agency, book the trip of your dreams, the travel agent has promised you to send you to the most beautiful resort ever and when you land, the guy forgot to tell you it is rain season…
    Maybe we can offer a better plan after all.
    Learn how Etix Everywhere solved the issue of a high pace recruiting, correct on boarding and quick integration and engagement of new comers.