I’ve spent this week in London, attending a course on best practices and design patterns. The course was aimed at .NET developers, where the following was the main targets in terms of what we were to learn:

Solve complex programming problems using design patterns
Deliver bug-free code using test-driven development in Visual Studio
Create layered architectures for reusability and eliminating functional duplication
Apply the S.O.L.I.D. principles for better class design
Simplify and automate repetitive tasks

The course instructor was a Richard Howells. He was rather experienced in the field, and had tons of knowledge to share. Based on the course description my goals of attending this particular course, was to be able to be more confident that the quality of code I deliver have a high standard. After attending I’m sure I will write better code, at least to some extent. What was interesting to see was that quite a few of the topics (especially design patterns) we covered I had already picked up on, from reading code from others at my company. Now I’m just able to name it and understand more on why it has been written in such and such way.

I aimed to sum up all the topics in a new post each day, and for a few days I got to do that. I also wrote the post for the third day, however I wrote it offline, and stored the file. When I had internet to upload it, the computer froze, and upon restart the file was corrupted (so if anyone know how to recover a corrupt markdown file, I’d appreciate some input!).

The topics we covered was the following: Day 1:
* Introduction
* Facade Pattern
* Object-Oriented Programming
* Design Patterns
* Best Practices
* Strategy Pattern
* Dependency Injections
* Factory Pattern
* Test-Driven Development

Day 2
* Test-Driven Development continued
* Refactoring
* Decorator Pattern
* Adapter Pattern
* Template Method Pattern
* Role Object Pattern
* Application State Pattern
* Class Design Best Practices

Day 3: * Interface Segregation Principle
* Repository Pattern
* Dependency Inversion Principle
* Mock Object Pattern
* Test driving business logic
* Entity Framewor
* Data Mapper Pattern

Day 4: - Model View Controller
- Model View ViewModel
- Observer Pattern
- Command Pattern
- Null Object Pattern

A lot of interesting topics, as you may see, and with all the time we had to do examples, we really got to see how these patterns and practices is used with actual code. If you ever want to do this course, I can highly recommend it! In fact, if you get the chance to do a similar course in any technology, I recommend to do so. After all, it may improve the code you write, your thought process and in the end, the value you can generate for whatever you create.