---
title: "April 18: Refactoring and Design Skills for Test Driven Development Workshop"
url: "https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.md"
canonical: "https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.html"
published: "2013-04-10T22:10:19"
updated: "2013-04-10T22:10:19"
tags: ["Unit Testing"]
author: "Roy Osherove"
description: "When? April 18-19 Where? Oslo How much? 11,900 NOK How to register? Send me an email. The Problem You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. Your design skills are…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# April 18: Refactoring and Design Skills for Test Driven Development Workshop

By Roy Osherove April 10, 2013 In [Unit Testing](https://osherove.com/blog/category/unit-testing)

**Historical article** · Originally published April 10, 2013; technical details may be outdated.

**When?** April 18-19

**Where?** Oslo

**How much?** 11,900 NOK

How to register? [Send me an email.](https://osherove.com/contact)

**The Problem**

You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. Your design skills are lacking, and trying to let TDD drive the design without having design skills can lead to a very problematic, although testable, design of your code.

**Objectives**

I usually do not focus about design in my TDD courses. I believe that separating the learning about the core skills of Unit Testing, TDD, and Design should be separated so that the learner will not feel overwhelmed. This course is a complement to the Art of Unit Testing course I am teaching. This course is specifically dealing with design skills, and assumes that you already know how to write unit tests.

**Assumed**: You already have some experience writing unit tests.

1. **1.**      Clean Code and SOLID Design Principles
2. **2.**      Design for Testability
3. **3.**      Refactoring patterns on hard to test legacy code
4. **4.**      Writing tests against refactored code
5. **5.**      When it does and does not make sense to refactor
6. **6.**      We will also take a look at open source projects and try to see how we would refactor them.

**Materials**

All students get a PDF of all the slides in the course, in downloadable form.

**Agenda - Day 1:(09:00-16:00)**

1.    From TDD Kata to Design Skills
2.    Single Responsibility Functions
3.    Single Responsibility Classes
4.    SOLID Principles
5.    Drills throughout the day     

**Agenda - Day 2:(09:00-16:00)**

1.    Working with Legacy Code
2.    Refactoring for Inversion of Control
3.    Refactoring for Open Closed
4.    Liskov Substitution Problems
5.    Refactoring for Dependency Injection
6.    Drills throughout the day

## More in Unit Testing

[All posts in Unit Testing](https://osherove.com/blog/category/unit-testing)

- Oct 14, 2013

    ### [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html)

- Jun 4, 2013

    ### [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html)

- Mar 29, 2013

    ### [Acceptance Frameworks Vs. Specification APis](https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.html)

- Mar 28, 2013

    ### [Using System.Transactions.TransactionScope to Rollback Database changes under an integration test](https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
