Is WCF Redundant?

It’s funny, when alternative technologies comes out that do a similar thing to a previous technology, people are very quick to pronounce the previous technology as dead. I was talking to someone the other week at a different company who said that their architects wanted to use WebAPI because WCF wasn’t relevant any more. This made me think, WHAT!!, REALLY!!, SURELY NOT!!

WCF is Dead. All Hail Web API
WCF is Dead. All Hail Web API

In the rest of this article I want to briefly cover what WCF and WebAPI are, talk a bit about the differences, and then suggest the reasons why you may use either. This isn’t an exhaustive discussion, but the point is that you can have various technologies doing similar things, without either one of them being redundant. I have spent the last 7 years of my career being involved in service architectures built using WCF and I am certainly not thinking I need to replace any of those systems just yet.

How to Motivate and Innovate Part 2

In the first part of this article on motivation and innovation for software development leaders, I talked about what motivation is, how your working environment can affect your motivation, and how to get into the zone whilst working.  In this 2nd  part of the article I want to discuss some of Edmond Laus’ Strategies for finding meaning in your work from his blog post, “What research on happiness and motivation can tell us about finding meaning in our work.”, and how Me and My team have applied some of these strategies.

Strategies for Finding Meaning In Your Work

In Edmond’s his article he proposes 5 strategies for finding meaning in your work. I want to list them here with my own thoughts, but please check out his article to get his own thoughts on them.

Validate new ideas early and often with simple proofs of concept

This strategy really speaks for itself. Before investing a large amount of effort into something that may not work out, you should try out a proof of concept first. Generally a proof of concept will be a throw away piece of code just to prove whether a theory will work or not. When my team write proof of concepts, they don’t even bother writing unit tests for them, as the code is never destined to be production code. You can even take this POC idea further by following some of the Lean Startup ideas and produce a larger working mock-up of a system, or a minimum viable product as described in the book.

The Lean Startup - Eric Ries
The Lean Startup – Eric Ries

We tried this in my team. We had a project that our debt recovery department wanted to initiate, which is a self-service portal on the web to allow customers who are already in debt to make a payment online, and therefore avoiding a difficult conversation with our debt collectors over the phone. The idea made a lot of sense, but before investing a large amount of money in building the portal, we did a lean start-up style set of experiments to test the theory against a minimum viable product.

Training : HTML5 and CSS3

In this article I have collated a few training links about HTML 5 and CSS 3. I will keep adding to this page as I find other useful free resources. If you have any videos or articles that you feel would be useful here then please let me know in the comments and I will add them to the post. I would like it to be an archive of good material.

The future is HTML 5
The future is HTML 5


HTML 5 tutorial at W3C Schools

HTML 5 – A Tutorial for Beginners

15 Useful HTML5 Tutorials and Cheat Sheets

Coding An HTML 5 Layout From Scratch

HTML 5 – Simple Easy Learning Tutorials

HTML 5 Rocks – Tutorial

HTML 5 Canvas Tutorials

30 HTML 5 Tutorials

HTML5 Tutorial For Beginners Video – part 1 of 4 – Getting Started


CSS 3 Introduction at W3C Schools

50 Useful and Instructive CSS3 Tutorials

12 Awesome CSS3 Features That You Can Finally Start Using

17 Best CSS3 Tutorials for Web Designers

A Comprehensive CSS 3 Reference Guide, Tutorial, and Blog

How to Motivate and Innovate Part 1

In this series of articles I want to discuss some topics for software development leaders around motivation, innovation, and the different leadership styles you can use to support your team.  When you are leading a team of software developers, or indeed any knowledge workers, you need to keep them motivated to continue getting the best out of them. There are many ways to do this, and they don’t always involve paying people more money. In the rest of these articles I am going to discuss some thoughts on motivating developers.

Motivating Developers

When I started planning this series, I was mainly going to cover how to get the developers in your team to innovate in a safe and controlled way. Then I came across an article called “What research on happiness and motivation can tell us about finding meaning in our work.” By Edmond Lau.

Motivation - Getting in the Zone
Motivation – Getting in the Zone

It is a really good article and I want to pick up on a few points and discuss them further. There are many different ways to get someone motivated, but by far the biggest for a knowledge worker is to give them meaningful and challenging work.

Is it a Good Idea to Write Tests for Legacy Code?

A colleague of mine sent me an article on ArsTechnica that was a short discussion on whether it is a good idea to write tests for legacy code. This was made up from a collection of posts on Stack Exchange. The original question was as follows:

Suppose one had a relatively large program (say 900k SLOC in C#), all commented/documented thoroughly, well organized and working well. The entire code base was written by a single senior developer who no longer with the company. All the code is testable as is and IoC is used throughout—except for some strange reason they did not write any unit tests. Now, your company wants to branch the code and wants unit tests added to detect when changes break the core functionality.

Is adding tests a good idea? If so, how would one even start on something like this?

Original question posted by Paul over at Stack Exchange

It’s a good question, so I thought I would write down my thoughts on it. I am a firm believer in Test Driven Development (TDD) and this is much easier when you are working on a nice new green field project (writing a new system). Unfortunately we don’t always have the luxury of working on new systems and we have to maintain older legacy systems, or brown field applications. If you have a large brown field system, I personally do not think there is much value in getting your team of developers to sit there and wrap the whole system in tests. Whilst it may feel nice to know the application is covered in tests, the level of effort and expense in doing so is likely to be very high indeed. If the system has been around for a long time, then it is most probably working fine and your users are happy with it (this isn’t always the case, but is more often the case).

Legacy Systems
Legacy Systems

What I do feel is valuable though is adding some tests when you need to change/extend part of the code base. As the system already exists and you can’t reliable determine that the code is doing what it should be doing you can write what Michael Feathers describes in his book “Working Effectively with Legacy Code” calls characterization tests. A characterization test is:

Top 10 Tools That Have Changed the Way I Work

In the modern software development world we rely on lots of different tools to help us with our jobs. In this post I thought I would list the tools which I rely on each day and couldn’t live without. Each and every one of these tools forms a large part of my daily productivity.
The tools I want to cover are:

  • Visual Studio 2013
  • Resharper
  • NCrunch
  • NDepend
  • Mind Genius
  • Enterprise Architect
  • Balsamiq
  • Notepad++
  • Paint.NET
  • DropBox

I would really like to hear from people in the comments about the tools that you rely on. Mainly as I am always on the lookout for new tools, but it is always good to see what other people like to use as I am sure you are all a very diverse bunch.

Visual Studio 2013

I have been using Microsoft’s Visual Studio in various versions since Visual Studio 5 back in the 1990’s. Visual Studio has come on leaps and bounds since those early days of C/C++ coding. Microsoft has recently released Visual Studio 2013 and this is definitely their best version of the tool-set yet.

Visual Studio 2013
Visual Studio 2013

I mainly use the .NET development tools and flit around between Winforms, MVC and WCF projects. Visual Studio 2013 comes with lots of enhancements to the IDE including code preview scroll bars, Code Lenses, Peek Definition, Sign into Visual Studio and the new group by class in the test explorer. I think for as long as I am ever writing code I will be using Visual Studio, so it will be interesting to see where Microsoft takes it next.

Training : Windows Presentation Foundation

In this article I have collated a few training links about Windows Presentation Foundation. I will keep adding to this page as I find other useful free resources. If you have any videos or articles that you feel would be useful here then please let me know in the comments and I will add them to the post. I would like it to be an archive of good material.

Windows Presentation Foundation (WPF)
Windows Presentation Foundation (WPF)

WPF Tutorials

In this section I have provided links to different WPF tutorial resources that are ideal for beginners.

WPF Tutorial

Walkthrough: Getting Started with WPF on MSDN

The Complete WPF Tutorial

WPF Tutorial Video Channel on YouTube

Intertech : Windows Presentation Foundation Training Video


This section contains tutorials and articles that explain how to build an MVVM (Model, View, View Model) application with Windows Presentation Foundation (WPF)

WPF/MVVM Quick Start Tutorial

The World’s Simplest C# WPF MVVM Example

WPF Apps With The Model-View-ViewModel Design Pattern

Easy MVVM Example on MSDN

The Model-View-ViewModel Pattern

WPF MVVM Pattern: A Simple Tutorial for Absolute Beginners


This section contains some links about the XAML markup language used by Windows Presentation Foundation. XAML is an XML markup that is used to define how user interfaces are rendered and events are wired up. XAML is a very feature rich language that can be edited as XML in Visual Studio, or you can use the built in forms designer. If you need to do any design work that is more in depth, you can use the Expression Blend tool.

XAML Overview (WPF) at MSDN

XAML Tutorial Video on YouTube

What is XAML?

XAML in Windows Presentation Foundation (WPF)

XAML Channel over at Channel 9

Visual Studio 2013 New IDE Features

Disclaimer : A reader over at Reddit commented that I didn’t mention which edition of Visual Studio I was basing this article on as some of the features are not available on certain editions of the tools. This article is based on Visual Studio 2013 Ultimate Edition which I use via my companies MSDN subscription.

Now that Visual Studio 2013 has been released and I have had a little play around with it, I thought I would write about some of my favorite new IDE features. Microsoft has added in some useful features that will really make using the IDE a richer experience.

As a larger package Microsoft has packed a lot into Visual Studio 2013. For a more complete look at the new features in this development environment you can view the official release notes at MSDN.

Visual Studio 2013 Integrated Development Environment
Visual Studio 2013 Integrated Development Environment

The new IDE features I want to cover are:

    • Code Preview Scroll Bar
    • Peek Definition
    • Code Lenses
    • Test Explorer – Sort by Class
    • Sign in to Visual Studio

    Coding in the Trenches now on Facebook

    I have created a Facebook Group for this blog where I can make announcements, and do smaller posts about whats on my mind in the world of software development, architecture and leadership. It would be great if  you can come on over, click like and participate in a little friendly banter.  Lets go all social 😉

    Participate with Coding in the Trenches on Facebook
    Participate with Coding in the Trenches on Facebook by Click the button above.

    Composing Services into Layers

    In this article I want to discuss a web services architecture that I have worked with over the last 7 years in a couple of different companies. The architecture I am discussing composes web services into layers, but there is much more to it than that. Nothing in this article is rocket science to an experienced services developer, but it is a way of working that has proven very reliable and easy to understand for developers that gets them working in a consistent way.

    Typical 3 Tiered Architecture
    Typical 3 Tiered Architecture

    The diagram above shows what you will typically be used to working with in an enterprise. It is a standard 3 tiered architecture comprising of the following layers:

    • Presentation Layer: This contains any views that your users will interact with like, web sites, smart phone applications, desktop clients, etc.
    • Business Logic Layer: This contains the under lying logic for your application which may be comprised of web services, REST Services, windows services etc. The presentation layer shouldn’t contain any business logic and therefore should be quite dumb to the inner workings of your system, this is what the Business Logic Layer is for.
    • Data Layer: This contains your data storage. This typically is an SQL database (SQL Server, Oracle, and MySQL) or one of the newer blend of NoSql Databases (RavenDB, MongoDB, Cassandra). Typically your data layer may expose stored procedures to the Business Logic Layer, or your business logic may connect via an Object relational mapper such as Enterprise Library, NHibernate or SubSonic.

    This article is going to concern itself predominantly with the Web Services part of the Business Logic Layer.

    %d bloggers like this: