Sunday, January 15, 2017

Kodak and The Mayor of Rotterdam problem

In The Living Company (one of my favourite business books, highly recommended) Arie de Geus describes the Mayor of Rotterdam Problem, it goes like this.

Imagine you have perfect foresight. You can see the future accurately. It is 1920 and you visit the Mayor of Rotterdam. You tell the mayor about how the events of the next 25 years, specifically about the destruction Rotterdam will suffer during 1940-1945.

de Geus asks: What is it reasonable to expect the major to do?

Think about this for a moment.

de Geus draws the following lesson:

The future cannot be predicted. But, even if we could, we would not dare act on the prediction.

So, I might say “You project is a train crash and destined to fail.” But if you have invested $100million do you dare to act on my information?

I draw another lesson from this story:

There is nothing we can do to change the future, even when one has considerable power.

Most people regard a Mayor as a powerful figure. But what could the mayor do in 1920 to stop Great Depression, the rise of Fascism and the pending war?

And thats assuming people believe you.

Why bring this up now?

Well… increasingly some of our most established companies face exactly this dilemma. The raise of digital business, coupled with disruptive innovation, agile working and new management models place CEOs of some of the largest business in exactly the Mayor’s position.

If you are the CEO of a business with a few million customers and you can see how digital disruptors will steal your business over the next 10 year d you dare act on the information?

Acting now might mean destroying profits for years to come, acting now might mean laying off thousands of workers and dropping millions of customer. Success if very very far from guaranteed. And thats assuming you can persuade people you were right.

There is one company where this has already happened: Kodak.

A recent MIT Sloan Review piece Willy Shih gave an account of Kodak which differs substantially to the commonly received view. Kodak is regularly held up as an example of a company that failed to recognise how digital would change their world and as a result went bankrupt. But…

Shih describes it differently, he says that Kodak managers did understand what was happening - after all they invented digital photography. The problem was: Kodak couldn’t change direction because of their ecosystem and the economics of their business.

Part of the Kodak problem was that had Kodak publicly acknowledged the decline in their traditional market they would have accelerated the change.

Kodak did try use their legacy business as a cash cow did enter the digital market this left a big problem: how do you manage, and motivate, people in the legacy business who will never make the transition?

The question to ask right now is: • What other Kodaks are there out there? - unable to change direction because of their legacy. • Which CEOs are Mayors of Rotterdam? - unable to act on accurate predictions of the future.

If you are the CEO of a Kodak an alternative strategy might be ignore the future, crank up the machine and do even more of the same - whatever your current business model is. Aim in the short run to minimise risk while maximising your personal return. Plan to jump out of the business yourself before it goes bang or just plan to blame the failure to predict the future.

Saturday, January 07, 2017

My dyslexia inside the corporation

This is the first blog post of 2017 so something a little different, a little more personal, a little speculative…

I’ve written before about my dyslexia (Dyslexia makes me stronger) and I’ve also noted that what is good for dyslexics what helps them learn, is usually good for the wider population too; i.e. if you make things dyslexic friendly non-dyslexics also find things easier.

A corollary for that might be: reading which many find a little difficult dyslexics find very difficult.

Now I’ve stumbled on something that has got me thinking, let me explain…

Something really unusual has happened to me for the second time within a year. I find myself working regularly inside a big corporate organization, specifically, I’m working with the same company regularly enough for them to have given me a company e-mail address, which means I need to log into corporation Outlook. It also means the corporation is sending me lots of internal stuff and people are communicating with me via e-mail and by referring me anonymous webpages and and and…

OK, for most of you this is normal, it was once too for me but I’ve spent most of the last 10 years working either with companies which aren’t big enough to do this sort of stuff or, I was wasn’t working with companies enough to get into this position.

I’ve noticed that I’m ignoring much of this material, I sometimes feel like I’m drowning. And I notice that I only skim read (at best) much of the stuff that is thrown at me. Its overwhelming and I have a very low tolerance level, perhaps because…

Above all what I notice is I feel troubled inside when confronted with pages and pages of corporate text. I even feel like crying. I switch off.

Little companies, growing companies, have this stuff too but much less of it. And usually you can find someone to ask. In the big company not only is there lots and lots but asking is hard - try calling IT support and you find out how much these people don’t want you to.

I’ve had this before but only now have I made a connection with my dyslexia because I’ve remembered where I’ve had these feeling before: at school and at University.

I realise that confronted with this mass of text I feel like I did when confronted with books at school.

It is not about reading, I love reading, I am reading several books for enjoyment at the moment and I continue to read the news papers and websites.

But confronted with masses of material I need to read, which not reading makes me in some way a failure, school text books and corporate webpages I feel inadequate, I feel intimidated, I want to cry and a bit of me feels like I’m at school.

It occurs to me that as companies rely more on automated systems, documented processes and policies, and they move away from conversation and human interaction then those of us who are dyslexic are at a disadvantage.

Sure I can read the words but I can’t process them.

Ironically, as I mentioned when I blogged about my dyslexia before, I think my dyslexia is an asset, I think dyslexia made me a better programmer. But equally dyslexia makes it harder for me to operate in a modern corporate environment. So by documenting themselves big corporates could be deterring or disabling the very people they want.

(I say disabling very specifically: Dyslexia is a socially constructed disability, it is only a disability because of the society we have created, in earlier, pre-text, societies it may be considered an advantage.)

Or is it just me? Do other dyslexics feel this? And what about the mass of non-dyslexics? - maybe they feel the same

This blog contains a lot of conjecture, free thinking if you prefer, I write to find out if others think this way - please comment.

Friday, December 23, 2016

Management - an end of year postscript

The end of the year is almost here, a year which has seen two mini-series in this blog: Management and Agile ERP. Well, I was catching up with my reading backlog a little something about management by Tim O’Reilly caught my eye.

Writing about the future of management in MIT Sloan Management review O’Reilly makes he following suggestion:

“a large part of the work of these companies [Google, Facebook, Amazon.com]— delivering search results, news and information, social network status updates, and relevant products for purchase — is performed by software programs and algorithms. These programs are the workers, and the human software developers who create them are their managers.”

O’Reilly’s argument is that the traditional management role was about organizing workers. Now the workers are often electronic systems and their work is governed by programs then the programmers are in effect the managers. Programmers - and others in the development arena - instruct the workers using algorithms and code.

In my management series one of the arguments I made was: no matter how self-organizing and managing teams are there is a residual amount of “management work”. In a team without (or just fewer) managers this work is spread around. Among the most obvious examples are the NCO managers (Scrum Masters, Technical Leads, etc.) teams often have. And, because management work is spread around among more people there are more people who need to understand management and business.

O’Reilly’s argument leads you to the same place.

If we assume more management and business decisions are being taken at-the-code-face then more programmers (and other technical staff) need to learn about management and business. Paradoxically, firms should have fewer managers but more management training.

Some aren’t going to like that, some want to take an engineering view of everything.

I suspect there is a corollary: if technical staff need to spend more time considering management and business issues then there is less time for coding, less space for technologies which require really deep understanding (e.g. C++) and fewer opportunities for those who only want to code and ignore all the management, business and political stuff.

Monday, December 19, 2016

Quite on the blog front - #NoProjects and Mimas

This blog has been a lot quieter in the last couple of months than normal. My energy has been going elsewhere.

If you would like to catch up with latest thinking - particularly #NoProjects - then please check out my latest work-in-progress book, #NoProjects: Correcting Project Myopia.

Early versions of this are available to buy and download now, most of my free time between now and the new year is directed at advancing this book (after one or two false starts.)

Come January my “spare time” time will be absorbed by reviewing the Agile on the Beach submissions (see the call for speakers). Which also helps explain the other reason for the quiet blog…

My summer programming endeavour is a thing I call Mimas - named after one of Saturn’s moons. It is a conference submission and review system for Agile on the Beach. I really should write a blog about the things I learned writing Mimas…

Like all software endeavours there is a lot more I could do. And like so many programmers I wonder…. could this be useful to other people?

Sunday, December 04, 2016

Technical liabilities: not technical debt

(This is refactored version of my earlier blog post Technical Liabilities and not Technical Debt - its shorter and contains few of the references to banking and finance.)

Wherever I go I hear developers talk about "Technical debt". Unfortunately the expression isn't used in the way Ward Cunningham originally intended it.

The time has come to retire the technical debt metaphor, in its place we should talk about Technical Liabilities. This is a small change in language with big implications.

The big big problem with talking about “debt” is that debt is not necessarily a bad thing; debt is often good, particularly in a business context. This leads to misunderstanding between engineers and non-engineers and can even lead engineers into poor habbits.

To many people in business - and particularly bankers - debt is good. Debt allows you to grow business and improve earnings. When an engineer says "This will add technical debt" the engineer thinks they are warning about something bad, but to a non-engineer business person, debt is often the preferred form of funding. So buying new capability with (technical) debt sounds like a good deal.

Let me go a bit deeper...

The essential part of Wards explanation was this:

"there were plenty of cases where people would rush software out the door and learn things but never put that learning back into the program, and that by analogy was borrowing money thinking that you never had to pay it back."

However the metaphor has been widely interpreted as something you might intentionally do. "Debt thinking" goes like this:

“We are (time and money) poor, but we can borrow from tomorrow’s riches, rather than write good code today we can save time (and money) by just getting something that works and later (when we are rich) we can come back and do all that good stuff which we should do. (And by the way, if it turns out that our initiative fails then we have saved effort and money.)”

This thinking is ripe both among developers and those who employ developers.

This kind of debt thinking is, perhaps, similar to a mortgage:

"I don't have the money to buy a house right now but if I borrow the money from a bank I can pay back the money over time with the money I save on rent."

Yet many engineers are the first to bemoan the fact that despite the best intentions they never get to pay back the debt. Instead they merely service the debt, that is to say, they (at best) pay the interest but never the principle debt remains. Indeed all too often the payments are not even sufficient to pay the interest which gets added to the principle.

With any debt the important question is: can you afford to payments? The bigger the debt, the higher the interest rate the greater the amount of todays resources (time, money, effort) that needs to be devoted to servicing the debt. Yesterday you borrowed so you could buy something beyond your resources, today you must devote some of your resources to pay those who provided the loan.

Over time "technical debt" massively hinders the ability of organizations to change both the software and themselves.

Technical debt is less more like a pay-day-loan than a mortgage: a loan you take when you have no choice, the high interest rate can be crippling, payments eat into your ability to do any useful work.

Only those who are desperate and/or financially naive would accept a pay-day-loan. Let me suggest those who willingly take on technical debt similarly desperate or technically naive.

This logic is why I say: There is no such thing as quick and dirty, only dirty and slow.

So, talking about technical debt is loaded with problems, when is a debt good? when is it bad? what is the interest rate? do those who advocate incurring debt know what they are saying? And do you have a repayment plan?

Simply changing our language from Technical Debt to Technical Liability removes these problems.

Liability is something neither business and technical folk consider good. If I look at my dictionary it tells me:

"Liability:

1. Subject to an obligation

2. Exposed to a possible risk

3. Responsible for

... and some more..."

These attributes, both in a technical setting and non-technical context, can be agreed by everyone.

Businesses have to list liabilities on their balance sheet and reducing the liabilities produces a more attractive balance sheet. (Debt on the other hand is listed as an asset on bank balance sheets, and even Apple sometimes chooses to issue debt rather than use capital.)

Let us let "Technical debt" go back to Wards original meaning. Lets talk about Technical Liabilities in our systems.

Technical liabilities that cost us because they create obligations - obligation which slow us down, obligations which must be repaid; and they create risks, we don't know when an obligation is going to bite us.

Sunday, November 27, 2016

Technical Liabilities and not Technical Debt

My last - frustrated - post finished with this line:

“banks are collecting technical debt the way they used to collect sub-prime”

I’ve always disliked the tech debt metaphor, in part because the way it is generally used is different to Ward Cunningham original defined technical debt and in part because those using it often have a simplistic understanding of debt - for example, credit card debt (which is generally to be avoided) is different from mortgage debt (which many of readers are only too glad to take on.)

A couple of years ago Chris Matts and Steve Freeman suggested a better analogy: an unhedged call option. While technically correct this metaphor required one to understand financial markets and options, most people outside the financial arena (and a good few inside it!) aren’t familiar with such concepts and so the idea floundered because the metaphor was more difficult to understand than the thing it was describing.

Still, Chris and Steve instincts were right, especially in financial arena’s the tech debt metaphor may be doing more harm than good. For a banker collecting debt is good… let me explain.

For you and me, as individuals, a debt is something I have to repay, it is a call on my future cashflow. For individuals - and many non-financial companies - a debt is a liability. As such we would rather not have it.

But for a bank a debt is an asset.

The bank holds the debt, when I take out a loan I promise to pay a bank sums of money in the future. Therefore my liability is their asset. It is two sides of the same coin.

Conversely, for a banker liabilities are things they own other people, e.g. my savings. When I place £1000 in my savings account it is an asset for me but a liability to the bank because the bank need to pay me £1000 at some date in the future. (Importantly, I decide that date and am unlikely to forwarn them.)

Bankers want more debt because debt is an asset. Debt is good.

So every time as software engineer says to a banker: “Doing it this way will create more technical debt” the banker hears “Doing it this way created more assets.”

One of the problems that occurred in the 2000’s was that banks found a new way to take on even more debt. The debt was packaged in technical ways “collateralized debt obligation” and “tranches” and such which allowed the banks to assume more debt. Things went well for a while and bankers believed they had found new way to make money. The problem was these debt packages were hideously complicated, so complicated in fact that many of those trading in these instruments didn’t understand them.

Nor did the banks own risk officers.

Nor did the regulators.

Does this sound familiar? Isn’t this technical debt?

What happened next made things worse: new instruments were divised by some of the people who didn’t understand how the original instruments were structured. In Fools Gold Gillian Tett tells of how the original JP Morgan team who devised these debt products warned as other banks introduced products which they could see didn’t make sense.

Doesn’t that sound familiar?

Doesn’t that sound like the Chief Engineer telling the Captain “She cannae take it, Captain” and the Captain doing it all the same? (Did Star Trek condition those in command to ignore the advice of their engineers?)

Banks aren’t unique here but their business model makes the problems more acute. Even outside of banking the technical debt metaphor has encouraged “debt thinking”, i.e. the idea that one can borrow from the future to get something delivered sooner and pay back later. This might be viable if we treated such debt as a mortgage which allows an asset to be purchased now in return for a long term payments plan.

However when programmers use technical debt to borrow from the future it is more like a payday loan which very quickly balloons and demands increasing amounts of our capacity (cashflow) to service the loan.

Banks are an extreme example of debt funded businesses. Most companies balance the amount of debt they take, if they need more money they may borrow it or they may ask shareholders. In general reasonable to see companies as getting half the money they need from shareholders and half from borrowing.

But banks don’t.

Banks may get less than 10% of their funds from shareholders, they rest they borrow. Anat Admati and Martin Hellwig in Bankers new Clothes explain this in detail but basically a non-financial company couldn’t do this because there is a high risk the company would go bust. But a bank can do it because in the event of failure they believe (and RBS proved) that the government will save the bank.

In other words: banks pile on debt because there is someone else who will save them if something goes wrong. (Economists call this “moral hazard.”)

It is a common business practice to borrow (increase debt) to improve returns so bankers aren’t alone in seeing financial debt as good but they are extreme.

So the question is: Do bankers believe they can take on technical debt because someone else will save them?

I can’t answer that question but clearly engineers view debt differently to bankers. Its more complex than a simple failure to understand.

Bank IT runs on a project model: as I say in #NoProjects this model encourages cutting quality because of goal displacement and the erroneous idea that it will be “done.” Even if bank managers don’t believe it will ever be “done” they can see their involvement ending, perhaps they are contractors, or perhaps they will move onto another “project.”

There are plenty of companies out there, be they outsourcers or tool vendors, who are only too happy to say their service or tool will solve the problem:

“Tech debt too high? No problem for Far Eastern Outsourcer No.1, we can fix it!”

“Do you suffer with long testing cycles? Then get Cyber Tester 3.0, it will find your bugs and shrink the cycle quicker than you can say contingent convertible bond

As Willy Sutton is might have said: “I sell IT to banks because thats where the money is.”

So is there a way out of this?

Well, there is one more complication that might actually offer a way out.

Another dimension to banking is time: the loans that banks make (their assets) extend over the long term (25 years for a mortgage) and the bank have little power to force repayment. They are said to be illiquid - it is difficult to cancel an existing loan so you can’t turn a loan you have extended into hard cash very easily.

But, the deposits banks accept (their liabilities) are very liquid. I can get my money out of a cash machine at any time and leave the bank with less money - ever wondered why banks pay higher interest rates on fixed savings?

Some say it is this problem that banks exist to solve: turning short term liquid deposits into long term illiquid loans; matching assets and liabilities on different time scales. (Mervyn King has as interesting discussion about this in The End of Alchemy.)

When we build a software system we are building an asset.

The system itself - retail banking systems, trading platforms, risk management systems - are long term investments and become major assets. Some last decades but they are illiquid, changing systems is hard. RBS has recently aborted a demerger because of the difficult of building a new retail system (FT: RBS chief warns it may fail to sell Williams & Glyn this year).

Conversely, defects in these systems (bugs) and poor architecture (what is often called technical debt) are liabilities. More importantly, like banks financial liabilities, these can strike at any time. I can visit the cash machine today and an unknown bug can crash the system today. Similarly, a poorly designed sub-system - say there is a singleton in the system - might not crash a system but can slow down operations, enhancements and so on.

Sure these problems might not appear today, but they might, likewise I might not visit an ATM and withdraw cash today, but I might.

Therefore, let me suggest that we drop the language or Technical Debt. (Or perhaps let Technical Debt return back to Ward’s original meaning.)

Lets instead talk about Technical Liabilities:

Technical liabilities, in software, are sections of code, even entire systems, which because of their (poor) design are difficult to change, significantly hinder enhancement and are fertile ground for defeats. Such code often lacks unit tests and coherent design.

Such liabilities are highly liquid and problems may transpire at any time - impeding performance of the system itself or enhancements by programmers.

In building an asset some liabilities will be incurred. But,

  • a) it is possible to minimise these liabilities while building and
  • b) these liabilities can be reduced with investment.

Reducing the liabilities will make the asset more valuable itself and enhance the asset’s ability to change in future.

Replacing the words “technical debt” with “technical liabilities” is a small change to our language, one we can all understand easily, removes a poorly understood metaphor that is open to misinterpretation.

Wednesday, November 02, 2016

Banking systems stink - the pain of an botched HSBC release

I’ve had a very frustrating morning, and it all comes down the failure of bank IT systems - particularly a software release failure at HSBC. Gee, their systems are flaky.

I was trying to buy tickets at Eurostar.com for my trip to Lean Kanban France in a few weeks. First I tried to use my American Express card (I hate it, I only use it for work expenses) and I got the now traditional “Service not available -Unhandled Java exception …gavity.exceptions…” at the final payment stage - you know the pocky little box you have to put three letters into? - I’ve had this error before elsewhere and I think its because I block pop-ups on Firefox. Annoying but nobody at AMEX care so that is that.

So I repeated the transaction using Chrome and my Mastercard - issued by HSBC but branded John Lewis.

And again at the final security page - Arcot’s 3D Verified by Mastercard bit - the page errored. Not a horrible unhandled Java exception but an error just the same.

So I called Eurostar - because something similar happened a few weeks ago and they took my booking by phone. Only this time they insisted that it was the banks fault - like two banks fail? Didn’t anyone ever tell them “Select isn’t broken”?

This time they insisted the problem was with the banks, to make a booking over the phone would cost me £10 - something they waived last month. I even went as far as to speak to a supervisor who continued to insist he wouldn’t waive the fee - which I know from last month he has the ability to do.

Instead he told me it was probably my Mac that was the problem.

Seriously, he told me to use a phone instead. 10 years ago saying “don’t use a Mac” might have been acceptable but now?

Bad customer care on both points.

I gave up, I fell back on Safari and another card altogether to make the booking.

After several tries and a long wait I finally got to speak to HSBC Mastercard and this is what I discovered…

  • HSBC Mastercard don’t currently use Arcot security but intended to start on 9 November
  • But the release has been pulled because of technical difficulties, they don’t know when it will occur
  • But the message had gone out to retails that they were to start (remember, today is 1 November so they change wasn’t scheduled for 7 more days)

This also explains a couple of other recent online purchase problems I’ve had with this card.

This implies that either:

  • When a seller system (e.g. Eurostar) calls the HSBC system (“is_using_arcot_security()”) the HSBC system is replying “True” when it should say “False”

Or

  • There is a piece of system configuration that HSBC publishes to sellers (“<is_using_arcot_security>True</is_using_arcot_security>”) which has been pushed out prior to the update and that a) this config has been released too early (its not 9 November yet!) or b) else has not been rolled back.

Either way HSBC have bungled a software release. Of course, it might not be HSBC, it could be Arcot, or rather their current owner CA - who were fingered in the RBS outage a couple of years ago.

Which also might explain why I spent over 30 minutes on hold to the call centre (plenty of failure demand).

And we still haven’t discussed by HSBC pulled their release in the first place, clearly something went wrong to cancel the 9 November release - my money is on low quality.

When will these companies learn: high quality in software is faster and cheaper.

Continuous delivery is about risk reduction.

(Well, they are probably mainframe systems so maybe I should be a little forgiving on the second point.)

Now someone at HSBC will probably get into trouble for sharing so much information with me. Well its a good thing they did because I wasn’t going to hang up until they did. Thank you, you did the right thing - unlike Eurostar.

I write this both to relieve my frustration and in the hope that it might make HSBC (and AMEX) do something about this.

(I should also point out: none of these companies have ever hired me. If they had I’d probably keep quite because I avoid blogging to specifically about clients.)

But you know the really worrying thing about all this:

Our modern banking system is based on the assumption that the Government will always bail out a failing bank - the fear of the payments system failing is so great governments will do anything, thats why we rescued RBS.

Now it seems banks are failing to maintain the payments system anyway. The banks are collecting technical debt the way they used to collect sub-prime. Central bankers throwing money around won’t work.

Who will save us this time?

Monday, October 24, 2016

Lean Product Manager - a new endeavour:

The state of Product Management in the UK has long been on of my bugbears. Anyone who has seen my “Requirements: Whose job are they anyway?” will have picked up on some of my concern. Well, I’ve finally decided to do something about it…

Together with Monika Turska I’ve been putting together a two-day course focused on modern product management called “Lean Product Management.” We are going to be running it with Learning Connexions in London at the start of December. For the first run or two you’ll have both of us delivering the course, after that we’ll see what happens.

Whether your title is actually Product Manager or if you are a product manager labouring under the title Product Owner or Business Analyst we think you’ll learn something on this course.

We’ve structured the course around three themes which we see as key to filling the Product Manager role well but poorly understood:

  • The Product Manager’s role: understanding the purpose of the role and how product manager interacts with the customers, market and their organisation in order to maximise the value of the product.
  • The Product Lifecycle: how to choose the right tools, measure progress, set actionable metrics through the product life cycle from a prototype, MVP, maturity and product decline, and how to identify opportunities for product business pivots.
  • The Customer Lifetime Value (LTV): identifying and optimising the value proposition and customer engagement, and how this changes for innovators, early adopters, through maturity and laggard adopters.

There is not “Agile” in the title for two reasons, a) the focus is on “what should be built” and b) Agile is pretty much a given in innovative environments. If you are not actively doing “Agile” your probably doing something better, or else you’ve already gone out of business.

Anyway, let me know what you think, or better still: book a place today.

Thursday, October 20, 2016

Feedback & testing wanted - please help!

Can I ask for some help, please?

Some testing? Some feedback? Please

Here is where I need the help: http://mimas-aotb.appspot.com/ - now let me explain…

Agile on the Beach 2017 is in July next year so the whole organization schedule has to move up two months: we’ll be opening the call for papers towards the end of November or start of December.

But I have a problem.

Last year we had close to 250 submissions from over 100 potential speakers. We have six committee members voting in two rounds on the submissions. And I try to give as much feedback to those who submit as I can - this year it took nearly six hours to give feedback to everyone who wanted it.

As a result I have a lot of work in the background.

After 2015 I thought: we need some tool to support us. But when I looked none of the submission review systems I found really fitted our needs. For 2016 I’d left it to late so we had to do the same as 2015 but it got me thinking…

Add to this, we’d like to involve more reviewers to spread the load and get better reviews, the current system would make too much work for me, i.e. its not scalabe.

In the summer I started writing my own system: Mimas - named after on of Saturn’s moon.

Here it is: http://mimas-aotb.appspot.com/

Its on Google App Engine and you’ll need to log in with a Google account.

I’d like to invite you all to play with it and let me know what you think. And especially let me know if find something that doesn’t work.

A Dummy AOTB 2017 conference is set up but you can create your own conferences which you and everyone else can see them too. There are some permission controls in place but any conference with the word “Dummy” in the titles will relax permissions so you can try it with as a speaker or reviewer.

Note: each conference has state, there are some things you can only do in some states, e.g. conferences start closed and then need to be opened for submissions. No reviews can occur until submissions are closed and round 1 starts, and of course, round 2 cannot start until round 1 is complete.

Please send me any feedback, all is very much appreciated: allan@allankelly.net.

One more thing: In writing this I kept telling myself “This is only for AOTB, do what AOTB needs, nothing more.”

Inevitably, now it is nearly finished I do wonder “Umm, could others find this useful?”

If you think you might find this system useful, or just if you have an opinion on whether you or others would find this useful please mail me and let me know. I’m interested to hear anything and everything.

Were I to make this more widely used the first thing to change would be the track listing, they would need to be configurable, I’d also need to revise the voting methods, at the moment it is set up for the Agile On The Beach procedure, and and and, …. please mail me if you think of something.

Tuesday, October 18, 2016

Software diseconomies of scale - any research?

To say last October’s post “Software has diseconomies of scale - not economies of scale” has been my most popular post ever is something of an understatement! It has been read tens of thousands of times after being picked up by some very popular publications and newsletters.

When I wrote the piece I was writing largely on intuition. That software development experiences diseconomies of scale started as hunch, gradually I could see more evidence but when I published last October I didn’t have anything that would stand up to academic scrutiny - not that I was aiming for a peer reviewed publication.

Since then I’ve become aware of several pieces of research which do show the same phenomenon and do stand up to academic standards, plus I’ve become aware of several people who have made the claim earlier than myself.

So, for those who want to dig into this subject some more let me record the evidence.

From Aristotle to Ringelmann” (or better an open download of a preprint version): in this paper Ingo Scholtes, Pavlin Mavrodiev and Frank Schweitzer at ETH in Zurich examined open source code bases and team sizes. In their abstract they conclude:

“Our findings confirm the negative relation between team size and productivity previously suggested by empirical software engineering research, thus providing quantitative evidence for the presence of a strong Ringelmann effect.”

The term “Ringelmann effect” is new to me but describes what is seen in software teams - and elsewhere:

“The Ringelmann effect is the tendency for individual members of a group to become increasingly less productive as the size of         their group increases” Wikipedia

Another academic paper is Economies and diseconomies of scale in software development by Comstock, Jiang and Davies. Unfortunately, despite the title this paper focused on constructing a model for effort and value in software development than drawing conclusions about economies and diseconomies. So yes it is about software economics but not a lot about economies and diseconomies, more software accounting. The authors offer no conclusion of their own in that respect.

That said there is some evidence here. The authors note several earlier studies which had mixed results, some showed diseconomies of scale but some also showed economies. They also point out that at least two of the more established forecasting models (from traditional backgrounds), the Putnam and CJD models, assumed diseconomies of scale (I’d never heard of either of these models before!).

It a shame that some of this knowledge has existed in some academic circles for several years, it seems to be another example of how academic papers hidden behind paywalls prevent the spread of useful knowledge. (My initial attempts to get this paper met with paywalls but in the link above I tracked down a downloadable version.)

There is an important observation built into this paper, almost by accident: the optimal team size is not fixed, it will depend on the size of the undertaking and the duration of the effort. I am often asked “What size should a team be?” and several Scrum advocates have stated “the team should be 7 people plus or minus 2.” Clearly the right size for any undertaking will depend on multiple factors.

Away from the academic world there is some more support for diseconomies from other observations.

In a blog post about two and a half years before mine Jesus Gil Hernandez made exactly the same point, “Diseconomies of Scale in Software Development.” Jesus also makes the point that if we want to forecast and plan large software initiatives we need to take such diseconomies into account.

Diseconomies of Scale and Lines of Code” is blog post from further back, 10 years ago, from Jeff Atwood’s Coding Horrors blog. Jeff also suggests diseconomies of scale but then his blog goes on to focus on lines of code and why its a poor metric (and it is). Jeff also points out that Steve McConnell discussed diseconomies of scale in his 2006 book, Software Estimation.

What is becoming clear is that the possibility of diseconomies of scale in software development have been known about for a long time and my argument has some validity. What we need now is more research to get to the bottom of this…

Unfortunately I don’t have the time or resources to get do such research, I’m happy to collaborate, any academic or PhD student out there fancy picking this up as a research question?