May 2, 2014

Design Patterns

Design patterns are solutions to common problems encountered while designing and building software. As part of being a good coder or architect it is vital that you understand the common design patterns. These patterns will make up your common language that you use in meetings and when explaining solutions to others and understanding solutions being explained to you.

There are many patterns that very clever people have come up with, so I will guide you to the most common patterns which are used all the time and include reference material that most good developers and architects have read.

Learning patterns

I have learnt these design patterns by reading the books and then implementing these patterns either in test projects or in production code. I recommend you read through the material and if you are on the developer path, try to implement some of them in test project code.

Coding design patterns

It is important to understand that the foundation of most coding design patterns is Object Orientated(OO) design. It is therefore very important that for these patterns you really understand OO. If you have not yet started programming, I recommend you learn, practice and understand the core concepts of OO design before trying the design patterns.

Once you have got the basics of OO design, you should then learn and understand the SOLID principles.

The SOLID principles are the foundation for all the following design patterns. Understanding them gives you the ability to see how the design patterns include the principles and what benefits they bring because of them.

A good place to start with coding design patterns is the Gang of Four patterns. These patterns are considered the starting place of designs. However, these patterns have been enhanced over the years by the likes of Martin Fowler and co.

I would therefore start with the Head first Design Patterns
book and learn these patterns.

The two books above (Erich Gamma and the Head First book) will give you a really good overview of coding level design patterns. You can further extend this by reading Patterns of Enterprise Application Architecture (The Addison-Wesley Signature Series) by Martin Fowler.

I have also added a further design patterns page to help you focus on the design patterns that are found most frequently in finance (and beyond).

Architectural Design Patterns

One may argue that all design patterns are architectural in nature, however, what I mean is that these patterns operate on a higher level across individual processes or services.

Architectural patterns show how the system joins together. It shows how different components talk to each other. They cover how services can communicate with each other, for example through message queues, direct, request response or event based messages.

I recommend you read the following book SOA Patterns by Arnon Rotem-Gal-Oz.

His book takes you through service architecture and covers everything you will need for an IT Finance role.

Online resources

As well as learning about specific patterns using the resources detailed above, I highly recommend keeping up to date with the work being done and reported on at the following web sites and blogs:

Conclusion

There is so much work going on in the design pattern and best practice space in the coding industry you can spend your entire life (and some people do) learning and devising new patterns. Patterns will become part of your daily life as an architect or developer but it is important to stay focused and look at the problem at hand in a pragmatic way. If you cover the further reading given here, this will be plenty for you to continue learning as you come across problems after you have started in IT Finance.

Simon Powers
Simon Powers is an Agile Coach specialising in large scale transformations and agile adoption. He has a background in very large enterprise architecture which has led on to organisational design and agile process refinement. Simon is the founder of Adventures with Agile.