Title,Type,Typical duration,Audience,Keywords,Website URL,Overview,Format,Prerequisites,Suggested follow-up
"Agile for Business Analysts","Course","2 days","Business analyst
","","http://amarinda.com/courses/agile_for_business_analysts","Does the Agile “on-site customer” mean the business analyst is no longer required? Does the “on-site customer” even exist in real organizations?

The course illustrates the theory and practice of agile software development for analysts. You will learn how business analysis fits within agile processes, how relationships with the business and the development organization can change, and how you can work with both to improve communication, delivery performance and stakeholder satisfaction.
","The course blends tutorial, class discussion, question and answer sessions, and demonstrations / simulations.
","Previous involvement in software projects (preferably as a business analyst or similar stakeholder-facing role) is a prerequisite.
Although we raise awareness of leading edge technical practices, we do so without requiring technical knowledge.
","Agile Analysis with XPAgile Project ManagementAgile software development"
"Agile Project Management","Course","1 day","Project manager
","","http://amarinda.com/courses/agile_project_management","Agile processes offer profound challenges to the way we manage software projects. Working iteratively, within-project feedback, intense stakeholder involvement and short cycle times mark a strong break from traditional project management techniques. Agile processes also offer the possibility of more disciplined and controllable projects—this course is about teaching you how to use this capability.
","This highly interactive course blends tutorial, class discussion and question and answer sessions.
","Previous experience of project management is strongly recommended. No previous knowledge of agile processes is required.
","Agile for Business AnalystsAgile software development"
"Agile Analysis with XP","Course","2 days","Product owner
Team lead
Business analyst
","XP
Stories
Business analysis
","http://amarinda.com/courses/agile_analysis_with_xp","Where does the business analyst fit into agile processes?

Agile processes seek to change the nature of the relationship between the business and development functions of an organization. The goals are clearer scope, faster time to market, better quality and greater collaboration. Business Analysts sit between these two very different groups and facilitate their interaction. What agile changes is the traditionally ‘decoupled’ nature of the interaction: a user story is the business’s statement of need and the developer’s unit of work. How do you achieve sufficient detail to drive the process while remaining lightweight and permitting rapid throughput?
","The course blends tutorial, class discussion, question and answer sessions, and demonstrations / simulations.

Objectives


Understand the fundamental mindset shift behind agile processes
Explore the problems and opportunities agile processes present
Learn the advances in technical and management practices that act as enablers for agile processes
Understand how to work effectively with an XP team

","This course focuses on the needs of business analysts and is suitable for roles involving contact with stakeholders and development teams using an agile process.

The course illustrates the theory and practice of agile software development so previous involvement in software projects is a prerequisite.

Technical programming experience is not required. Some modules cover technical ground but the objective in each is to illustrate in broad terms how the technique works.
","Agile software development"
"Intensive test-driven development (TDD) and refactoring","Course","1 day","Programmer
Team lead
Architect
","Unit testing
Test driven development
TDD
Refactoring
Programming
Evolutionary design
Automated testing
","http://amarinda.com/courses/tdd_and_refactoring","Unit test driven development (TDD) is one of the great development process innovations. While associated with Agile development, TDD can be applied to other, more traditional methodologies as well. It brings numerous benefits, including high levels of test coverage, a goal-directed approach to programming and highly maintainable code.

Refactoring approaches quality from another angle: poor quality legacy designs stifle development work and create places for bugs to hide. Refactoring provides a systematic way to clean up and improve design and can be used to carry out large-scale evolutionary redesigns. Superb tool support (particularly in Java) now makes refactoring more cost-effective than rewriting legacy systems in many cases.

TDD tests defects out, while refactoring builds quality in. They work exceptionally well together.
","The course blends tutorial, numerous instructor-led demonstrations, open discussion and short exercises.

Participants will be expected to follow along with examples on their own PCs but an element of teaching effective use of the development environment is included in the course so this should not require much previous experience.
","The course illustrates the theory and practice of unit test driven development and refactoring. It is suitable for software developers with moderate programming experience. Deep technical knowledge is not required, so it is suitable for people with previous but not current programming experience. Experience of Java is helpful. Experience of object-oriented design is very helpful.

This course is extremely intensive — these topics would take 2–3 days to cover on most courses. We follow a carefully-planned structure to maximize learning, and previous participants have given the course very high marks, but please be aware this is a challenging day for the participants. There is a small risk minor topics will need to be skipped to keep to the available time.

To augment the short timescale, intensive learning we recommend following up with on-the-job mentoring for 2–3 days a couple of weeks after the course.
","Agile software developmentEvolutionary design and refactoringTest-driven development (TDD) in Java"
"Agile software development","Briefing","3 hours","Senior manager
Project manager
Programmer
Tester
Product owner
Team lead
Architect
Business analyst
","Agile
Introduction
","http://amarinda.com/briefings/agile","10 years ago the word “Agile” for a software development process had not been coined. 5 years ago a few early adopters were reporting successful projects. Today many organizations – some traditionally very conservative – are adopting an agile process. Why?

As the pace of change in the wider business world accelerates, the inventory of legacy systems grows and the desire to create business advantage through IT strengthens, many organizations have come under pressure to find a better way to deliver systems.

Agile offers the potential to create a software delivery vehicle that responds much faster and works more effectively with the wider business environment.
","The briefing combines a presentation (during which brief questions and answers will be allowed), a separate question and answer session and finishes with open discussion. Discussion often focusses on the practicalities of mapping current processes to the agile model and what changes might need to be implemented.
","This briefing provides an essential grounding in Agile development processes. It is suitable for people in any role involved with software development, including senior managers, team leads, project managers, programmers, testers and business analysts.
","Evolutionary design and refactoringTest-driven development (TDD) in Java"
"Evolutionary design and refactoring","Course","2 days","Programmer
Team lead
Architect
","Refactoring
Iterative design
Evolutionary design
Simple design
","http://amarinda.com/courses/refactoring-and-evolutionary-design-skills","A hallmark of successful software projects is that they build systems that users want extended and enhanced. This creates a problem: how do we design the system so it can be extended and enhanced, probably in ways we cannot anticipate?

Traditional design techniques date back to the 1970s, and although OO techniques in the early 1990s brought with them an added appreciation of the value of encapsulation and modularization, we still see the design of a software system as a one-time activity.

It has proven very hard to make one-off design work, even with careful anticipation of future requirements, definition of high quality abstractions, design patterns and use of advanced off-the-shelf frameworks.

Since the late 1990s, the emphasis has been moving towards a way of working which acknowledges that we can never fully anticipate what feature-set changes a design must be able to accommodate. Instead, we treat design as an on-going activity that lasts as long as the product. Changes to the design and code are implemented using refactoring techniques.

This is evolutionary design.
","The course blends tutorial, class discussion, question and answer sessions, demonstrations/simulations and practical exercises.
","This course is applicable to people in technical software development roles. 
The course illustrates the theory and practice of evolutionary design (including refactoring), along with a refresher on the object-oriented design techniques that apply to evolutionary design.
","Test-driven development (TDD) in Java"
"Test-driven development (TDD) in Java","Course","1 day","Programmer
Team lead
Architect
","Programming
Automated testing
Test driven development
TDD
Unit testing
","http://amarinda.com/courses/test-driven-development-tdd","Unit test driven development (TDD) is one of the great development process innovations. While associated with Agile development, TDD can be applied to other, more traditional methodologies as well, bringing the same benefits:


very high level of automated unit test coverage;
programming activities remain goal-directed (the goals being encoded in tests);
ensure that each step is a step forward rather than back;
manage solution complexity by implementing simpler intermediate solutions before tackling more complex cases;
develop better quality component interfaces by driving interface development from a client’s perspective rather than the implementers perspective;
make code inherently unit testable;
manage dependencies better—making code easier to maintain.

","The course blends tutorial, class discussion, question and answer sessions, and demonstrations / simulations. Participants will be expected to follow along with examples on their own PCs but an element of teaching effective use of the development environment is included in the course so this should not require much previous experience.
","The course illustrates the theory and practice of unit test driven development. It is suitable for software developers with moderate programming experience. Deep technical knowledge is not required, so it is suitable for people with previous but not current programming experience.
","Evolutionary design and refactoring"

