2 days
Structure your code to make changing it to meet future requirements easier
Learn to fix design problems without breaking the software
Learn the 4 principles of Simple Design, and when to trade off one principle against another:
* The code must work
* Code communicates intent
* Code is free of duplication (D.R.Y.)
* Code is as simple as we can make it (YAGNI)
Learn the 4 principles of Modular Design:
* Modules should do one job
* Modules should hide their inner workings
* Modules should have swappable dependencies
* Interfaces should be designed for clients
Learn how to measure modularity and make evidence-based design and refactoring decisions:
* Coupling & Cohesion
* Dependency Polymorphism
Learn how these 4 principles map to S.O.L.I.D. principles for object oriented design.
* Single Responsibility
* Open-Closed
* Liskov Substitution
* Interface Segregation
* Dependency Inversion
Learn the 2 fundamental design idioms that enable modular design:
* Dependency Injection
* Inversion of Control
...and how more modular code tends to be more testable and more portable
Learn how principles of Modular Design can be applied to component-based and service-oriented architectures, and how they map to the principles of Package Design:
* Release-Reuse Equivalency
* Common Closure
* Common Reuse
* Stable Dependencies
* Stable Abstractions
Learn how to measure modularity at multiple levels of code organisation and make evidence-based decisions on architecture and design:
* Package coupling & cohesion
* Martin Metrics for package dependency polymorphism
Learn how to analyse code and automatically detect design quality problems early, including:
* Complexity
* Code duplication
* Coupling
* Implementation dependencies
Learn how to reduce your code review ("pull request") bottleneck by automating code reviews, and incorporating them into your build pipeline.
Check out our free videos on software design principles
Pricing Band | £ |
---|---|
First 4-6 people (online) | 700 |
Next 7-12 people (online & onsite) | 450 |
Next 13-20 people (onsite only) | 200 |
Additional people on the day | 700 |
This training workshop is aimed at C# and Java developers with at least one year's experience programming in their chosen language. It's often attended by technical leaders who wish to keep their code craft skills up-to-date, too.
You will need a suitable computer with your favourite C# or Java editor/IDE installed. On-site courses will require a room large enough to comfortably accomodate all participants, good, reliable Internet access (Wi-Fi), and a data projector or suitably large TV (with HDMI input) that will allow participants to read code from the back of the room. You will find a pen and paper handy.
Online training is available whereever you are, pretty much. (There are a few countries it's sadly not possible to do business with, of course.) Onsite training is available across the UK, Europe and many other regions. Ask us.
9/10 times, the trainer will be Codemanship founder and course author Jason Gorman. Jason has 38 years' programming experience and three decades of professional experience as a developer, technical lead and software architect. He's run hundreds of code craft training workshops over the last 20 years, and is a very experienced teacher and mentor. If, for any reason, Jason isn't available for your workshop, we'll inform you well in advance and offer you a trainer of similar industry seniority.
Yes. You will most definitely be writing code in this workshop. Business analysts, testers, project managers etc may find it useful to sit in and observe -at no charge - if they want to gain an understanding of Test-Driven Development and how it fits into the overall software development cycle, but this is 100% a hands-on workshop.
Since 2009, we've delivered training for developers working in C++, Swift, Go, Kotlin, Groovy, Ruby and many other languages. Ask us about customised courses.