Core Competency
Date: 2012-11-24 12:44:03

For at least the last few years I've heard colleagues talk about working out the core competency of our clients businesses and I'd confused myself  into thinking that the software we helped them build was the core competency.

I think Martin Fowler best explains how technology and business core competences work in his post about http://martinfowler.com/bliki/UtilityVsStrategicDichotomy.html[utility and strategic projects] where he describes the difference between these like so:

____
So what is the distinguishing factor between utility and strategic projects? To my mind it's all about whether the underlying business function is a differentiator or not. *If how you do this function is a crucial part of what makes you better than the competition, then the software that supports this function needs to be as good as you can make it*. Note that this distinction isn't about the software, but the business function.
____

The thing I'd be getting confused about was thinking that the software *is* the core competency but as Martin points out the software is actually there to *support* the core competency.

I thought it'd be interesting to think through some of the most recent things I've worked on and think through how software was helping support their core competencies.

== Publishing houses

As I see it their core competency is being able to get content that their customers will want to buy in the form of articles, journals and books and each publisher tends to focus on doing that for specific industries.

As the internet becomes a more popular channel for serving content the publishing houses have had to make their content accessible online rather than relying on offline channels.

One way software can help here is by making it possible for their customers to quickly find and download the content that they're interested in.

When you break that down further you'd end up thinking about how we can write software which makes it possible to get new content in front of customers quickly.

We might also start thinking of ways we can get customers interested in content that they didn't initially think would be interesting to them, which might involve some analysis of our data to build a http://www.quantisan.com/recommendation-discovery-via-graph-traversal/[recommendations engine].

== Telecommunications companies

Telecommunications companies tend to be massive organisations so I wouldn't claim that I know all their different core competencies.

For the part I worked in I'd say their core competency was being able to offer competitive prices to global customers who wanted to buy various products to allow their staff in different locations communicate with each other.

The way software could help in this instance was by making it possible for the telco's sales people to quickly and easily get a range of different options accurately priced for their customers.

This involved calculating thousands of variations of network combinations and then narrowing those down to the options which were best value for the customer.

In this case a non performant software solution would actually make life worse for the sales people because they'd have to find a way to manually get the quotes they needed rather than relying on the software.

== Retailers

Although again retailers have many key differentiators I think one of them is the ability to set the prices of their products so that people will buy them but also so they won't lose money.

The way software can help in this instance would be in codifying the logic that the people who are setting the prices have in their heads.

Obviously there will still be some part of setting prices which is gut feel/intuitive but a reasonable amount is going to be a person following some sort of http://en.wikipedia.org/wiki/Decision_tree[decision tree] in their head.

There are a lot of commercial packages for this type of thing since it's a fairly common problem but if you use of those then you're giving away one of your differentiators since your competition may well be using a package as well.

== In Summary

I'm still trying to understand exactly how this core competency thing works so if I haven't quite understood it please feel free to let me know.

I think my colleague Erik Doernenburg has a slightly different take on this where he considers whether http://erik.doernenburg.com/2012/09/buy-vs-build-shift-part-1/[software development as a concept is a core competency] and explains how for publishing companies it now needs to be one.