Why is there a business technology divide?

Stop me if you’ve heard this one before: A developer walks into a business meeting and an argument ensues. The developer is furious about being asked to cut corners, write shoddy code and generally hack bits of software together in a way that makes a cheap plumber look good. Meanwhile the other side of the table is furious about the slow pace of development: the developers are spending weeks or months with no new features being shipped and nothing changing. The two sides have very different viewpoints on the best way to be successful.

Unfortunately, this isn’t a joke and there’s no punchline. It’s a very real problem in many companies. One I’ve seen many times. The business technology divide splits too many companies in half.

From talking to people on both side of this split it  come down to a lack of understanding, neither side “gets” the other. Each side has a different set of basic assumptions they’re operating from, assumptions about value generation, accountability, professionalism, motivation and many more. It’s worth taking a quick overview of the areas where these differing assumptions come up. Needless to say this isn’t a complete list, nor is any point true in every (or even many) companies, rather its a range of the sort of issues that might come up.


By |January 25th, 2015|business-software divide|0 Comments

The 4 different types of software

You wouldn’t go into a Rolls Royce showroom and try and buy a cheap family car, nor would you go into a Ford showroom and try and buy a tank or go to a Smart dealership expecting to come away with a limousine. While they are all different types of ground transport they are very, very different things, generally speaking though, most people understand the differences and know what they are looking for when they go shopping.

Unfortunately software is somewhat more abstract that cars, and for many people and businesses, figuring out what sort of software they should be buying isn’t easy. If you don’t know the different types of software, and you don’t know how they relate to the problems you are trying to solve it can be a nightmare experience filled with hesitation, fear, and a range of prices and options confusing enough to make even Albert Einstein scratch his head in confusion.

What follows isn’t intended to be a complete, or even an accurate list of the different types of software, (that would be almost impossible). Instead it’s intended to be a useful list of different types of software. My hope is that it will help orientate you and give you the beginnings of a mental map you can use to find the right software for you.

Boxed Software

This is the software that until recently you could buy in a box at your local computer shop, it came with a licence key, a disk, and an instruction manual. Today its more likely that you would download it off the internet and install it on your computer, but to be honest that’s a detail. This type software does one particular task, and if you need to do that task then you should buy a copy of the software.

Famous examples of this type of software include:

  • Adobe Photoshop which is for performing a range of photo manipulation tasks
  • Microsoft Word Which is for doing all range of tasks involving writing and manipulating text
  • Filemaker Pro Which lets you store large amounts of arbitrary information in a way you can search later

For many years Microsoft was the biggest producer of this type of software, and it was highly unlikely that there wasn’t a Microsoft product that would do your task, whatever it was.

Online Services (SaaS)

Online software services, or Software as a Service (SaaS) are software tools that live on the internet, rather than being installed on your personal computer. Some of them do a specific task, just like boxed software, but the most successful ones let many people use them at once, and collaborate to do either a single task, or a set of related tasks. Sometimes you have to download and install a piece of software to access the service (like with Skype) and sometimes you visit a web site to use the service (like with Facebook). When you have to install software, that’s an example of boxed software whose task is giving you access to an online service.

Famous examples of this type of software include:

  • Google docs, which lets people create and edit text documents, and spreadsheets. (Despite bing a different type of software, this is in competition tools like Microsoft Word. Microsoft has since brought out Office 365 which is an online service version of its office software.)
  • Facebook which lets people share whats going on in their life, and chat to each other
  • Salesforce which lets sales people keep track of the potential customers they are talking to

With most examples of online services, the user can customise some aspects of how they interact with the service, but can’t do much to change the way the service behaves. If that were possible it would change the way it behaves for all users, which would only lead to mass confusion.

Customised Services

Customised services are types of software that allow you to create your own online service. You obtain a copy of the software, install them on an internet connected computer and then access them from any computer on the planet. Because it’s your own service you can customise it to work differently from other copies of the same service. Most software of this type is intended to be easy to customise and extend, and can sometimes be made to do a large range of different things, but there are limits to how far it can be customised effectively. Try and customise it too much and you will end up beset with errors and bugs.

Famous examples of this type of software include:

  • WordPress which is fundamentally a blogging tool. An installation of wordpress lets some users write blog articles, and other users read those articles. WordPress can be customised with features such different visual appearances, social media integration, and even shopping cart / e-commerce features. (WordPress is also available as an online service, giving you a choice of which you want to use.)
  • Joomla which is a content management system (CMS). An installation of Joomla allows some users to add content, which can be text, videos, pictures and so on, while allowing other users to view that content. This can be used for anything from running an online magazine, where the content would be the articles, to the website of a company, where the content would be press-releases, white papers, and so on. Joomla can be very extensively customised with add on modules, that add many new features, like learning management systems (helping users learn specific educational content)
  • Jira which is a tool for tracking bugs and tasks inside a software development project. Jira is now available either as an online service or as a customised service.

Customising a customised service can be done in one of two ways. Either by installing extensions or by paying a developer to write some custom extensions for you. Most examples of software like this have both a range of extensions available, and clear documentation for developers working on creating their own extensions. Typically when the same software is available as both as online service and as a customised service then the customised version will allow much more customisation.

Bespoke software / service

Bespoke software is where you get to throw away most of the rules. You need a team of developers, and to understand how to work with them, but you can build almost anything, as long as it’s within the range of reality. You can choose to either build it as a installable program (like boxed software) or as as a service that can be accessed over the internet.

The main difference between a customised service and a bespoke service is that with the customised version you start with a piece of software which already does something, and with the bespoke option you start with nothing. The developers have to build everything, either from scratch or using frameworks and libraries (bits of code that make the task easier and faster). This can be slower, but provides a lot more flexibility if you want your software to do something unique.

Deciding whether you should start with a customised service and customise it or start from scratch is a very difficult decision, and one you should take advice on.


Most companies will find they need to use a range of different software to find the best way to get their work done. A typical range might include Microsoft Word (boxed software) for creating letters, Gmail for emailing the outside world (online service), WordPress for running their company blog (customised service). Many companies have also brought bespoke software to help with the most unique parts of their value chain. For example the software that Uber uses to decide when to start surge pricing will be bespoke software.

Some companies start out doing their core activities manually without software, then start to replace parts of their workflow with either boxed software or services, before eventually commissioning some bespoke software. Other companies are in a position to start building bespoke software much sooner. Whichever you plan to do I suggest to take a look at 5 Steps to better business software for some pointers.

By |January 18th, 2015|Software|0 Comments

What’s the right scrum team size

Building a software team is a bit like cooking a meal. You can do it in a simple way, or you can do it in a complex way. Think of it a bit like roasting a shoulder of lamb. You could go the simple route, and season it with rosemary, or you could go the complex route and season it with rosemary, thyme, garlic, lemon, lime, sugar, ginger, tarragon, paprika, balsamic glaze, mint and chocolate. It might be the most amazing combination of flavours, or it could be a total disaster. Getting all of those flavours to blend together well is going to be challenging to say the least

Building a team is very similar. Instead of flavours you are merging personality traits, working habits and skills. The more people you add the harder it becomes to find a combination that works well. More people mean more ideas, more creativity, more conflicts and more messy human emotions. Over the past few decades a lot has been written on the subject of how big a team should be, and why bigger teams are not always a good idea.  Amazon CEO Jeff Bezos famously likes two pizza teams, teams that can be fed with just two pizzas, and the classic book The Mythical Man Month gave us the now famous saying “adding more people to a late project just makes it later”. Scrum talks about the right scrum team size being 5-7 people at most. Since adding more people makes things too complex to be functional, stick with smaller teams.

I’d say that this is a pretty accepted conclusion in the world of software and programming, which is why I wish I could say I was surprised when I overheard someone recently talking about a project in their company:

 You won’t believe how complex this project is. We have over 400 developers working on it, and that’s still not helping.

Four hundred people! 400! With that number of people I’m struggling to believe there is any chance the project won’t be beset by complexity. If you don’t believe me try and get 400 people to do something simple, let alone something as complex as a software project. What really makes me sad though is that this isn’t an isolated event. I’ve hard many stories of such large teams working on a project. The myth that more people means more speed is still very much alive and well. There is an idea ingrained in our thinking that says if some developers are good, then more developers must be better. And we all want to be better, so lets get more developers, because it’s, well, better!

Of course, no matter how hard you try, a team of 400 people is not a small team. It’s not a team you can feed with two pizzas. It’s too big to be a team that has any chance of working well together. So the typical response to being better by adding more developers is to create 10, 20, 30 40 or even 50 teams, all working all on the same project. Although the size of any one team is now small enough to avoid complexity, you end up having exactly the same problems between the teams. There are just too many teams for them to work well together.

So how do you deal with this? A number of agile development methodologies (like SAFe) teach how to scale the number of teams, I’m not convinced. The error is in the assuming that more developers is better when in fact it’s worse.

A few years ago I was working on a project that demonstrated this perfectly. A software component was being extended by a team of 15 people. The team had a list of critical features they needed to add, and the first one was expected to take 2-3 months. This was too long and so we went looking for alternative solutions. There was another, smaller team available. This time of just 2 people. They guessed how long it would take to build a system that copied all the existing feature and added all the needed features. Their guess was 3 months. In that time they thought they could reproduce all the work already done, and outpace the existing team in adding new features.  They got the green light to go ahead, and in just 2 months had overtaken the existing team.

You can argue that the new team had some unfair advantages. You could say they were better developers, or that they had the freedom of working on a new code base rather than a legacy one. However neither of these arguments really explain why they were so much faster. That can only be explained by the way they were much more clearly aligned on what they were doing, and how they were not getting in each others way.

So what is the right scrum team size? As small as you can manage while having all the needed skills within the team.

By |January 11th, 2015|Development|0 Comments

5 Steps to Better Business Software

Everyone knows that using the right tool is essential to doing a good job. Trying to hammer a nail in with a screwdriver is an exercise in frustration, and trying to tighten a screw with a hammer isn’t going to end well either! Whoever has the right tool is going to do a better job.

The same thing is true with software. Using the right software for your business is just like picking the right tool. The right software can make it easier for you and your team to do the right thing, whether that’s follow up on customer complaints, deliver the right end product to the right customer or make sure you remember to order the thank beers you promised your team for last week’s hard work. With the right software, all your tasks become easier, more cost effective and probably more fun too. But to pick the wrong software when your competitors pick the right software is to let them have then an unfair advantage, and that’s never a good idea.

So how do you make sure you make the right choices, and make sure you have better business software than your competitors?

  1. Understand your work
    All the work you do can be broken down into a series of sequential steps, sometimes called a workflow. The steps that whoever does the work has to follow. It’s important to understand these – what are they and how long do they take. It’s important to remember that the people actually doing the work will always understand them better than any analyst can do. So make sure you speak with the people who do the work, and preferably have at least one of them working with you to make your software choice.
  2. Find software to improve one step of your workflow
    The temptation is to try and build software to help with every step of your workflow, but that’s a mistake. It makes it hard to work out what works well and what works poorly, as well as adding a lot of complexity in finding (or creating) software that can do the the entire workflow.

    Instead pick just one step of your workflow and use software to make that faster/better. The step you pick should be the one you think its most amenable to being done better by a computer. There are some tasks computers can do many times better or faster than a human, while other tasks computers will never be able to do very well. No computer is ever going to make an upset customer feel better. Computers are really good at tasks that involve repetition, accuracy, or large amounts of data.The step you pick to improve is closely related to which tool you choose.

    You can use an off the shelf program like a spreadsheet, or a custom written piece of software. Doing this well requires a good understanding of what’s possible with technology. If in doubt get advice from a technology expert who can help you figure out what’s easy, whats possible, and whats impossible
  3. Wait and review the results
    Once you software is doing, or at least augmenting, one step of your workflow, wait a bit and measure how well the entire workflow is working. A common mistake is to just measure whether or not that one step is working better or not. Tempting as that might be, I don’t think it’s something you should measure. It doesn’t matter if one step is working better if the whole system is working worse, and sometimes that happens.

    If you improve one step in your workflow that affects several other steps. This happens because the steps connected with each other and are not independent. Sometimes those effects are beneficial to the entire system, and sometimes they are not. The quickest way to find out is to make a change and watch the result. If the result is negative you can either undo it, or tackle another step in your workflow, if you think fixing that will be better.
  4. Rinse, repeat and simplify
    You can repeat the steps above as many times as you like. As you do you will find that the complexity of your software begins to grow. This is probably because you are using a different software tool for each step in your workflow.

    Every so often it’s worth getting all your team together and reviewing the benefits in your workflow, and comparing them to the complexity of your software. Maybe using the same tool for every step makes some of the tasks a bit harder, but the time saved switching software makes up for it. As a general guideline, simpler software is better. As Einstein said “Make things as simple as possible, but not simpler”
  5. Review regularly
    Now you have software working for you, you need to keep an eye on it. It’s a frustrating fact of business that things change. Customers want new things and you need to change the work you do. So you can’t get away with not changing your software. Keep following the process above and allow your software to evolve over time. If you stop, your system will get out of date, and will start to hold you back rather than helping you lead the pack.
By |January 5th, 2015|Software|0 Comments