Workshop: Crafting Code
October 12th 2015 09:00 - 17:00
This workshop is designed to help developers write well-crafted code—code that is clean, testable, maintainable, and an expression of the business domain. The course is entirely hands-on, designed to teach developers practical techniques they can immediately apply to real-world projects.
Software Craftsmanship is at the heart of this course. Throughout, you will learn about the Software Craftsmanship attitude to development and how to apply it to your workplace.
Writing Clean Code is difficult. Cleaning existing code, even more so. You should attend if you want to:
Write clean code that is easy to understand and maintain
Become more proficient in Test-Driven Development (TDD): using tests to design and build your code base
Focus your tests and production code according to business requirements using Outside-In TDD (a.k.a. the London School of TDD)
Clean code necessitates good design. In the process of driving your code through tests, you will learn how to:
Understand design principles that lead to clean codeAvoid over-engineering and large rewrites by incrementally evolving your design using tests
Once you have an understanding of the principles at work, we will apply them to Legacy Code to help you gain confidence in improving legacy projects through testing, refactoring and redesigning.
The content will be:
TDD lifecycle and the Outside-In style of TDDWriting unit tests that express intent, not implementationUsing unit tests as a tool to drive good designExpressive codeTesting and refactoring Legacy Code
The course is fully hands-on and developers will be writing a lot of code. So this workshop is aimed at software developers that:
are familiar with at least one Object-Oriented languageare able to understand Java or C#
Legacy code exercise will be done in one of the following languages: Java, C#, PHP, Scala, or C++can write and execute unit tests using a framework (such as JUnit, NUnit, etc.)have a basic understanding of mock objects
bring their own laptops
have a development environment consisting of:
their favourite Object-Oriented languagea unit test frameworka mocking librarybe able to create projects, build source code and run test cases in their development environment
In addition, a distributed version-control system such as Git is desirable.