The law of the hammer or the golden hammer states that “If all you have is a hammer, then you treat everything as if it were a nail”. This cognitive bias of over-reliance on a familiar tool is the bane of organizations trying to adopt Agile and Scrum software development methodology. The goal of this class is to expose students to the most important tools and techniques that need to be applied in order to build good software in the iterative and incremental fashion that Scrum requires. These ideas are central to the entire field of Agile software development.
In this class we will be covering the critical skills in coding, testing, refactoring, continuous integration, and other related topics that are needed for successful team software development in the Scrum style. We will take a first principles approach understanding the Agile software principles and its application with the Scrum process framework. You will get both the conceptual and hands-on understanding of how to be an effective software developer working in Scrum teams. This class will not only teach you hands-on skills to perform TDD, ATDD, BDD, Code Reviews, refactoring, and static code analysis but also to apply core architectural design principles and patterns with the Continuous Integration / Continuous Delivery (CI/CD) process.
While this is a great class for a Development team member to excel in an agile working environment, this uniquely designed and delivered class provides a great value to your roles as Scrum Master and Product Owner as well. As a Scrum Master, this class will build your strength as a connector to ask right questions, provide tailored feedback, and help scrum team members make a connection to a colleague who can help them. As a Product Owner, this class will provide you insights to better at managing expectations and priorities of items on backlog.
This class is open to all members of a Scrum team including Scrum Masters and Product Owners with technical background. It is important to have an experience working in a team environment building software products for the context of this course (Instructor will be using Java to illustrate concepts but this is a programming language and scrum role agnostic class). If you can install Eclipse and build an application then you can take this class.
Class Agenda
Session 1: Origins
History, scientific management, plan-driven model, Waterfall model for software development.
Session 2: Agile Manifesto
Identifying user stories, Writing Junit test cases, Incremental development with Cucumber, prioritizing software development.
Session 3: Scrum framework
Workflow, process theory, values, team, sprint events, and artifacts such as product and sprint backlogs.
Session 4: Building blocks
Iterative development with TDD, Pair programming, Extreme programming, Refactoring, Test automation with Selenium, working with static code analyzer with PMD and FindBugs, CI/CD pipeline and automation for continuous deployment.
Session 5: Architectural considerations
Computer systems, programming considerations for modular, OOP, web services and SOA, Data flow considerations for SQL and NoSQL systems, OS-level considerations
Session 6: Building reliable systems
Design Patterns, testing patterns, refactoring patterns and continuous improvement of software systems.