Tel: +44 208 715 2645, jason.gorman@codemanship.com, www.codemanship.com

© Codemanship Ltd 2012

Test-driven Development

Duration:

 

Format:

2 days

Workshop

This 2-day workshop introduces novices to the fundamental practices of TDD, as well as stretching experienced practitioners with more advanced techniques like Responsibility-driven Design using Mock Objects. The innovative format focuses on building habits for effective TDD and works towards creating a personal practice regime that has been successfully applied at organisations like the BBC and City Index.

 

Day 1 - We introduce the basic TDD practices, and focus on 13 habits for effective TDD, and you will get practical, hands-on experience applying all of them through a series of code “katas” or exercises. You will also get to grips with half-a-dozen simple refactorings which are essential for keeping your code clean and evolving your design.

 

The workshop will conclude with a discussion of how we measure our effectiveness at TDD, and how we can develop our TDD “muscles” and master these practices through sustained practice and peer-review.

Price:

 

Led By:

£4,000 for up to 16 people

 

Jason Gorman

Workshop requires at least 2 attendees can use the same OO programming language for pairing. Some basic automated refactoring tools are recommended also

Day 2 - We look at patterns for sustainable TDD, and the use of test doubles like stubs, fakes and mocks. You will learn about Responsibility-driven Design and the “Tell, Don’t Ask” style of OO design. In the afternoon, you will design and implement code using top-down TDD and mock objects to achieve a good OO design.

 

Refactoring

Duration:

 

Format:

2 days

Workshop

Over a packed 2 days, you will learn to identify 13 common code “smells” that make software harder to change and limit your team’s agility, and you will learn to apply the correct refactorings to eliminate them. You will also learn about good habits for safe and sustainable refactoring that will form part of your personal refactoring practice regime.

 

Day 1 -  Through a series of worked examples, you will learn to recognise and refactor Long Methods, Duplicate Code, Divergent Change & Large Classes, Copy & Paste Inheritance and Obvious & Subtle Message Chains. We’ll also learn to apply the 9 good refactoring habits

The workshop will conclude with a discussion of how we measure our effectiveness at refactoring, and how we can develop our refactoring “muscles” and master these practices through sustained practice and peer-review. You will put your refactoring skills to the test with a specially-prepared refactoring “assault course”

Price:

 

Led By:

£4,000 for up to 16 people

Jason Gorman

All code examples will be in Java and C#. Automated refactoring tools are very highly recommended

Day 2 - You will learn to recognise and refactor Data Classes, Data Clumps, Long Parameter Lists, Feature Envy, Inappropriate Intimacy and Switch Statements

 

OO Design Principles

Duration:

 

Format:

2 days

Workshop

OO design principles underpin many aspects of software craftsmanship, including test-driven design and refactoring. This workshop will help build a bedrock for your everyday practice by giving you the tools to reason about code and make more informed design decisions and trade-offs. In this 2-day master class, you will learn the core principles of OO design and apply them to a series of code quality problems that illustrate the principles in the most hands-on, practical way possible.

Day 1 -  You will learn the goals of OO design and about dependency analysis, which will be your foundation for understanding OO design. Through practical exercises, you will learn to apply OO design principles including Simple Design, Don’t Repeat Yourself, “Tell, Don’t Ask”, and S.O.L.I.D. (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation & Dependency Inversion)

The workshop will conclude with a discussion of how we measure our effectiveness at OO design, and how we can develop our OO design “muscles” and master these practices through sustained practice and peer-review.

Price:

 

Led By:

£4,000 for up to 16 people

Jason Gorman

All code examples will be in Java and C#. Automated refactoring tools are very highly recommended

Day 2 - You will learn more OO class design principles including the Law of Demeter and the Reused Abstractions principle. You will also learn to apply package design principles that apply to large-scale component-based software and to Service-Oriented Architectures

 

Expert training in core disciplines of software craftsmanship, delivered on site for up to 16 developers.

 

Training customers include the BBC, Caplin Systems, Electronic Arts, HESA, Channel 4, Goldman Sachs, Siemens,  Autoquake, Pinesoft, 7Digital, Collinson Latitude, Rabobank, Canal Digital, Cap Group & City Index.

 

Email jason.gorman@codemanship.com for details.

Agile Design

Duration:

 

Format:

2 days

Workshop

A common misconception in Agile teams is that being Agile means doing no up-front design. On the contrary, Agile pioneers like Kent Beck and Martin Fowler recommend “just enough” up-front design. Too many teams leap straight from a user story or an acceptance test into writing code without taking a bit of time to think about and plan their implementation designs. And very many Agile teams come unstuck on the lack of communication and co-ordination over design and architecture with their team-mates. Visual modelling can help enormously in these respects, but has gained a reputation for being about Big Design Up-Front. This unique training workshop addresses the need for some design and some visualisation without falling into the traps of too much design up-front and not enough.

 

In this 2-day workshop, participants will form into a single team (or two teams, if numbers allow), who will work to design and implement working software on a simple software application built on a technology stack and using tools with which they are familiar.

 

Their goal will be to take pre-agreed user stories and acceptance tests and follow a simple but effective design process, learning and applying a subset of the Unified Modeling Language which will allow to visualise and communicate their designs clearly and succinctly.

 

Participants will learn to take design sketches and use them as the basis for test-driven development, implementing working features and integrating them into a shared code base.

 

Price:

 

Led By:

£4,000 for up to 16 people

Jason Gorman

Teams must all work in the same object oriented programming language., with a preference for either Java or C# A version control and build automation system must be in place before the workshop begins. The training room must have ample space to put flipchart paper up on walls/windows etc. This workshop cannot be run in a small room.

Day 1:

 

Participants will get a crash course in the 20% of UML notation that most developers use 95% of the time. They will learn how to draw class diagrams to model both problem domains and technical object oriented and component-based solutions. They will learn how to use sequence diagrams to model key interactions between collaborating objects in the execution of a scenario. They will learn how to model program flow using activity diagrams, and to model event-driven logic using state charts. They will also learn how to visualise high-level system and physical deployment architectures using UML packages and component diagrams.

 

On day one, participants will form one or more teams and be introduced to the project they will be working on and its requirements.

 

Over the two days, they will work in pairs on different user requirements for the same software, learning how to use visual modelling to plan and co-ordinate design within an Agile team, and building a sense for how much design is “just enough”.

 

Day 2:

 

Participants will continue with their project, and also be introduced so some useful advanced UML concepts. They will learn about how UML can be extended for domain-specific applications like database modelling. They will also gain experience modelling other people’s code in UML to help them understand it. They will explore alternatives to UML for modelling, in particular tools like Class-Responsibility-Collaboration (CRC) cards. Finally, they will explore ways of using UML diagrams to highlight design problems, which may allow them to spot issues earlier in development. Complementary techniques for modelling the user experience will also be covered.

 

 

Public Courses

index

“Programming discipline is the key to unlocking the learning potential of your software-dependent business”

TDD Intensive Workshop

Intense, budget-friendly 1-day master class, London, July 13th

home  |  about  |  training  |  clients  |  blog  |  videos  |  contact