Refactoring Legacy Code guided by Simple Design
Are you frustrated by the many trivial examples that show up when you google "refactor legacy code"? How do you translate these examples to your real-world code base? Sometimes it's just easier to give up on the refactoring and increased test coverage, reserving these techniques for the ever elusive greenfield project. To help you with this dilemma, Nayan will walk through a real legacy Java code base, and perform some safe refactorings required to bring the code under test. All of this will be done under the guidance of the Four Rules of Simple Design (Pass the tests, DRY, Reveal intent, Minimize moving parts).
Outline/Structure of the Demonstration
I have a prepared local git repository of the codebase and the refactorings. I will step through the various commits to show how the code is evolving as the refactorings are made. This approach keeps people engaged in the interesting bits, while fast forwarding through the slow bits. I will be constantly engaging the audience in discussion about techniques and concepts.
Learning Outcome
- Understanding of the 4 rules of Simple Design
- Understanding the prerequisites of refactoring any legacy code
- Understanding of Characterization Tests
- Basic Understanding of Mocking
- Some handy IDE shortcuts
Target Audience
developers interested in learning how to deal with legacy code bases
Links
I've given this talk at Agile DC 2015 and Agile & Beyond 2016.
schedule Submitted 7 years ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Jade Stephen / Samantha Lightowler - From dysfunction to cross-function in 8,593 easy steps: Team building at the CBC
Jade StephenAgile Team LeadCBC Radio CanadaSamantha LightowlerProduct OwnerCBCschedule 6 years ago
60 Mins
Case Study
Beginner
When it comes to scaling Agile, there is no one size fits all solution. Frameworks like Scrum and XP prescribe roles, events, artifacts, and rules that make it very clear how interaction should take place within a team. When we begin to add more teams to the mix, communication between teams becomes more complex. This complexity threatens to reduce our transparency and damage our culture. How can we share information, build our culture and work together, all while keeping with Agile values?
During this session Sam Lightowler and Jade Stephen will take an in depth look at the successes and failures of CBC Digital Operations when it comes to cross-team collaboration and information sharing. We will discuss what meetings and techniques have helped us build a one-team-one-product mindset, a sense of community, and a culture of Collaboration, Learning and Improvement. We will also discuss what we have tried in the past and how learning from those experiments helped us evolve into the agile-friendly and unified team that we are today.
-
keyboard_arrow_down
thomasjeffrey - Looking at Value through the Lens Of Cost Of Delay
90 Mins
Talk
Beginner
Approached from an agile perspective, delivering value looks very different than when thinking from a traditional mindset. During this interactive workshop, participants will gain hands on experience on applying critical concepts to estimating value in a way that also drives adoption of an agile mindset. This session is based on material that I have used on numerous occasions to help enterprise business leaders reshape the way they think about value. Participants will use the following practices when estimating the value of future work:
- Deliberate estimation of lead time ( your most precious resource) and delay time (your most toxic obstacle).
- How to move forward with imperfect information through the use of explicit assumptions required to approximate value.
- Using Cost Of Delay to put a price tag on time, creating an economic incentive to increase agility at the business level
I will start the session by providing an overview of the power of focusing on lead time and delay time over efficiency and throughput. I'll show participants how to use concepts such as explicit commitment points and delivery points to measure business agility, and discuss sources of delay, and means to eliminate sources of delay.
I will then discuss ways to quickly assess the value type and urgency profile of work, providing a means to quickly catalog the type of assumptions that require research and validation in order to conduct high quality conversation around the estimation of value.
Session attendees will be given the chance to estimate the value of work through exploration of a business value assumption model. Ill go through some of the key factors to consider when estimating value, and how to quickly compare value across epics and features using the assumption model approach.
The psychological factors that prevent people from estimating value will be discussed and participants will be coached through effective methods to overcome these factors including relative ranking, accuracy over precision, and explicit tracking and sharing of key assumptions.
After this I will give an overview of how to frame value in terms of Cost Of Delay. Ill present the audience with a way to put a price on the countless queues our work tends to go through. I will then guide attendees to to quantify their value assumption model according to the amount of value lost over time. Participants will use techniques to estimate units of value according to the opportunity cost incurred when work is blocked or left waiting on a queue. I will also show the relationship between different urgency profiles and the severity of Cost Of Delay.
For the final part of the session, participants will rank a backlog of their own work through CD3. Cost of Delay Divided by Duration takes COD and divides it delivery lead time to create a ranking mechanism that focuses teams on delivering the highest value in a given time period of time. I'll walk through how CD3 provides insight necessary to minimizing the impact of COD for a set of options, encouraging the breakdown of work into smaller batches, and prioritizing work essential to eliminating delay.
This session will highly interactive, and give participants practical, hands on tools that can help the business think in terms of getting to value with agility, acting as a gateway practice for deeper adoption in the future.
-
keyboard_arrow_down
Kalpesh Shah - Standup Poker: How One Hack Revolutionized Our Daily Stand Up and Teams Mindset !!!
60 Mins
Demonstration
Beginner
One the most significant ceremony of any Agile Team is Daily Standup where the team members get together and plan for their day. But quite often the daily standup turns into a zombie status update meeting where team members come together to blurt out their updates and walk away to their desk without ever maximizing the benefit of that meet up.
In this session I will share a case study of how we created a simple experiment that turned into Standup Poker and revolutionized our Daily Standup. This technique helped us uncover true insights of teams progress and got the team talking about strategic planning and plan to remove any impediments as a "team" on daily basis to accomplish their sprint goal and commitments.
We learnt that when team members started using this technique, hidden impediments and dependencies started to emerge and team members organically started to re-plan and prioritize their work to accomplish the Sprint Goal. Product Owner also found great value in this technique as this helped them see the teams true progress and engage with the team to re-prioritize user stories and even take a story out of the sprint if required. Scrum Masters started to observe a trend in the confidence level over the span of the sprint and brought that information to Sprint Retrospective to discuss and brainstorm ways to improve and keep the confidence levels high throughout the sprint. The discussions and observations due to Standup poker resulted in teams committing better and more confidently during Sprint Planning and got into the rhythm of always accomplishing their sprint goal, but more importantly they started improving everyday and got into "continuous improvement" mode.
The content, exercise and message of this session highlight the agile principles of individuals and interactions over process and tools and fostering the mindset of continuous improvement.
In this session we will share examples, stories and experiences from trying the Standup Poker and how this simple technique converted a bunch of individuals into a TEAM !!!
-
keyboard_arrow_down
Paul J. Heidema / Mahima Kumar / Zack Muqtadir - Recruitment & Job Seeking in This New Agile World
60 Mins
Talk
Beginner
In today's digital landscape, the quest to find talent is moving at a faster rate in this new agile movement. Which creates an interesting playing field for stakeholders such as technical recruiters, scrum masters, agile coaches, software DevOps and other cross-functional team members. Incumbents face critical decisions when it comes to addressing recruitment, the process, the pitfalls and end result.
Do you struggle to find a job in the agile world? Are you having a hard time recruiting people for your agile role? Are you confused on this new agile movement and how it affects your job seeking or recruitment efforts? Is recruitment ready for the agile movement? Are agile cross functional folks ready for recruitment and its challenges?
We will take you through our experiences to help make sense of the agile world and how it affects you. Through our experience we will:
- Discuss our learning of working with organizations looking to hire good people
- Share insights into how recruiting is changing with the agile movement
- Present our experience of job seeking for an agile role
This session is based on plenty of experience of finding agile roles and helping others find agile roles. Paul Heidema is an experienced agile coach and transformation guide that has helped small to large organizations shift towards agile. Mahima Kumar is an experienced recruiter that specializes in finding scrum masters and agile coaches. Zack Muqtadir is an experienced startup leader that recently jumped into the agile world.
-
keyboard_arrow_down
Rehana Rajwani / Gillian Lee - The 5 Obsessions of an Extraordinary Product Owner
60 Mins
Workshop
Intermediate
What are the 5 Obsessions of an Extraordinary Product Owner?
You will hear learnings generated from coaching 80+ Product Owners at a professional services organization where Product Owners are recruited from the client to work with Agile delivery teams.
What are the common characteristics of good Product Owners; what did we keep tripping up on; and what did we discover that wasn’t in any book?
You will learn why some product owner are better than others.
You will also have the opportunity to perform a self-assessment to better understand your maturity as a Product Owners and what dimensions you might improve on.
-
keyboard_arrow_down
Jesus Mendez - IT has embraced agility ... what about the rest of the business?
60 Mins
Case Study
Intermediate
3.5 years ago Seedbox Technologies decided to embrace agile methodologies as its way to develop web based products, get them out faster, survive and thrive competition.
It's all started in a traditional fashion: external consultants were hired to teach employees the agile mindset and how to use agile methodologies like Scrum and Kanban when developing web based products. Project Managers got trained and became Product Owners, experienced Scrum Masters were hired to get development teams to their highest level of performance as fast as they could, developers got trained and developed experience around their team development processes, engineering managers supported agility across the company, and stakeholders directly involved in product development got invited to collaborate with software development teams through agile processes, once they got fully implemented.
That's right, Engineering got agile quite right but by doing so:
- What happen with the rest of the organization?
- What about peoples mindset?
- Is them vs Us or vice versa?
- Are they able to collaborate, inspect and adapt like the engineering teams and people related to agile projects do?
- How do we get everyone in the organization to communicate when we don't share the same vocabulary?
- How do we fill the gap and avoid old management treats get in the way of the companies transition to something bigger than just the teams?
- Shall we wait until they realize that we all need to change or shall we help them get there?
- How do we use are know-how to turn this mess into a big opportunity for the organization to grow?
- Do we need help?
Well, if this experience report gets accepted, I will share what I've learned about:
- The challenges & flaws that we faced when transitioning from team based agility to organizational agility
- Some of my reflections as an inside observer
- How to use the lessons learned as a wake up call
- What can be done to help the organization to thrive
Let's walk together through a nurturing experience report that might ignite your sens and get you inspired to give the extra mille!
-
keyboard_arrow_down
Mike Bowler / Ellen Grove - Running with the Mob: Extreme collaboration with Mob Programming
Mike BowlerAgile & Technical Coach/TrainerGargoyle Software Inc.Ellen Groveinterim Managing DirectorAgile Allianceschedule 6 years ago
60 Mins
Workshop
Intermediate
Mob programming is collaboration taken to the extreme, eliciting the best from every member of the team. In this session, you will experience the dynamics of mob programming and learn how to use this technique successfully in your own environments.
After mobbing with over two dozen teams, we've seen definite patterns emerge, that we'll discuss here.
-
keyboard_arrow_down
Mike Bowler / Ellen Grove - Putting the Moose on the Table: Make your retrospectives more effective using LEGO SERIOUS PLAY techniques
Mike BowlerAgile & Technical Coach/TrainerGargoyle Software Inc.Ellen Groveinterim Managing DirectorAgile Allianceschedule 6 years ago
90 Mins
Workshop
Intermediate
In order for teams to step into high performance. it's critical that they develop the practice of having effective conversations about what is and isn't working. Yet in practice, the retrospective meeting is often the least-valued of the agile events: team members feel that their retros are boring, repetitive, and superficial.
In this workshop, we will teach participants how to design and deliver a really useful retrospective using LEGO SERIOUS PLAY. We'll cover the basics of this powerful facilitation technique, and give advice about how to build your own SERIOUS PLAY kit using pieces easily available at the local toy store. We'll also offer practical suggestions for how to design a retro that gets everyone talking (and building), and results in the team agreeing on action.
The participants will leave with a powerful retrospective technique that they can immediately use with their teams. -
keyboard_arrow_down
Paul J. Heidema / Junbin Huang - Build Your Own Value Stream Map with Lean
Paul J. HeidemaCEO and Co-FounderSparkActa Inc.Junbin HuangAgile Coach  schedule 6 years ago
60 Mins
Workshop
Intermediate
Why do so many organizations get stuck in fixing local problems without solving organizational ones? How does a leader or team member see and understand the big picture? Do you struggle with helping your company or clients to understand the entire workflow to be able to make better decisions that can make huge improvements? Would you like a powerful visual tool to express the entire workstream to a large audience so that it is clear what areas need improvement?
If so, then this is the workshop for you.
Each participant will actively participate in learning about, designing your own, and consulting with others to learn the skill of creating effective and meaningful Value Stream Maps. This technique, which comes from Lean manufacturing and is closely connected to Agile, aids leaders and teams in seeing the big picture make meaningful and impactful changes that are both quantitative and qualitative. Let's learn a new skill within 60 minutes.
Paul Heidema and Junbin Huang have worked in the Agile space for more than 10 years (combined) with a focus on helping teams and organizations to support and lead impactful change at the level of the organization and system.
We employ powerful agile techniques to inspect the value stream as we build it. Then we improve and adjust to make it more clear. This will enable short cycles of execution and reflection to quickly improve the quality of the value stream map.
-
keyboard_arrow_down
Nayan Hajratwala - Technical Practices through a Kanban Lens
60 Mins
Talk
Executive
People in organizations that are learning Kanban quickly understand the relationship of WIP, Cycle Time and Throughput. However, when teams start doing things like Pair Programming, they tend to hold fast to the idea that “you’d get more done if you worked separately!”
High performing software teams use a variety of modern technical practices including Test Driven Development, Pair/Mob Programming, Refactoring, Evolutionary Design, and Continuous Integration & Delivery.
How do these practices fit into the Kanban context? Whether through improving collaboratively, evolving experimentally, or implementing feedback loops, learn how these technical practices are supported by Kanban's four Foundational Principles and six Core Practices, which in turn make Kanban more powerful.
-
keyboard_arrow_down
Paul J. Heidema - Vital Behaviours of Successful Scrum Masters and How to Make Them Stick
90 Mins
Workshop
Intermediate
Agile failure is most felt by Scrum Masters. Why do so many fail to properly support their teams? Why do so many fail to inspire meaningful change in the level of leadership? Why do so many fail to guide transformation in their organisations?
In this workshop, we will harness the knowledge and experience of the participants!
Why?
Because everyone can contribute to the learning of the entire group. It will dynamic, full or energy, and joyful - woohoo!Who can benefit the most from the session and the power of harnessing the group?
- Scrum Masters that are struggling to do this role well
- Leaders that are not seeing the results needed for an effective Scrum team through a weak/unskilled Scrum Master
- Agile coaches that are coaching Scrum Masters without meaningful or consistent results
- Project managers trying to make the transition to becoming a successful Scrum Master
This workshop will use concepts and the model from the book "Influencer"
Prepare to work together to co-discover the Scrum Master vital behaviours!
Many people are taking on the mantle of Scrum Masters across agile teams around the world. Unfortunately, many of them have come from more traditional work structures that don't develop effective Scrum Masters. There is a misconception about the purpose of a Scrum Master. Often the Scrum Master becomes the facilitator or the project manager. This has to stop. Effective leaders, agile coaches, and Scrum Masters take advantage of vital behaviours in supporting scrum masters or by building mastery within these behaviours.
During this workshop, participants will go through a series of exercises to identify the purpose of a Scrum Master, how we can measure success, identify potential vital behaviours, learn from others to determine the vital behaviours, and then create a sound influence strategy to enable effective Scrum Masters and the work that they do. This workshop will use concepts and the model from the book "Influencer" (by Joseph Grenny et all) which details the three (3) keys to a successful change initiative and uses the six (6) sources of influence.
Prepare to work together to co-discover the Scrum Master vital behaviours!