Agile Dev West 2016 - Development
Monday, June 6
Configuration Management: Robust Practices for Fast Delivery
Robust configuration management (CM) practices are critical for creating continuous application build, package and deployment to support agile’s integration and testing demands, and for rapidly packaging, releasing, and deploying applications into production. Classic CM—identifying system components, controlling changes, reporting the system’s configuration, and auditing—won’t do the trick anymore. Bob Aiello presents an in-depth tour of a more robust and powerful approach to CM consisting of six key functions: source code management, build engineering, environment management, change...
Great Product Design with User Story Mapping
Built from index cards or sticky notes, a story map is a simple model,which helps the people who make it envision a customer’s experience with their product. Story maps are a core practice within a design process focused on understanding and building empathy with customers and users, and then identifying and testing solutions to improve the customer’s experience with your product or services. Jeff Patton says that design process and story mapping can help you identify completely new product opportunities or improve the existing product experience. Learn how to map your customer’s and user’...
Principles and Practices of Lean Software Development
Lean software development has often been described as “better, faster, cheaper” and focused on “eliminating waste,” but those are misnomers. Going after speed improvement and waste elimination can actually reduce the benefits you might otherwise get from lean. Ken Pugh describes what lean software development really is and why you should be incorporating it into your development efforts—whether you use Scrum, kanban, or SAFe. Ken explains the mindset, principles, and practices of lean. Its foundations are systems thinking, a relentless focus on time, and an understanding that complex...
Essential Test-Driven Development: A Hands-On Workshop
Test-driven development (TDD) is a powerful technique for combining software design, unit testing, and coding in a continuous process to increase reliability and produce better code design. Using the TDD approach, developers write programs in very short development cycles. The developer first writes a failing automated test case that defines a new function or improvement, then produces code until the test passes, and finally refactors the new code to acceptable standards. The developer repeats this process many times until the behavior is complete—and fully tested. Rob Myers demonstrates...
Avoid Critical UX Mistakes to Delight Your Users
Many enterprises are migrating to mobile while new organizations are adopting a mobile-first or mobile-only strategy. Because of the special characteristics of mobile and its user base, usability and the user experience (UX) are of increased importance, especially with SaaS-based business models where users can pay by the month and switch applications in a heartbeat. This is intensified with mobile users who can download another app and try it for free. So you've got about thirty seconds for your users to understand how to use your app and get value. How do you do that? With a UX that...
Writing Developer Tests for Untested Legacy Code: A Hands-On Workshop
Although we would like to reap the rewards of test-driven development (TDD) on all our projects, there is a lot of challenging legacy code to maintain as well. Given the conundrum of needing good test coverage to safely refactor while at the same time needing to refactor the code to make it more testable, how do we proceed? Although not a panacea, the solution to this dilemma lies in simple, pragmatic techniques for teasing apart the big code hairball into more manageable strands. Rob Myers shows how to start by getting critical areas protected with automated tests, which allows further...
Tuesday, June 7
Continuous Delivery: Rapid and Reliable Releases with DevOps
DevOps is an emerging set of principles, methods, and practices that enables the rapid deployment of software systems. DevOps focuses on lowering barriers between development, testing, security, and operations in support of rapid iterative development and deployment. Many organizations struggle when implementing DevOps because of its inherent technical, process, and cultural challenges. Bob Aiello shares DevOps best practices, starting with its role early in the application lifecycle and bridging the gap with testing, security, and operations. Bob explains how to implement DevOps using...
High-Performance Product Development
Large organizations often struggle with the software part of product development when they attempt to create innovative services and products, Obstacles they face are often related to organizational culture and project/program management paradigms that do not take advantage of the unique characteristics of software. In this tutorial session—designed for directors of IT, program/project managers, and software professionals—Jez Humble describes how large—and small—organizations can take a lean approach to developing new products and run large scale product development programs. Jez shows how...
Mob Programming Workshop
All the brilliant people working on the same thing, at the same time, in the same place, and on the same computer. Mob Programming is a cost-effective, collaborative, and fun way to get work done—together. It's a whole-team approach to development, where coding, designing, testing, and working with the “customer”—partner, product owner, user—are all done as a team. In this workshop, led by Mob Programming pioneer Woody Zuill, experience Mob Programming hands-on while learning the mechanics of how...
Wednesday, June 8
Architecture vs. Design in Agile: What’s the Right Answer?
Is architecture the same as preliminary design in agile? It shouldn't be. Do we create architecture up front, then do iterative development after the architecture is done? That is edging back toward waterfall. Can you explain the purpose of the architecture in just two or three statements? Anthony Crain says that when he asks that question, he gets either verbose answers or blank stares. So Anthony shares an elegantly simple two bullet explanation of what an architecture does. Explore the models architects and designers should produce and learn why these models are so important to keep...
Command Query Responsibility Segregation at Enterprise Scale
As organizations grow, they find themselves looking for opportunities to enhance the rate at which features can be delivered while minimizing negative business impact. Carlyle Davis believes that we are responsible for creating an system environment that provides simplicity and resiliency as complexity increases. Various non-functional qualities lead us rethink system architecture more deeply to satisfy the often ignored dimensions of scalability, auditability, and performance. The Command Query Responsibility Segregation (CQRS) and event-driven architectures are potential solutions to...
Thursday, June 9
Use Business Analysts for User Interface Design
Have you experienced difficulties eliciting “what would you like the system to do” from customers and SMEs? Have you then delivered the system only to find that the users don’t like it, even though it meets their stated requirements exactly? Cathy Sargent shares a technique for using mockups early in the development process to help overcome the challenges of gathering complete functional and business requirements, and establishing a mutual understanding of what a system should do. Put a visual representation of the application in the hands of your SMEs, testers, trainers, and development...
Building Mob Programming Teams Using Lego® Serious Play®
In recent years the idea of Mob Programming has begun to attract the attention of those looking for new ways to take advantage of the genius that can be found in a focused, cross-functional, and unified agile team. But how, in practice, do these teams actually work? Paul Wynia, a Lego® Serious Play® facilitator and agile coach, worked closely with the originators of Mob Programming to develop a fun and simple Lego® game that incorporates the basic concepts, approaches, and roles found in an effective Mob Programming team. Using a test-driven development framework, each Mob team tests,...
Managing a Software Engineering Team
You’re a senior engineer who decides to switch to management for experience in leading a team. How is your work going to change? What challenges are you going to face? How are you going to keep up with new technologies? Are people reporting to you going to see you as a leader and follow you? Sebastiano Armeli asked himself all these questions when he became a manager. See what he found it and learn how you can bring this information into your work. While management varies greatly by organization, Sebastiano explores leadership and management behaviors you can apply at your company. At...
The Soft Skills of Great Software Developers
Are you creating clean, high performing code? Are you following the right development practices, but still don’t feel you are getting the recognition or success you deserve? The truth is that working harder and improving your programming skills are not enough. Great developers must demonstrate the human skills—developer practices—necessary to have a strong impact on their organizations. Through conversation and examples, Raul Suarez focuses on behaviors that can help you reach your full potential. He discusses ways to optimize communication, provide and handle feedback, adapt to change,...