April 8, 2014

Extreme Programming (XP) – An overview

XP is a very popular set of practices and firmly part of the Agile family. XP fits very well within other processes like Scrum. It is a set of values, principles and practices that are used to create excellence from and within the development team. XP differs from Scrum in that Scrum is a framework…

Read More
March 27, 2014

Zachman Grid and when to use it

The Zachman Grid or Framework is useful tool for determining what artefacts to create as part of the Enterprise Architecture work in an organisation. The grid as defined on the Zachman website is given as: Source: http://www.zachman.com/ea-articles-reference/54-the-zachman-framework-evolution The framework will only ever be a small part of the overall architecture effort as it is just a…

Read More
March 10, 2014


Agile is a set of values from which an entire set of software delivery methodologies and practices have been derived. All Agile practices follow the same fundamental principles as set down in the Agile Manifesto and Principles, however, because Agile is flexible to meet the needs of individuals, teams and organisations, each work place implements…

Read More
February 7, 2014

Project Type – Agile or Waterfall

All work in IT is based around projects / products. Projects can be large and run for many years or can be small and run for a few days or weeks. Projects are typically run according to some sort of management methodology. The two methodologies prevalent today across all industries are Waterfall and Agile. Waterfall…

Read More
February 5, 2014


Waterfall is the old school methodology of software development but is still practised by companies throughout the industry. This section will teach you all about waterfall methodology and its shortcomings. The waterfall methodology is so called because of it is a linear approach to development with each step flowing on from the previous one. These…

Read More
February 1, 2014

Dependency Inversion Principle

Definition: One should depend upon abstractions and not concrete instances. Typically in a software application, high level components need to depend on lower level components. If the low level components are ‘hard-coded’ into the high level components this causes two problems. Testability The first problem is testability. It becomes very hard or even impossible to…

Read More
January 27, 2014

Interface Segregation Principle

Definition: Many client specific interfaces are better than one general purpose interface. This principle is fairly straight forward in that it is really just saying keep your interfaces to a specific role, keep them small and concise. Reason: This enables code concrete classes to not have to implement every single method regardless of whether they…

Read More
January 20, 2014

Liskov substitution principle

Definition: Objects in an application should be replaceable with instances of their subtypes without altering the correctness of that program. To understand the Liskov principle is useful to understand the concepts of Contravariance and Covariance. Contravariance Contravariance is the conversion of a class from its sub class to a class higher up the hierarchy. An…

Read More
January 16, 2014

Open / Closed Principle

Definition: An object should be open for extension but closed for modification. This principle states that code should only be modified to fix bugs and errors, and to extend the functionality a new class should be used. Typically the new class would be a derived class to enable code re-use from the original or a…

Read More
January 15, 2014

Single Responsibility Principle

Definition: An object should have a single responsibility. In practice, to adhere to this principle, an object is a class and that a class’s functionality is grouped around a single idea or unit of responsibility. Robert C Martin defined responsibility as a reason to change. This means that a class should only have one reason…

Read More
December 19, 2013

Office Politics

Over the years I have found a commonality in the way developers think, which is fundamentally different than non-technical managers. This difference has often perplexed me and I have often wondered exactly what the nature of this difference is. It usually manifests itself in the form of developers thinking they are in some way better…

Read More