What does humility in software development mean?

Software programmers and developers come in a variety of different types, and it would be silly to try to generalise. But can we just say, people involved in making something nearly invariably have a different perspective on that thing as the person who uses it as a tool in their work.

The simpler the thing, the more the mindsets match. In the days when hammers and dinner plates were made by hand, it would be easy for the person making them to understand what it would be like to use them.

But the more complex the item, and the more mental capacity goes into making it, the more the mindsets are likely to diverge, and software is about as complex a tool as it gets.

From our experiences working with software, it is easy to see what humility isn’t. When you get a sense that the programmer thinks that their software is the only software I’m ever going to use, or I’m willing to make a great deal of effort to work out how to use it. Programmers don’t typically think that, but they don’t typically think the alternative either (this is one of about 200 pieces of software I’m going to use today and i’d rather not apply a single shred of intellectual resource to how I use it).

For an extreme example, consider how the early iterations of mobile Google Maps seemed to be tracking where we were constantly and downloading updated maps, whether we were looking at the map or not. (I am not completely sure about this, but it certainly seemed to drain my phone battery when it was running, even if I wasn’t looking at it, and keeping it running when in a foreign country with expensive roaming charges was very dangerous).

Also in this category I would put websites which demand that we use a new password when we reset it, or a password with a funny character. I understand the demands of cybersecurity but my brain and your brain is not capable of remembering many passwords.

Perhaps you have 4 or 5 passwords you regularly use, with increasing complexity, as demands for complex passwords have increased, but you still use some of the very simple passwords  you set up in the early days of online transactions (or just 2006) and no-one as asked you to change them yet (and they are not the passwords for your online bank). Anyway you don’t want to remember any more.

Programmers appear to be (although probably are not consciously) the sort of people who think it is OK to demand that their customers think, since they don’t mind thinking themselves.

So we could define humility in software programming as the opposite of this. I recognise that you, my customer, are using about 200 different software tools with about 4 different passwords and you don’t want to remember any more. I will minimise the demands my software makes of your intellectual resources, and since waiting can be mentally taxing, I will make sure my pages load up fast. I won’t bring you anything you don’t want or don’t expect. I won’t try to sell you anything. I’ll make a tool which enables you to achieve your objective as easily as possible. And if something isn’t right I’ll make your life as easy as possible.

I have been involved in building software which satisfies none of this criteria, so I know how hard and expensive it is. But other software companies have bigger budgets than my project did. Is this a useful way to move forward?

 

 

 

Supercleverpeople are an interest group too

Supercleverpeople look after their own interests, and don’t mind making life harder for nonsuperclever people.

Clever people have:

Built legal and immigration systems where you win or succeed if you understand clever rules or can afford to pay someone who does

Built employment systems which end up paying salaries to supercleverpeople and leave the rest to fend for themselves

Built technology that many people struggle with (ever struggled to set up your phone, broadband or work your office computer?) – and seen nothing wrong with ever more difficult password requirements

Created marketing and marketing vehicles which exploit mental weaknesses like inability to resist urges, chasing short term hits, anxiety and need to feel recognised (even if in a fake way)

Built financial systems which aim to make it clear who is nonsuperclever with a ‘credit score’ and then leave this people unable to get a sensible loan when they actually need it although they are far more financially vulnerable than the supercleverpeople.

 

Why do nonsupercleverpeople put up with this?

Part of the reason is perhaps the taboo of identifying oneself as nonsuperclever. There isn’t even a word for it. The opposite of clever is ‘stupid’ which is highly deragatory and hardly appropriate to be applied to let’s say 95 per cent of the population.

There’s a fallacy that anyone can become superclever  through hard work – I guess it suits the supercleverpeople to perpetuate this myth – and it suits plenty of nonsupercleverpeople to perpetuate the myth too, if it motivates children to work hard. it can’t be true though.

Perhaps the supercleverpeople also exploit the fact that no-one is ever going to say “listen I can’t fill in this form I’m not clever enough”. So (for example) we end up with systems which are basically to keep the nonsupercleverpeople away, such as – it sounds like – the 85 page form for getting residency in the UK.

 

Perhaps we should look at the Donald Trump and Brexit elections as – to some extent -a fight back of the nonsuperclever. Perhaps supercleverpeople should even take this as a signal of worse to come unless the nonsupercleverpeople’s lives get made a little easier.

 

How should we fix it?

Well nearly all of the problems can actually be solved by superclever software which supercleverpeople can make.

 

We can build clever software which enables nonsupercleverpeople to learn skills which are useful in real jobs. Software which simulates real life, not just shares facts and does ‘testing’. So people can learn from experience.

We can make the regulatory and immigration systems much simpler, which takes a lot more effort. Where there is a genuine need for complexity the software can help manage it. We can do the same with our websites, broadband services and mobile phone support.

We can develop tools which make it easier to manage finances. If people have a track record of problems, rather than give them ‘bad credit scores’ banks could build systems with varying degrees of nannying, for example to only authorise use of a debit card for a purchase which the person can actually afford, taking into consideration upcoming standing orders for essential things (rent / mortgage / groceries).

 

[I write this by the way self identifying as a ‘supercleverperson’ based on coming top in maths in the first year of comprehensive school in my non streamed class. Perhaps I would never write this if I wasn’t].

 

Banking and mental health – the £bn fintech opportunity?

I read that the UK’s Money and Mental Health Policy Institute has published a report showing how people with low mental health struggle to work with banks and manage finances.

This can include difficulty remembering passwords, problems constraining spending, anxiety, problems making decisions, difficulty dealing with human bank telephone help staff. They could add difficulty obtaining loans when you really need it.

Now just about everyone I know experiences some of these difficulties, whether they have bad mental health or not, and that includes me. The opposite of bad mental health, I suppose perfect mental health, is pretty rare, if it exists at all.

So could there be a business opportunity making banking services which solve some or all of these problems – no passwords to remember, automatic constraints on spending, no complex options, tools to reassure customers that their finances are in order, e-mail support, and making loans easier?

All of these problems can be solved technically, although they generally aren’t being solved technically. We have a new league of tech-savvy banks about to launch in the UK, perhaps they could do some of this.

One problem with this business idea is how to sell it. Apart from in extreme circumstances (when there is no choice) people do not want to self-identify as having low mental health. But perhaps banks wouldn’t need to offer these services as specially for people with low mental health, they could just offer it to everyone.

In real life, we have places where people go to have their intellectual resources challenged – they are called universities.  The rest of the time, most people would really not prefer their intellectual resources to be challenged.

Perhaps especially, people with high intellectual resources, who generally prefer total control over whether they are being challenged or not.

This seems to me like a fact but it does not seem to be acknowledged very much by the people who develop software, who often think, perhaps unconsciously, that the “user” (as they put it) has an onus to make an effort.

Let’s go through how all these problems could be made easier.

no passwords to remember – voice passwords or fingerprints?

automatic constraints on spending – tools which automatically block cash withdrawls or debit card purchases if they would take the budget beyond a pre-set amount each month taking the month’s standing orders into account?

no complex options – everything very simple

tools to reassure customers that their finances are in order – how about a ‘do I need to worry’ service which will show that so long as the monthly salary payments arrive, there is enough funds to cover all standing orders and leave enough left over for living costs?

e-mail support – odd why businesses don’t provide this – it can’t be more expensive than telephone support?

making loans easier – if someone does need a loan, it could be automatic at a low interest rate – or specifically agreed against monthly payments which the person shows they are able to fit in with their other standing orders?

Add to this – if someone has a ‘bad credit score’ but a regular salary – then they ought to be possible to get a low interest loan but where they agree the bank can take the loan repayments against their salary before they can spend it on anything else – so the bank just takes the (hopefully low) risk that they lose their job?

 

I don’t understand Uber’s business model

For years we’ve had minicab companies in London which would arrive after a telephone call and take you anywhere, for an extremely competitive rate. Sometimes the rates are so cheap the driver could hardly be making minimum wage – £20 for a taxi ride which could take 40 minutes, and the driver has to go home afterwards.

Uber arrives promising to ‘disrupt’ this.

At the core of the operation you have a driver, a car, the costs of paying the driver and running the car, which are the same for Uber and for a minicab company. Any difference is in other factors – how much the administration costs, which a customer prefers, what the driver prefers, whether the car utilization can be improved, and whatever is spent on technology. How does Uber have the edge over Sams Cars, my local minicab firm, here?

Sams Cars has an inexpensive office in one area of North London with often one staff member. Uber has a big technology investment which it can share over many cities, perhaps one office covering a whole city. So it could work out cheaper per journey. But it may not.

How do drivers feel? I haven’t asked any. It is easy to imagine drivers at Sams Cars feel more part of an operation, if they are a valued part of the company and the company is valued by its customers. Although I don’t think they get any regular guaranteed income. An Uber driver gets ‘valued’ by its star rating on the website, which may not feel so great. I don’t know.

Can Uber help drivers achieve higher utility rate, for example finding a passenger on the way back? It is possible to imagine, since they have a bigger scale. It is also possible to imagine their utility rate is very low, since it is governed by how many drivers feel it is worth coming to work today. I would imagine Sams Cars probably makes some predictions and spreads the work around different drivers, once you get on its books as a driver. And minicabs also operate on a wide scale too, like London-wide Addison-Lee.

Uber has lots of expensive staff to employ, I would imagine Barack Obama’s campaign manager David Plouffe doesn’t come cheap.

Uber can be pretty cruel to its drivers, as I discovered taking an Uber in Mumbai once, where the driver felt obliged to follow a dreadful route recommended by the computer software through the back of people’s houses.

So what is Uber’s advantage – is it that customers prefer to book a taxi with some clicks on a screen rather than a telephone call? Or an obsession with mobile phone apps?

Is it that as a ‘hot’ Silicon Valley company it can get funding and use that to undercut the prices of its fares?

There are plenty of “Software for Domain Experts” angles here. In  which system are the minicab drivers happier and feeling more valued? In which system is the customer most comfortable with? Is the ‘winning system’ the one where the system works the best – or where the hype and the technology company’s agenda is winning?

Virgin Trains and seat reservations

For an example of non human centric automation, tere’s an example from my experience coming from York with 3 young children, with Virgin Trains last Sunday. We had reserved seats – but were told when we got to York station that the train had “no seat reservations”.

There had been some computer failure at the station where the train started its journey, so the reservation cards which are put on the seat indicating that the seat is reserved were not there. But we still have a ticket which tells us which seats are reserved.

So we have an automated system – designed to do a task – which had failed. What happens next?

As a passenger I have a dilemma. With a young family we pretty much need seats together. Should we go to the seats which are reserved and demand that people sitting in them move, although there are ‘no seat reservations’? That doesn’t sound like a comfortable conversation. Should we take the first seats we find together? If someone else comes on saying that they have reserved our seats, would we then move, or say ‘there are no seat reservations’?

Since the majority of population, I hate conflict, and like to do the right thing, yet I have no pathway of avoiding conflict here.

This is, of course, the sort of situation where a sociopath would thrive – a person who would be happy demanding that other people move out of his family’s seats, or refusing to move from seats reserved by someone else, because there are ‘no seat reservations’. The sociopath would nearly surely win in both situations. Virgin Rail has engineered a situation where the sociopath wins. Well done.

Virgin Rail could have made the situation better by making it clear whether that ‘no seat reservations’ meant that the seat reservations did not apply. Or it could have clarified that despite no reservations cards being on the train, passengers should still try to sit in their reserved seats, if necessary asking people in the seats to move.

The train guard actually made it worse, by saying (once we were on the train and sat down) and people with seat reservations should try to use them. Although this was pretty vague. Does he mean demand that people move if they are in your reserved seat?

A human centric system could have done more – it could have made one carriage of the train available to people who need to have seat reservations – people travelling with vulnerable people who cannot sit by themselves – such as young families.

The point to this story is to show that we have an automation-driven system – but not a people-centric system – and improving it would not be too difficult.

One of our customers is moving to SAP

 

One  of the customers of our small business is moving their supply chain to SAP. Not very interesting is it? They’ve sent me a long letter explaining it. I had to read it.

The letter explains why they are moving to SAP, they hope my business will benefit from their SAP, they are aligning all their businesses to SAP, I should give them my bank details if they don’t have it already (of course they have it already!) they will send me some further information before their ‘GoLive’ which “you the Vendors will see”. I should contact them if I have any questions and they value their relationship with me.

This is an example of non human friendly automation. They’re wasting my time with something I don’t need to do anything with and don’t care about, they’re subtely reminding me that my company is subordinate and needs to follow their instructions (although they haven’t actually sent any), and they’re willing to answer my questions (although not presumably why they sent this letter in the first place).

The last comments are an effort to sugarcoat their machine with a bit of humanity, but it makes it worse, it would be better if they considered me a human in the first place. “To: all suppliers”.

I guess this letter was produced automatically by SAP, including the translated versions. Doesn’t SAP know enough about my company to know this is a completely irrelevant letter? Clearly not. What matters is that they will “design, develop and deliver common best practice business processes and systems to drive profitable growth and functional excellence across all businesses”. That’s the machine again.

 

Defining our digital future

So many software discussions seem to resolve to one question – who is ultimately defining and driving the software – the customer or the software company?

Almost always, its the software company. The software come up with something they want to sell, and a business model around it, and they go and sell it.

When customers complain about software – it is unwieldy, inflexible, too complex, doesn’t do what they want – usually an underlying problem is that these concerns are not coming to the surface enough while the software is being bought.

Ideally there would be a different business model entirely, around ongoing services with complete flexibility, no-one being tied to one company.

When the software procurement process is designed to try to ‘hear the voice of the customer’, often it fails too because the customer is not sophisticated enough to know what it (as a company) wants, or what it wants is too expensive to build and the person with the budget overrules it, and so on.

We can’t change the fundamentals of the software industry very easily. But what we can do is create better conversations about what software would look like if the customer really was in charge – and that will give customers much better ability to get it built.

Because the thing is – when customers think hard about what software they want, they usually seem to come up with the same thing – a range of flexible, light, configurable (including user configurable) ‘apps’ and dashboards at your fingertips, and a powerful database engine, with standard data, underneath it.

How should the right conversations be set up to build this?

Perhaps that is the right question to ask.

Getting past the password tyranny

I was asked to submit my home electricity and gas meter readings this morning. I clicked on a link on an e-mail which took me to a mobile web page of the meter provider which .. asked me to enter a username and password.

Why is this still OK?

I’ve clicked on a link in an e-mail, i’m using the same phone I used last time, so the company can identify me fairly securely. And the data I’m entering, a meter reading, has no security value whatsoever.

I can’t see the password I’m typing because it comes up on a screen with stars. That’s a bit of a problem when entering the password with a mobile phone. It is a Blackberry, so I can at least feel which key I am pressing, which you can’t do when typing on a glass screen. For the 99 per cent of phone users who don’t have a Blackberry it must be nearly impossible.

Compare this to Google, which feels that it has identified me enough, once I have logged onto my computer, to show me all my e-mails without any other password entering at all.

The whole password system is becoming nonsense. In the early days, we could all use the same easy to guess password on every website and there were no problems. I understand we can’t do that now. But the idea of using a different password on every computer we logon to, and not writing it down, and using a mixture of upper case, lower case, numbers, punctuation marks, and in one particularly bad example, no repeated letter, is ludicrous.

Surely just about all of us have about 200 different logins to different systems we use these days.

The right answer is that the whole process is thought through much more deeply. How much risk is there of the wrong person logging into this? How sure can we be of the person without asking them to enter a password? If there is a password, why can’t we use a simple one? What are the risks if the worst happens and someone malicious in Russia finds themselves entering my meter reading? And if this does happen, how many flags would we have to know about it – the different device, different IP address, hinting at a different location, the meter reading very different from what the electricity company is expecting. Does the software company count how much frustration it is causing from people who would have liked to enter their meter readings but were blocked by the login screen?

This stuff doesn’t seem so difficult – yet it doesn’t happen – perhaps because the people like you and me who have to use the systems have little say in how the process is built. Perhaps a more interesting question is how this might be fixed.

 

 

Rigidity and flexibility

The conventional software model, provided by big companies, does not put any premium on flexibility. The customer should know what they want in advance, we build it, and it is much more expensive for us to keep changing it.

When flexibility is expensive, then everyone benefits from keeping everything standardised – the Model T Ford business model.

But software flexibility is much less expensive today than it used to be.

We can envisage a world where all the data software might need is available on a platform, it just needs someone to build a tool to help the various domain experts access and work with whatever they want, whenever they want it. They can try something out, throw it away and try something else.

Ultimately the domain experts could build their tools themselves and change them whenever they want – leading to ultimate flexibility.

Now like many things in the business world, it is one thing to imagine a better world, another to put the various business incentives in the right place for it to be built.

If software companies are in charge, they are unlikely to embed more flexibility unless customers force them to, or they can see a new business angle from doing so.

But if the customers are defining how stuff is put together, then everything changes.

 

Data management – and software for domain experts

Most industries struggle with data management – certainly the ones which we look at in detail do (shipping and oil and gas).

Data management is a problem for the organisation but not usually anyone’s individual problem, because leaving data in a mess today causes problems for the unknown person who has to make sense of it in 3 years time, and there lies the root of the problem.

If companies want to take the challenge seriously, then the solution probably comes to
– understanding the data flows which the company actually does
– coming up with agreed systems which will lead to the right data being stored in the right place
– giving all of the people in ‘crunch’ positions, who enter data into the corporate archive, tools to help them check that the data is in the right format
– people with responsibility for the ongoing quality of different types of data who have tools to check that data being entered is the right quality and format.

So you probably end up with a ‘Software for Domain Experts’ type structure with small ‘apps’ for doing specific tasks, entering data, checking data, checking the data which has been entered, which the domain experts use

And behind that, the corporate database.