Joshua Kerievsky
Joshua Kerievsky

Code that is difficult to understand, hard to modify and challenging to extend is hazardous to developers, users and organizations. Refactoring, or improving the design of existing code, is one of our greatest defenses against such code. Yet many programmers lack formal training in refactoring. Furthermore, management tends to lack knowledge about the value of refactoring. This one-day workshop is designed to address these needs. You’ll learn the art of refactoring safely, when, why and how to refactor hazardous code, strategies and tactics for refactoring, as well as refactoring to patterns. You’ll also learn how refactoring impacts business concerns and vice-versa. Come to this class prepared to code with a pair and a mob as we refactor example code and help you learn the art of refactoring.

 
 

Outline/structure of the Session

Full Day Hands-On Workshop

Learning Outcome

  • Learn to refactor safely
  • Improve designs via refactoring
  • Practice using refactoring tools effectively
  • Spot typical coding hazards & transform them into safer designs
  • Understand when refactoring to, towards or away from a pattern makes sense
  • Experience refactoring hazardous code & refactoring to patterns
  • Study refactoring strategies and tactics

Target Audience

Programmers with experience in Java, C# or C++. Code exercises will be in Java. Bring Eclipse or IntelliJ IDE.

schedule Submitted 2 months ago

Comments Subscribe to Comments

comment Comment on this Proposal
  • Sundaram N
    By Sundaram N  ~  1 week ago
    reply Reply

    I'm a .net developer. Are code exercises in C# too?

    • Naresh Jain
      By Naresh Jain  ~  1 week ago
      reply Reply

      Yes, Josh has all the labs in C# as well.

  • Laxmikant Purohit
    By Laxmikant Purohit  ~  2 months ago
    reply Reply

    Wish you could also include ruby as one of the languages for the workshop.


  • Liked Joshua Kerievsky
    keyboard_arrow_down

    Modern Agile Workshop

    Joshua Kerievsky
    Joshua Kerievsky
    schedule 1 month ago
    Sold Out!
    480 mins
    Workshop
    Intermediate

    Much has changed since the publishing of the Agile Manifesto in 2001.

    Pioneers and practitioners of lean and agile methods have examined weaknesses and friction points, experimented with simpler approaches, and produced agile processes that are safer, simpler and far more capital efficient. The result is modern agile. It’s values-driven, non-prescriptive and an easier starting point than antiquated agile processes. Modern agile amplifies the values and practices of organizations that have discovered better ways to get awesome results. Are you still cramming low-quality work in the end of each sprint, struggling with growing technical debt, arguing about “definition of done” or frustrated that “management/product never gives us time to do it right?”

    In this 1-day workshop, you will learn to deliver awesome results by

    • experiencing how the four principles of modern agile guide decisions,
    • increasing safety in your culture, code and products,
    • identifying friction points and simplify your process,
    • engage the entire team to continually uncover better ways of working.
  • David Laribee
    David Laribee
    schedule 2 months ago
    Sold Out!
    480 mins
    Workshop
    Intermediate

    In the early 2000s, eXtreme Programming (XP) introduced agility to software engineers. Contemporary cultural and technical innovations - container technology, distributed version control systems, the proliferation of free and open source software, and the DevOps movement - have significantly expanded our possibilities.

    In this one day, hands-on workshop, we’ll build a modern continuous deployment pipeline based on Git, Jenkins, and Docker. Starting with continuous integration, we’ll practice Git workflows enabling parallel development with pull requests and explicit dependency management through the use of forked repositories. We’ll then extend the ecosystem to support ad-hoc testing environments, multi-versioned deployments, and build promotion. We’ll survey tools and techniques for production deployments touching on Docker Swarm, Google Kubernetes, ChatOps, and emerging tools used in serverless architectures such as Amazon Lambda.

    While technologies change, values and principles continue to guide our choices. We’ll end with reflection and a guided discussion on how core XP values - simplicity, feedback, communication, courage - can serve as a compass for environmental and workflow decisions that impact our customers and teammates.

  • David Laribee
    David Laribee
    schedule 2 months ago
    Sold Out!
    960 mins
    Workshop
    Intermediate

    This workshop readies developers for success with Test-Driven Development. Together we’ll take small steps toward working a full, double loop TDD workflow. Over the course of two days attendees gain comfort with the TDD workflow, integrating it with other important practices such as pair programming, source control, emergent design, domain-driven design and lightweight modeling.

    It’s two solid days of intense work — over 60% hands-on, iterative exercises. The rest of the time is a mix of fast, dense lightning talks, case study reviews, chalk-talks and facilitated group discussions.

  • David Laribee
    David Laribee
    schedule 3 months ago
    Sold Out!
    45 mins
    Talk
    Beginner

    As an independent agile coach, I encounter a lot of developers frustrated by their home team culture. The same questions come up time and again: "how do I get my team to adopt XYZ?" This question assumes a solution instead of framing a problem and involving a group in conceiving and developing an answer. With a little conscious work, we can hone our skills as influencers and stop operating from unconscious, unexamined motivations. When we reframe effecting change in this way, our efficacy improves dramatically.

    In this talk, I'll share a mindset for improving effecting change through ethical influence and group involvement. I'll end by sharing a toolbox of simple change tools you can apply to your teams the very next day.

  • George Dinwiddie
    George Dinwiddie
    schedule 3 months ago
    Sold Out!
    90 mins
    Workshop
    Intermediate

    Many people agree that one important outcome of Behavior Driven Development is a set of regression tests to demonstrate the desired behavior and ensure that it is maintained over time. Then they often struggle to do so in a manner that remains maintainable as the system and the test code grows larger. Sometimes they even abandon their tests and start over, repeatedly.

    In this session we'll examine the evolutionary history of an application and its test suite. We'll stop at various stages in its life to consider the choices we might make to address growing complexity.

    We'll work using Cucumber-JVM and Java in order to be accessible to a large audience. You can apply these concepts in other languages and test frameworks. Rather than depending on having enough laptops set up, we'll use mob programming to enable everyone's participation.

    If you'd prefer exploring on your own machine, bring your laptop loaded and ready to go.  Clone the code repository from https://github.com/gdinwiddie/EquineHoroscope to get the code and its history.  Unzip http://idiacomputing.com/pub/EquineHoroscopeJars.zip in the same directory for the dependencies.  (Download sample at https://leanpub.com/EvolutionaryAnatomy/ for even more detailed instructions.) I'll be using Eclipse, and the instructions are tuned for that, but you can use any Java IDE.

    Bonus: Participants will receive a coupon for a free e-book on the material.

  • Alexandra West
    Alexandra West
    schedule 3 months ago
    Sold Out!
    45 mins
    Workshop
    Beginner

    Do strong personalities dominate your development team? Are code reviews painful? Are you blindly following orders from a backlog, or are you learning from observation?

    Visual Thinking Strategies, or VTS, is a cross-disciplinary technique applicable to anyone working in a collaborative setting where observation is key. VTS develops critical thinking skills by viewing and discussing works of art in a group. It is backed by over 30 years of field research showing its effectiveness and accessibility. By allowing individuals to talk about art - without needing a background in the field - VTS advances skills you can use to create more relevant products and stronger teams: Observing, Brainstorming, Speculating, Reasoning with Evidence, Cultivating a Point of View, and Revision & Elaboration.

    During this interactive exercise, we’ll discuss selected works of art as a group. There are no right answers or group consensus being sought. We’re creating an environment and process for looking, thinking, reasoning and revision - skills that are mission-critical to anyone working in a software design or development role. After our group discussion, participants will learn the basics of image selection and facilitating VTS sessions within their own organizations. In addition to the above, we'll cover how VTS can help you and your team with the following: Comfort with Ambiguity, Openness to the Unfamiliar, Civil Debate, and Willingness to Participate in Group Thinking.

  • David Laribee
    David Laribee
    schedule 3 months ago
    Sold Out!
    45 mins
    Talk
    Beginner

    Pyramids? Quadrants? Cupcakes?! There are a wide array of models that describe approaches to test automation strategy and their possible positive (or negative) outcomes.

    In this talk, we’ll survey the landscape of testing models: models that range from technical to product to cultural mindsets, including best practices and anti-patterns. I’ll add detail and nuance to each of these models in the form of professional experience, real world example, and case study. 

    With a new lens, focusing on testing strategy as an act of curation, I'll share a new approach to evolving a testing strategy appropriate for your product development team's specific context.

  • Joshua Kerievsky
    Joshua Kerievsky
    schedule 3 months ago
    Sold Out!
    45 mins
    Keynote
    Executive

    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.

  • Liked Woody Zuill
    keyboard_arrow_down

    Mob Programming: A Whole Team Approach

    Woody Zuill
    Woody Zuill
    schedule 4 months ago
    Sold Out!
    45 mins
    Talk
    Intermediate

    Mob Programming is a development practice where the whole team works on the same thing, at the same time, in the same space, and on the same computer. It is a whole-team approach to doing all the work the team does including designing, coding, testing, and working with the customers, users and other stakeholders. This is an evolutionary step beyond pair programming and accentuates face-to-face communication, team alignment, collaboration, and self-organizing team concepts of the Agile approach to software development.

    Mob Programming can be a highly effective approach to software development. There are numerous teams doing Mob Programming all over the world, including distributed teams, and there has been a great deal of positive reports of success. Please join me as I share how the concept got started, the benefits, techniques we use, and some of the problems we've faced.