Legacy Code Retreat - Uncovering Better Ways of Dealing With Legacy Software By Doing it and Helping Others Do It!
In his book “Understanding the Four Rules of Simple Design”, Corey Haines lays out the basics for getting people together for a day and practice coding better. Unhappily, many of us have to deal with legacy code in our daily lives, and find ourselves frustrated when we try to make legacy code better. J. B. Rainsberger has started a variation on on Corey Haines’ code retreats, making them more practical for legacy code practitioners. I’d like to extend that pattern and have retreat for those of us who work legacy code in Java often.
We will learn and practice the classic Michael Feathers dance of
- Identify change points
- Find an inflection point
- Cover the inflection point (break external dependencies, break internal dependencies, write tests)
- Make changes
- Refactor the covered code.
By the end of the day, in addition to being tired and completely ready to put away our laptops forever, we will have gained valuable insights and practical experience with a topic no one likes to talk about - getting better working with legacy code!
Outline/Structure of the Workshop
Legacy Java code will be made available to the group at the beginning of the day. A brief review of how to go about Feathers' type refactoring through various types of automated tests (unit, integration, acceptance, etc) will be discussed before we begin.
The general structure works off of an hourly cadence. The begging of the day starts with some introductory material which speaks to the skills we will use during the day related to refactoring, etc. Then, in the beginning of each hour, participants will be asked to pair with a partner for 45 minutes. They will be asked to improve the legacy code as the day progresses. At the end of every 45 minute pairing, about 15 minutes will be spent facilitating the participants to show what they learned and how they can improve the code base. People will be asked to switch pairs to start again. Before work on the next pairings takes place, participants will be asked to commit one of the prior round's work to the codebase. We repeat for as many rounds as we can get in for the day.
Learning Outcome
I expect that participants will come away with new skills that they glean from one another, such as different ways of organizing tests and refactoring code.
Participants will probably finally understand the perspective that just rewriting the code may not be the appropriate thing to do when we don't really understand what the code does in the first place.
Everyone will have a chance to hone their skills and have valuable lessons, tricks, and techniques to take back to their day jobs.
Target Audience
Java developers who want to get better at writing better code, even within the confines of a legacy codebase.
Links
Howard is a software consultant and educator who specializes in Agile process and practices. He has a varied background spanning well over forty years in the industry, with extensive experience in commercial software, aerospace, and financial services. He has played many of the roles in the development arena, such as developer, analyst, team lead, architect, and project manager. He has applied the principles of Agile, Lean, and XP development in teams both large and small, in various environments. Howard has educated dozens of teams, and is a long-standing member of the ACM and IEEE.
Recent speaking engagements:
- DevWeek2016, London UK, “TDD for the Newb Who Wants to Become an Apprentice”
- DevWeek2016, London UK, “The Manifesto for Software Craftsmanship – Because PostIts and Legos Don’t Create Better Software!”
- DevWeek2016, London UK, “The Pragmatic Management of Technical Debt”
- Agile India 2016, Bangalore India, “How Much Unit Testing is Enough? Ask a Mutant Army to Find Out!”
- Software Architect 2015, London UK, “Why Johnny Can't Unit Test His Legacy Code - And What You Can Do About It”
- Software Architect 2015, London UK, “Why Johnny Still Can't Unit Test His Legacy Code - And What You Can Do About It"
- DevWeek 2015, London UK, “Getting Past the 50+70=120 Calculator in Cucumber”
- DevWeek 2015, London UK, “Continuous Delivery - The Whys, Whats, and Hows"
- Software Design & Development 2014, London UK, “Lean Thinking and What It Means to the Agile Mindset”
- Software Design & Development 2014, London UK, “Agility at Scale - Platform Versus Product Concerns”
- Software Design & Development 2014, London UK, "Keep Agile Development From Becoming Fragile Development – Recognizing and Dealing With Technical Debt”
- Agile India 2014, Bangalore, India, "Pivoting Your Organization to Become Agile Testers"
- Agile Development Conference East 2013, Boston USA, "Pivoting Your Testers to Become Agile"
- Software Architect 2013, London, UK, "Acceptance Test and Behaviour Driven Development – The Secret Sauce to Modern Requirements"
- Software Architect 2013, London, UK, "Agility at Scale - Platform Versus Product Concerns"
- Software Architect 2013, London, UK, "Keep Agile Development From Becoming Fragile Development"
- Software Test Professionals 2013, San Diego USA, "Pivoting Your Organization to Become Agile Testers"
- Software Test Professionals 2013, San Diego USA, "Trust, But Verify – How Agile Testing Practices Will Affect How Your Organization Tests"
- Agile India 2013, Bangalore, India, "Take Two Beads and Call Me in the Morning - Managing Software Projects Better"
- AgileDC 2012, Washington DC, USA, "Agile, Lean, or Just Mean - What Makes Sense When"
- Software Architect 2012, London, UK, "Contracts in the Age of Agility"
- Software Architect 2012, London, UK, "Agile, Lean, or Just Mean - What Makes Sense When"
- IEEE Information Technology Professional Conference (TCF Pro IT) 2012, Ewing USA, "Take Two Beads and Call Me In the Morning - Managing Software Development Projects Better"
- Agile India 2012, Bangalore, India, "Portfolio Management - Figuring Out How to Say When and Why"
- Software Architect 2012, London, UK, "Agile Database Design - 21st Century Solutions to an Old Problem"
- Software Architect 2012, London, UK, "The Agile Architect - Oxymoron or Saviour"
- Agile Aliance 2011, Salt Lake City, USA, "Reverting to Form – How to Keep Make Sure That Agile Sticks"
- Mile High Agile 2011, Denver, USA, "Reverting to Form – How to Keep Make Sure That Agile Sticks"
- IEEE Information Technology Professional Conference (TCF Pro IT) 2011, Ewing USA, "The Three Faces of Testing – DID I Do the Right Thing and DID I Do the Thing Right"
- IEEE Information Technology Professional Conference (TCF Pro IT) 2010, Ewing USA, "The Magical Mystery Hour, or the Myth of a Matrixed Development Staff – Step Right This Way!"
- Agile Aliance 2009, Chicago, USA, "Continuous Integration - Your New Best Friend"
- Triangle Information System Quality Association 2009, Raleigh-Durham, USA, "Continuous Integration - Your New Best Friend"
Also, see http://www.slideshare.net/hdeiner/ for various artifacts of prior talks and workshops.
schedule Submitted 4 years ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Fabiola Eyholzer - Agile HR – Fact or Fiction
45 Mins
Keynote
Advanced
There is growing interest in learning more about Agile HR and its impact on individuals, teams and organizations.
It is important to separate fact from fiction: What are the real threats and opportunities of bringing Lean | Agile values, principles, and practices to HR? What can we expect in the future? Through anecdotal evidence and case studies, the session will explore the potential of Agile HR as well as provide guidance on how to approach the transformation.
Issues covered in the presentation include: information on how to embrace the new talent contract, create inspiring, engaging, and fun places of work, shift to an iterative performance flow, take the issue of money off the table, support growth within an Agile enterprise.
-
keyboard_arrow_down
Fennande van der Meulen / Maartje Wolff - The Power of Purpose - workshop on How purpose drives employee happiness and company results
Fennande van der MeulenCo-FounderHappy OfficeMaartje WolffCo-FounderHappy Officeschedule 4 years ago
90 Mins
Workshop
Beginner
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.
-
keyboard_arrow_down
Woody Zuill - Mob Programming: A Whole Team Approach
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.
-
keyboard_arrow_down
Nayan Hajratwala - Refactoring Legacy Code Guided by Simple Design
45 Mins
Demonstration
Intermediate
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).
-
keyboard_arrow_down
Rajith Raveendranath - From Monolith to Micro Service - A Kick Start
45 Mins
Demonstration
Intermediate
[Update based on the panel review]
Inspired by Martin Fowler's introduction to micro services (https://www.youtube.com/watch?v=wgdBVIX9ifA);
The demo will introduce the "ABC"s of the transition to micro services. We will refer to the Hadoop Distributed File System open source and demonstrate to (re)design the NameNode module as a micro service. This will introduce the three primary challenges and their possible solutions as in;
1. Componentize using Services instead of the conventional componentization using the design
2. Data segregation using an event driven framework to separate the centralized data across services
3. Accessing a micro service as a web service instead of an orchestrated access; the delegate & facade patterns will be demoed to loosely couple the interfaces
The demo will conclude with a listing of the next steps in transition, which need to be considered after the primary challenges are addressed.
-
keyboard_arrow_down
Chris Edwards - The Agile Architect: Turning Followers into Leaders
45 Mins
Talk
Intermediate
"The higher you go in an organization, the more your suggestions become interpreted as orders." - Marshall Goldsmith
An Architect garners a high level of authority by being an expert. People will follow their lead. But what if the Architect is wrong? They will follow right off a cliff.
How do we get people to think like the Architect? Use the principles of Intent-Based Leadership to decouple the success of your project from the personality of the architect. By creating clarity around architectural goals and by engaging people in problem solving rather than defining rules and standards we can divest control and create an organization of leaders.
-
keyboard_arrow_down
Howard Deiner - How We Get Agile Transformations Wrong By Trying to Do It All So Right
20 Mins
Talk
Intermediate
Sorry to say it guys, but Agile has gone limp over the last few years. As we get more and more coaches into the mix, both external as well as internal, organizations somehow have forgotten that it’s software that we’re trying to produce. Not great stand-ups.
Technical practices matter. In fact, if we could dispense with ALL process and still create the valuable quality software that is needed, we should do that. From a Lean perspective, process adds no customer facing value. But getting rid of all process is crazy talk. Even Fred George, who promoted “Programmer Anarchy” several years ago never got away from all process. In reality, his movement was premised on driving business decision making directly into technical decision making, and completely empowering teams to “be” the company. He premised the concept of “Programmer Anarchy” on using the best and brightest developers out there, and trusting that if they could do something as difficult as create great code that they could do the business decision making as well.
But perhaps we don’t have the absolute best talent out there. Perhaps it’s hard to lure people away from Google and Facebook because of the money and the chance to get great work environment and unbelievable work challenges (change the world, anyone?) Does that mean that we have to go back into the Fredrick Winslow Taylor world view of “The One Best Way”? With that way becoming making a choice between Scrum, SAFe, Lean/Kanban, and other development processes?
I’d like to convince you that what’s going to work for your organization and your employees is something in the middle. I, of course, lean into the “better technical practices will yield better outcomes” frame of mind. You may as well. But when Garrison Keillor said, on “A Prairie Home Companion” (a long running radio show on National Public Radio in the States), “Well, that's the news from Lake Wobegon, where all the women are strong, all the men are good looking, and all the children are above average”, that was satire! And the same is true of your organization. It can't logically be true that all organizations’ developers are all above average. But we can hold people to an acceptable level of technical practices that will yield in writing better code than merely having a process that talks about writing better code.
This session will speak to the specifics of the whats and whys.
-
keyboard_arrow_down
Howard Deiner - Taking a Fresh Look at Continuous Delivery - What are We Really Trying to Achieve, and How Do We Do That?
20 Mins
Talk
Beginner
Organizations are embracing Continuous Delivery (CD) for many reasons nowadays, including:
- better throughput and stability of systems built and managed
- better effectiveness of the organization, resulting in better financial outcomes for the organization
- better job satisfaction for members of the organization
- a desire to play with shiny new things and engage in resume driven development
When we take a deeper look at what the goals are, and talk about how we accomplish those goals, many times the discussion starts to devolve into a discussion of tools and tool capability. And many times, the deciding factors of one tool versus another tool speak to the capabilities of the tools to work in the existing organizational structure.
But this approach is flawed. If we view CD as an organization change to achieve the goals stated before, then we should expect that the organizational structure, as well as the organization’s guiding principles will have to change as well.
This talk will center around the premise that the changes that are needed to accomplish CD, and subsequently achieve the benefits associated with that involve the use of new tools (potentially bright and shiny, as well as resume enhancing). But the tools are merely necessary but not sufficient in attaining the organizational’s CD goals. True teamwork both from both a technical team perspective as well as inter-team collaboration as required to truly get to full positive outcomes for DevOps based CD. We’ll speak to some tools, but mostly talk about good teams and the top quality software that they need to produce, and how they need to go about that.
Public Feedback