Conference:March 6-8, 2017
Workshops:March 9-10, 2017
Workshop: Working Effectively with Legacy Code
Location:
- Henry Moore, 4th flr.
When:
- Friday
Prerequisites
TBD
Test Driven Development and Refactoring are powerful tools. With them you can add new codeto systems and make existing code more maintainable. However, refactoring code withouthaving tests in place can be hazardous. This class presents a collection of dependencybreaking and test writing techniques that can be used to get existing code safely under test forrefactoring. These techniques can be used in conjunction with Test Driven Development tobreathe new life into large existing code bases. This class is structured as a set of lectures,discussions, and handson exercises.
Objectives
By the end of this course, you will:
- Understand what legacy code is
- Understand how to break dependencies in legacy code
- Learn a variety of techniques for breaking external dependencies
- Learn a variety of techniques for breaking internal dependencies
- Understand when to employ each of the techniques
- Learn a variety of strategies for code refactoring
- Learn how to identify change points
- Learn how to find an inflection point
- Understand the concept of test coverage for inflection points
- Understand how to write effective tests for legacy codeOutline
Here is a brief course outline for the course:
- Introduction / Testing as a Programmer’s tool
- Seam identification
- Breaking Dependencies – Sensing and Separation
- Breaking Hidden and Manifest Dependencies
- Characterization Testing
- Refactoring Toward Understandability
- Strategies for Getting Large Methods under Test
- Dealing with Deeply Nested Conditionals
- Planning LargeScale Refactoring and Technical Debt Reduction
Other Workshops:
Tracks
-
Architecting for Failure
Building fault tolerate systems that are truly resilient
-
Architectures You've Always Wondered about
QCon classic track. You know the names. Hear their lessons and challenges.
-
Modern Distributed Architectures
Migrating, deploying, and realizing modern cloud architecture.
-
Fast & Furious: Ad Serving, Finance, & Performance
Learn some of the tips and technicals of high speed, low latency systems in Ad Serving and Finance
-
Java - Performance, Patterns and Predictions
Skills embracing the evolution of Java (multi-core, cloud, modularity) and reenforcing core platform fundamentals (performance, concurrency, ubiquity).
-
Performance Mythbusting
Performance myths that need busting and the tools & techniques to get there
-
Dark Code: The Legacy/Tech Debt Dilemma
How do you evolve your code and modernize your architecture when you're stuck with part legacy code and technical debt? Lessons from the trenches.
-
Modern Learning Systems
Real world use of the latest machine learning technologies in production environments
-
Practical Cryptography & Blockchains: Beyond the Hype
Looking past the hype of blockchain technologies, alternate title: Weaselfree Cryptography & Blockchain
-
Applied JavaScript - Atomic Applications and APIs
Angular, React, Electron, Node: The hottest trends and techniques in the JavaScript space
-
Containers - State Of The Art
What is the state of the art, what's next, & other interesting questions on containers.
-
Observability Done Right: Automating Insight & Software Telemetry
Tools, practices, and methods to know what your system is doing
-
Data Engineering : Where the Rubber meets the Road in Data Science
Science does not imply engineering. Engineering tools and techniques for Data Scientists
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS ideas
-
Workhorse Languages, Not Called Java
Workhorse languages not called Java.
-
Security: Lessons Learned From Being Pwned
How Attackers Think. Penetration testing techniques, exploits, toolsets, and skills of software hackers
-
Engineering Culture @{{cool_company}}
Culture, Organization Structure, Modern Agile War Stories
-
Softskills: Essential Skills for Developers
Skills for the developer in the workplace