Patterns

How Small is Small Enough

As developers, we are good at breaking up components into sub-components - sometimes excessively so. When confronted with a larger than average chunk of work, we make a choice: either consider the work as indivisible to be delivered in its entirety, or break it up smaller pieces. Most of us already experience a sense of foreboding when confronted …

The Humble Story Point

I’ve had some interesting discussions on the management of work through user stories. A lot of teams, those starting to use agile techniques, seem to have some uncertainty around common topics: The theory behind story points and why they are preferred over estimations in hours Why story points and velocity are self-correcting measures The …

Complexity in Software

In a discussion with a former colleague of mine on the organization of components and on system boundaries, we focused on the complexity inherent to software building. It hit me that we can learn from physics here. The law The first law of thermodynamics states that

Dependency injection - the what and the how

Background: We’ve started a weekly patterns & practices meeting at work with some of our senior developers where our discussions and actions will hopefully bring some improvement to the current development environment. Once a week one of us has an opportunity to showcase a new topic – much akin to knowledge transfer session but more …

NGenerics overview - GeneralTree and the Visitor pattern

Previous instalments General Data Structures HashList [ Note : This post feels like Computer Science 101 - but I felt it necessary to discuss the basic tree concepts before we move on to some of the more specialized trees like search trees. ] The GeneralTree<T> class in NGenerics provides a way of defining tree structures in a simple, …

Specification pattern

The Specification pattern has been added to NGenerics . In my previous post on the Specification Pattern, we explored creating specification functionality using extension methods. It’s been implemented with the operator methods (And, Or, Xor) on the actual interface, with an abstract class forming the base of all specifications. The …

Extension Method Patterns

One of the walls I hit the most in C# when designing classes is the lack of support for multiple inheritance, which makes that one spot for inheriting from a very valuable spot indeed. For the purposes of this discussion, we’ll start with a simple implementation of the specification pattern :

Sealed classes

As part of version 1.3 of NGenerics , I’ve removed most of the sealed keywords from the classes (where it made sense). It took me a while, but I’ve accepted the following rule (and Microsoft is of the same opinion, it seems) :

Creating or Input Multiple Messages from or to Biztalk Maps

Sure, we all know how to do that by know, right? Funny thing is, all the blog entries I’ve seen like the ones here and here , end up creating a new map, usually situated in the root of your assembly (or event worse, create temporary orchestrations to do that). In order to move it to another folder in your project you’ll have to edit the …