Author: karljeffery

  • If software is driven by the customer then everything changes

    The software industry is driven in 2016 by software vendors – whose objective is usually selling complex software for high prices, which tie the client down.

    How can we be sure of this? Because if we start with software from the customer’s perspective we come up with completely different answers to the ones we currently have.

    A customer would most like their software to be highly flexible and configurable, present exactly what different domain experts need to know, perhaps have a range of ‘apps’ to do different tools which is separate (and from a separate supplier) to the company which provides the database and transaction engine below. No constraints from the way the data is stored.

    In other words, when we think about software from the customer’s perspective first, the ‘Software for Domain Experts’ approach almost naturally emerges.

    Moving further with this – the ‘internet of things’ is a completely vendor driven idea. Show me a customer who would like an ‘internet of things’. The domain we understand well, shipping, is a great playground for proponents of ‘internet of things’ because there is so much you could put a sensor on, yet the value generated is almost nothing, because the information experts actually want to know, such as how much fuel did my ship use today and how far did it move, can be generated with two sensors – a fuel gauge and a GPS.

    I’m not trying to bash the vendors – because they have done far more to drive the software industry than customers ever have. But I think it is worth us all understanding, when we get frustrated with software, or can see it can do far more, that is probably because there isn’t enough ‘customer driving’ out there. And if we could get customers driving more, we could end up with software which does more for everyone and potentially creates more value for everyone.

    How can we get there?

  • Learning from Pokemon

    Pokemon, and games like it, can model millions of people and things in real time.
    Why can’t we have software like that for our organisations?
    Problems happen in organisations because of the complexity, ‘it’s not my job’, and because very few people can actually see the full complexity.
    Companies are divided up into small divisions, each with a manager, and might run fine as division. But perhaps the only person joining the dots between each division is a senior manager with a lot to think about.
    But when big problems happen, such as a patient who dies for waiting for the right sort of doctor, or a road accident because of something it was ‘nobody’s job’ to fix, or an offshore oil drilling disaster, then it is clear to everyone that it would have been worth making more effort to connect the dots better.
    We are not going to advocate different ways to manage organisations, such as employing more people to connect dots between different divisions. There are plenty of other people doing that. We are going to advocate better ways to use software so people can understand what is going on.
    In 2016 it is possible to build software which simulates what is actually happening in the real world in real time – so that anyone can see what is happening from their desktop computer. The senior managers do not need to walk around hospital wards, drive on a dangerous road or visit an offshore oil platform to see problems which are happening or about to happen.
    The software can work out what problems are about to happen as well. Think about how Pokemon manages the world in real time. It would not be a computational challenge to think about what the Pokemon world will look like tomorrow as well, and guess what the players might do based on what they did in the past.
    There isn’t a safety hazard from bumping into a Pokemon, but there is a safety hazard from bumping into plenty of things in the real world.
    This means a shift in how we make our software. Currently most ‘enterprise software’ revolves around relational databases, a kind of filing system. This needs to change. Computer games are not built around relational databases (we imagine) and neither should enterprise software be.
  • Hospitals – why can’t we have software to manage their ‘systems’?

    I heard a story yesterday of a colleague who took a day off work to take his fragile elderly mother for some surgery in a hospital by ambulance, only to find that the consultant scheduled to do the work did not turn up. He said it was a stressful wasteful day.

    Your first reaction may be ‘this is completely normal, why are you telling me this’.

    Yes, it certainly feels like normal, what we might expect from a hospital in 2016. But why is it like this?

    I don’t know any more about the story than the two lines above. But I am guessing that a few things are happening.

    First the consultant is probably under a lot of stress. The consultant certainly doesn’t see it as her ‘job’ to inform patients if she can’t come to work or is engaged somewhere else. Perhaps the consultant had 4 other patients to see that day and wasn’t sure how long the other 4 would take?

    Second it is perhaps ‘nobody’s job’ to inform the patient, the patient’s family, or the ambulance driver about consultants who are not able to do scheduled work.

    Third the infrastructure in the ‘middle’, where people co-ordinate the ‘system’ of connecting patients with consultants, probably does not exist in a very strong way. Hospitals are co-ordinating patients in the hospital and consultants in the hospital, there are surgeries around the country co-ordinating local patients.

    But fourthly why is no-one thinking about this? There has been a big waste of resources (including spending money on an ambulance) which could have been saved with one text message.

    Hospitals are big complex organisations with lots going on – and this could have been one of tens of thousands of ‘meetings’ scheduled for the day. One central scheduling office would barely have been able to cope.

    My solution – and the ‘Software for Domain Experts’ solution – is to do it with software – but not software designed as medical software usually is (around patient records, or finances, or diagnosing health problems) but about whether the goal of managing patient health with minimum resources is actually being achieved. Software which monitors what is actually going on – and could tell that this problem is about to occur.

    Perhaps the sort of software which is designed for computer games, which can co-ordinate millions of people in a single environment, and work out where things are about to collide.

    Is that so difficult?

  • Facebook and entity centric thinking

    There was an interesting high profile news story over the weekend – Facebook removed a famous Vietnam war photo from a news story published by a mainstream Norwegian news organisation, which appeared on Facebook.

    The photograph included a naked child. Facebook, you see, does not allow naked children on its website.

    The Norwegian prime minister, in protest, put the photo on her own FaceBook page and it got censored again.

    Here’s another way to view this story – this is a battle between entity centric thinking and goal related thinking – and plenty of people understand the battlefield, even if they don’t view it in quite those terms.

    Entity centric thinking is something software people are very fond of. Software people are not alone in that. It means putting things into boxes and creating rules around it. Poorly managed bureaucracies and communism did the same thing. Most western governments and businesses don’t do it.

    Software people often like entity centric thinking because that’s what software is good at – particularly if software is designed around relational databases to begin with (with data in tables). Does this photo conform to our company policy yes/no? If no then don’t show it.

    After some pressure (from policy gathered by censoring the Norwegian prime minister), FaceBook backed down, with an explanation along the lines of, since this is an ‘iconic’ picture we will allow it.

    So that’s still entity-centric thinking. If photo does not confirm to company policy, next ask if it is ‘iconic’ picture and if ‘yes’ show the picture.

    Those of us in the real world would set about this challenge differently – we’d say, we don’t allow child pornography on this site. Is photo child pornography yes/no? We wouldn’t have a computer making this decision because computers can’t do this sort of thing, but just about any human could. (If FaceBook doesn’t want to have humans sorting all its photos, we could have a computer doing tier one, with a decision referred to a human if someone disagrees with the human’s decision).

    In the real world, most of us are pretty good at understanding people with respect to their goals. What do our children like? What does a potential business partner want to go with this relationship? Is this news organisation posting this picture because they want to serve all the paedophiles out there, or to tell a story about Vietnam?

    Note – there would be another entity-centric response to this, which could be for Facebook to ‘trust’ mainstream news organisations, and decide that if it is OK for Aftenposten it is OK for Facebook. But let’s say Facebook want to make their own judgements, this is how they should do it.

    Just because entity-centric thinking works with software running on relational databases, that doesn’t mean that is the only way to think or the only way to do software. Or that people living in 2016 need to get better at constraining their thinking into something which works with relational databases, which is a horrendous idea. (If your address can’t be described in a normal database, for example, if you live on a boat by a canal, then you can’t live there).

    A lot of people get this idea. The question is how to take the discussion forward.

  • Our book is ready for download

    Our e-book about Software For Domain Experts is available for free download here

    For a free copy on print please contact us

     

  • Eric Evans – software should solve a specific problem

    The hour long video of Eric Evans’ talk at his Jan 2016 Domain Driven Design conference in Brussels is well worth watching. Online here.

    One interesting point he makes is that software should be able to do some specific thing. That task is probably important and complex, otherwise you probably wouldn’t want software to do it.

    There’s plenty of objects in the world which aren’t useful for anything (think about your tool box, or perhaps a few people come to mind). It’s much easier to be useless than useful, you could say.

    If it is part of some big piece of complex software, as projects often are, it is good if you can somehow put a box around your project, to make sure everything within your box works and does something.

    A few thoughts of my own to add – can modern software tools make it much faster to build software which does some specific thing – lowering the bar of how important or complex the task must be, to justify building software to do it?

    For example – there might be many software tools which could help a police officer, which haven’t been built yet. Not transform his working life and cut crime but make a task easier, this sort of thing.

    Eric Evans also says that it could be a much better time now (as in Jan 2016, when he gave the talk) for Domain Driven Design, than 2003, when he wrote his famous book about it. The software frameworks are much easier to work with, software is seen as more of a craft, there is a drive to solving problems.

    These are interesting ideas.

     

  • Why Software for Domain Experts is like music

    In the world of domain expert software, there is a lot of talk about models. Its a confusing idea. What exactly is a model in software? It may be a diagram on a white board. But beyond that, even people who think about it all the time struggle to express what it really is. It is a very abstract idea. A model is a simplified representation of something. That’s not a very helpful definition.

    Perhaps here’s a better way to get the idea across – music.

    Popular music (by which I mean, any music which has been particularly popular at any time) expresses some feeling that people in that society have, in a way which no-one really understands. The Beatles reflected the atmosphere among young people in the late 1960s in the UK and the US.

    By doing this, music becomes a powerful ‘model’ in the centre of society. People can engage with popular music and understand how their society works on levels more subtle than anyone directly explains.

    Similarly, the idea of a ‘model’ in Software for Domain Experts (or Domain Driven Design) is of a central idea, which sits in the middle of the software structure, and reflects how the people in the wider business (who we call ‘domain experts’) see their world. The model reflects the knowledge of people who know the domain. You can study the model and learn more about the domain.

    Like music, a model can be continually improved, until you get it really good – something which gives out a great deal, and does it with enormous simplicity. The music has enormous power and can reflect the way society feels right into its deepest corners – in the same way, a good software model can bring the challenges of the domain to every back room programmer.

    How do you build the model? Like how do you build good music. You need an understanding of both the domain (the wider culture, in music’s case) and the technical issues of how to build the software (or create the music). Like good programmers, a musician feels intrinsically part of, and connected to, the domain.

    Then there are lots of tools to help you create good music and good models. But basically, you’re on your own. You can’t do it just with a book. You might get better with practise, you might not. What helps most of all is if you really want to understand the domain, and understand how to work with your tools, and create something to sit in the middle which expresses it.

  • My phone company shows the perils of automation

    If you think most work can be automated, perhaps it might help to think about the last experience you had with your phone company, I am guessing that your phone line (like mine) loses either internet or phone capability every couple of years and you have an excrutiating experience with your phone company’s automated system to fix it. (TalkTalk in my case).

    The phone system is not automated itself, you are talking to human beings rather than computers, but the humans are reading data from a screen and typing data into a screen. Or certainly feel like they are.

    The problem was something which occurred between my house and the telephone exchange, a few hundred metres away, and would have been solved most simply by me being able to speak to whoever last worked at the exchange, to inform them that (perhaps something like) when plugging a wire to connect up someone else’s line, they accidentally unplugged mine. I am sure managing a local phone system is difficult expert work. There are people who know how to manage it and it makes sense to speak to them directly.

    What I had to instead took 6 phone calls (many involving long delays on hold). The first call was disconnected when the person on the other end of the line wanted me to plug in my land line to a special socket while on the phone to him on my mobile, and when I went to a corner of the house under the stairs there was no mobile reception. (Doesn’t this happen to most people). No call back, of course, but me dialing again, waiting on hold, to speak to another person.

    This next person told me that the ‘automated test’ I had been asked to do on the phone company website had indicated a fault (although their automated system told me their test said it was fine). He agreed to call an engineer, which meant me calling another number to arrange.

    I phoned another TalkTalk number who arranged a BT engineer to come on Monday. The BT engineer confused my wife by saying he needed to dig up the garden, sent me a text message the following day saying it needed someone with underground expertise to fix, while TalkTalk were sending me text messages saying they thought it was fixed.

    I dialed the landline from my mobile and the phone disconnected, so I phoned TalkTalk, who insisted that the phone line was in fact fixed (despite a text message from my local engineering saying it wasn’t, and it wasn’t working). We worked out that the landline was actually diverting to my mobile, so when I called the landline from my mobile it would disconnect, and by cancelling the divert, the landline was now working.

    This might have been obvious for a phone company which deals with these problems all the time, but of course the phone company staff were just reading what they had been told to say. “Is there anything else I can help you with?”

    When I told the phone company person that their service had been dreadful, he thought I was complaining about the individuals I had spoken to. I wasn’t, of course, I was complaining about the stupid system set up for them to work to.

    A further idiocy – after the first phone call I was asked to record a phrase on their automated system, which I could repeat and automatically login next time. The phrase was something like ‘how wonderful is TalkTalk’s automated security system’ or something. I was pretty grumpy and this may have come through in my voice.

    But no, the system was actually not working. In the next phone call, I had to login in the usual way (first pet’s name), at the end of the phone call, asked to set my security phrase AGAIN. The third phone call I refused to do it.

    What is the moral of this long story. TalkTalk has made a complicated attempt to automate a process which is not simple but could be handled much more simply and cheaply for all concerned by just letting me speak to someone who knows what they are doing as early as possible in the process. This is what happens when companies try to automate too much or obsess about automation. The message needs to be heard that automation is not always a good thing.

     

  • Are narcissists and experts diametrically opposite?

    Expert = someone who likes to develop understanding about how something works, the cause and effect, how to reach a goal

    Narcissist = someone who is obsessed about controlling a situation, who cares how other people think about him (or her), does not have any intrinsic ‘self’, so can only validate based on how other people are behaving, is likely (but not definitely) of low empathy levels

    They are not obviously opposite. A narcissist can understand cause and effect, and is often highly motivated to achieve the goal of being publicly validated. Perhaps we can say, a narcissist can understand his or her own expertise.

    But can a narcissist understand or value anyone else’s expertise? Expertise which can help someone feel more valued? A narcissist in business or politics may value the communications people who can make him or her look good.

    But the narcissist does not have any incentive to validate anyone else, or understand anyone else’s value, unless it is a pathway to increased self validation. (If you’re building a website which makes me look good, you’re a great programmer).

    Expertise is about making something run well, reliably, achieving goals, and as a general thing, that is good, so long as the goal is good, and it usually is. The narcissist can’t appreciate an expert in general.

    The narcissist may even feel threatened by the expert, if it messes up the narcissist’s games and manipulation. (I can tell a great story, but you know how to fix the computer, which someone may value more).

    This is an interesting point in politics because we have two people which are commonly regarded as narcissists, Donald Trump and Boris Johnson – and one of the most important roles of someone in a powerful position of politics is assigning the people to roles of managing important government functions. Perhaps this is another good reason to keep narcissists away from power.

     

     

  • Theresa May seems like an expert

    Theresa May, who is at the time of writing about to be appointed Prime Minister of the UK, does seem like an expert, someone who thinks deeply and tries to understand how something works.

    We don’t know her that well. But it was impressive that although it was clear yesterday that she would be prime minister around lunchtime, she delayed making her ‘statement’ until 6pm.

    People say she seems ‘one step removed’ from what is going on – which perhaps means thinking deeply about what is happening and only sharing what she thinks when she feels sure it makes sense.

    She has been Home Secretary for 6 years and in doing so would have seen the hardest parts of government at close quarters.

    It is amazing that she still wanted to do perhaps the most difficult prime ministerial job since the war. What can be motivating that? Perhaps a genuine public service instinct?

    An expert is motivated by understanding and reaching a goal – a narcissist is motivated by power, control and gaining admiration. Both of them end up in high levels of politics. Sometimes it seems amazing that society is not better at telling the difference.

    (Or perhaps other experts are pretty good at spotting other experts, narcissists feel comforted by having other narcissists around, and there isn’t much crossing of the two).