Joe Yoder is a founder and principal of Teams that Innovate and The Refactory, Inc., he runs a consulting and mentoring business.
Joseph is an agilist, computer scientist, object oriented technologist, international speaker, pattern author, and longstanding member of The Hillside Group. He currently serves as the President of the Hillside Board, a group dedicated to improving the quality of software development. He is co-author of the Big Ball of Mud pattern, which illuminates many fallacies in the approach to software architecture. Joseph has chaired the Pattern Languages of Programming Conference (PLoP), helped organize SugarLoaf PLoP, Asian PLoP, ChiliPLoP, and PLoPs for many years, as well as given keynotes and presented tutorials and talks at conferences such as OOPSLA, Agile PT, SATURN, CBSoft, and ECOOP. He has also contributed with tracks at QCon San Francisco, assisted with Asian PLoP to organize their first few conferences, organized a web 2.0 workshop at the TOOLS conference in Europe, and presented papers and tutorials at various conferences around the world.
Joe has worked on various projects during his career that ranges from stand-alone to client-server applications, web applications, web services, cloud computing, service oriented architecture, multi-tiered, various databases, object-oriented, frameworks, human-computer interaction, collaborative environments, and domain-specific visual-languages. In addition these projects have spanned many domains, including Medical Information Systems, Financial Systems, Ordering, Import, Invoicing, Print, Shipping, Warehouse Management, Manufacturing, Medical Examination, Statistical Analysis, Scenario Planning, Client-Server Relational Database System for keeping track of shared specifications in a multi-user environment, Telecommunications Billing System, and Business & Medical Decision Making.
Joe teaches Agile Methods, Design Patterns, Object Design, Refactoring, and Testing in industrial settings and mentors many developers on these concepts. Other projects involve working in both the Java and .NET environments deploying Domain-Specific Languages for clients. Joe thinks software is still too hard to change. He wants do something about this and believes that using good patterns and putting the ability to change software into the hands of the people with the knowledge to change it seems to be one promising avenue toward solving this problem. Joe currently resides in Urbana, Illinois.
As organizations transition to agile processes, Quality Assurance (QA) activities and roles need to evolve. Traditionally, QA activities occur late in the process, after the software is fully functioning. As a consequence, QA departments have been “quality gatekeepers” rather than actively engaged in the ongoing development and delivery of quality software. Agile teams incrementally deliver working software. Incremental delivery provides an opportunity to engage in QA activities much earlier, ensuring that both functionality and important system qualities are addressed just in time, rather than too late. Agile teams embrace a “whole team” approach. Even though special skills may be required to perform certain development and Quality Assurance tasks, everyone on the team is focused on the delivery of quality software.
This workshop will provide Eclipse Java projects as source examples for the Refactoring exercises. Some exercises will be done in pairs so bring your Laptop with your favorite IDE or Eclipse.
Refactoring is the process of changing software without altering its external behavior. Refactoring software to make it maintainable and extendable has become a recognized best practice and has been incorporated into many Agile practices such as Scrum, TDD and XP. Refactoring improves the structure of the design of a system to allow for later extensions or to make maintenance easier. This course teaches attendees how to recognize that code needs to be refactored (code smells) and the steps for common refactorings including the refactorings provided by tools such as those in Eclipse and the Refactoring Browser. It is important to refactor software in a disciplined way to minimize disruptions and to allow the system to safely evolve. Java examples will be shown that illustrate how and when to refactor,