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 …
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 …
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
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 …
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, …
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 …
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 :
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) :
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 …