Category Archives: IT/IS Management

Software Development Science

I’ve tried to write this post before https://andywootton.wordpress.com/2015/07/07/software-life-cycle-part-2-from-craftsmanship-to-computational-science/
but I just answered a question about ‘software engineering’ on LinkedIn and I’m pleased with the brevity:

Agile software development is the application of the scientific method to understanding the requirements for a software product. Each iteration is an experiment to confirm a hypothesis of what the customer should really have wanted at the beginning, if they’d known what they know now.

Is this Important or Urgent?

This post refers to a technique often used in Agile software development, including within the Scrum framework. It is not an introductory text so not recommended for non-agilists.

‘user-stories’ are classified as: Must (do), Should (do), Could (do) and Won’t (do), known as: MoSCoW. User-stories are then usually prioritised by an integer representing value, which represents a calculation of return on investment, or benefit:cost.

Paul Oldfield, Chief Referee at LinkedIn ‘Agile & Lean Software Development’ group said:

I find a bit of a problem with MoSCoW – distinguishing between “Must have eventually” and “Must have in release 1”. Get beyond release 1 and a high value “should have” can be prioritized in front of a low value “must have”.

And then, a lot of the “must have in release 1” turn out not to be, if we look closely.

“If you want all these in release 1 you get nothing for 6 months.
Or you can get these in 2 weeks, those in 4 weeks… would you like that?”

I gave (a slightly worse version of) this reply:

I think MoSCoW is about ‘importance’ not ‘urgency’.
Urgency comes into the prioritisation choices when the benefit of the story is time sensitive.

Delivering benefit early starts summing value for longer, so total value delivered in the life-time of the product or service will be higher but now we’re talking about delivering a different absolute ‘spot value’. Putting it another way, value can be a function of time.
e.g. “If this isn’t ready in 2 weeks then we’ll be fined by the regulator” or
“We need this before the Summer Sale starts. If you miss that, it’s useless until Christmas.”

I didn’t know this before today. I’m sharing the idea in case it helps someone else or they can improve it and give me a copy. It’s how things worked before science had to make a profit.


Talking Trees

I ‘done a speak’ at Ignite Brum recently.

I have a rational fear of public speaking to large audiences. I decided to face it. At ‘Staffs Web Meetup’ I gave a fairly techie 10(/20) minute talk about Ted Nelson’s concept of intertwingularity. When I saw a plea on birmingham.io for speakers at Ignite Brum to replace others who had dropped out, I imagined my usual cluster of geeks in the upstairs room of a pub, not the lights/action/movie comedy glamour of the stage at The Glee Club. I’m all for a bit of clubbing but I was well outside my comfort zone.

‘All I had to do’ was reduce my talk by 75%, simplify by about the same, for a general audience and produce exactly 20 slides that would auto-advance every 15 seconds. It was described by someone on the night as “Powerpoint as an extreme sport”. That was a true story. I recommend the challenge as an exercise for the reader. It is hard work in preparation and frantic in execution but it doesn’t give you much time to panic about the faces looking up at you; anyway, you’re blinded by the spotlights.

Watch as I drop behind the pace set by the projector. My best joke and some local politics was lost in the bunching on the corners but I present ‘Everything is Deeply Intertwingled (Smash the Hierarchy!)’

Thanks to @iamsteadman for allowing me to try this and making the video available (I’d never have agreed if I’d known that,) the other speakers and the people who made us all feel welcome: @probablydrunk, @carolinebeavon, @grunt121 and the audience.

We broke social

I discovered something alarming yesterday: social media is losing to messaging.

There must be a drift back, from open collaboration to closed channels, from thinking in the open to “Can I have a word in my office, please?”. It isn’t healthy for anyone to be in control of The Message, or for conclusions to have been agreed before meetings begin.

Everything I have done in the last couple of years has led me towards networks, away from the control mechanisms of hierarchy. Please let us not give up now, just because being more open is harder work for dishonest people. If good team players are better, imagine what the awesome creative power of players in multiple teams with overlapping goals could achieve.

Managing a Post-Hierarchical World

[ This post is a version of my reply on LinkedIn to a post by Euan Semple,
‘A Plague of Managers’ (upon your WikiHouses?).

See: https://www.linkedin.com/pulse/plague-managers-euan-semple ]

There’s an interview with Jimmy Wales of WikiP in CMI’s ‘Professional Manager’, Winter 2016. He says a manager has five functions: planning, organisation, co-ordinating, commanding and controlling. Wales would like to change the last two functions to: inspiring and coaching.

The ‘Agile movement’ is pushing the remaining three functions towards fluid planning and self-organised, networked teams rather than hierarchical power-structures. That suggests to me that the only function left is picking sufficiently inspirational strategies to keep the attention of your teams and to meet their coaching needs. It seems an environment in which teams should be appointing their managers.

If I was a manager, with no remaining knowledge of ‘how things are done now’ myself, I’d be fighting against all this modern nonsense and trying to maintain the status quo; lashing myself in position at the top of a tree made of single-points of failure for information flow, so that I could cut off any branches as threats emerged.

Ah… I see!

Learning to grok Lispen

This is not my late entrance into the Unix editor flame wars. I’ve always disliked vi and emacs about equally. I’m sure that both are amazing if you have a memory and use them every day. I don’t. I am, however, interested in computational models. The Unix ‘small pieces loosely joined’ philosophy had always leaned me towards vi. I knew emacs had ‘Lisp inside’ but I didn’t care. I had a bad experience with Lisp at university, but what really put me off was that emacs isn’t just an editor; it’s an environment. It duplicates things that happened elsewhere in Unix. You go in there and you don’t come out until home time. In the Winter, you don’t see light. It is neither small nor loose and I didn’t understand why. Was it the first IDE?

Richard M. Stallman hacked on emacs at MIT’s famous AI Lab. The Lab and its culture were torn apart by a war over intellectual property  of the family Lisp machines. It was a difficult breakup and RMS was abandoned by both halves of his family. In reaction to creeping commercialisation he started the GNU project which later enabled GNU/Linux &c.

I’ve realised only recently how incredibly unimportant Unix was to RMS. He simply wanted somewhere to run a Lisp environment that couldn’t be taken away from him, or others who subscribed to the original MIT AI hippy culture and ethics of free sharing of code and information. He ported a ‘C’ compiler to port emacs and started a movement to maintain everything else he needed.

The latest trend in current computing is ‘platforms’. We have gone back to worrying about the ancient concern of application portability. We’ve divided into language tribes: Java, JavaScript, Ruby, Python, .Net, Apple, Google – each with their own library system, to free us from the tyranny of operating systems, designed to free us from hardware. RMS did that in the 70s/80s.

I fought against the idea of Clojure (a Lisp dialect) running on the Java VM rather than a real OS. Another version runs on .Net and one is being ported to JavaScript. I get it now. People want to get stuff done and to do that, they need the support of a tribe (or two.)

MIT’s free educational videos contributed to my understanding of these issues. They used Scheme (another Lisp) before moving to Python to get access to more libraries. Perhaps they should move back to Clojure.

 

Slack(er) in the system

Someone told me recently that there is no point in ‘knowing’, as other people only value you for what you ‘do’. While I’ve been writing, the two have been intimately linked.  I’ve experimented to confirm my hypothesis that the less focused I am, the more conceptual connections I make and creative ideas I have, suggesting that in any period of time, productivity and creativity lie in opposite directions. I grow ever more certain that creative ideas are what allows humans to make our great leaps forward, so that things we thought needed to be done efficiently become irrelevant.

Society should be more tolerant of us slackers, dreamers, artists, pure researchers, collectors of tales; those who are interested in odd things to an unhealthy degree. Productivity kills innovation. Efficiency drives stifle improvement and increase entropy.

WARNING: Too much ‘management’ may be harmful.

Hacktervism as a Distributed Team Sport with a Youth League

My list of interests includes tech, art and politics but I’ve never tried doing them all at once before. The inaugural meeting of Open Rights Group Birmingham recently was the ‘a first time for everything’ moment.  I found the way the techies, artists and political infuencers came at an issue with their own practices suggested that we could do great things together.
Twitter: @OpenRightsBrum
Blog: https://openrightsgroupbirmingham.wordpress.com/

Last week, as a volunteer mentor at Birmingham City University for Young Rewired State’s Festival of Code 2015, I was on more familiar territory of working with a group of young techies with a shared product development goal. Neither I nor my fellow mentors Simon & Bhish had been involved before and as the week wore on, we knew our emphasis needed to shift from working prototype to presentation skills. We suspected that we were slightly out of our depth in this area and that was before we saw the competition.

Even in the heats, there were no bad ideas. Some of the teams presented with such incredible passion and strength of personality, that it was easy to miss that they hadn’t shown any evidence that they had written any code that worked. Our team had gone from 6 quiet kids who’d never met on Monday, to a functional team developing front and back end systems in parallel and delivering a working prototype for an earthquake detection and mapping system by Thursday evening. They can be very proud of themselves but they were not selected for the semi-final. I hope they’ll continue working on their product.

I noticed that there appeared to be a divide between kids who had become skillful coders then looked for something to do with that skill and the teams who want to change the world so are learning to code. Imagine if they could get together in multi-skilled teams, including people with great artistic and presentation skills. They’d be unstoppable.

Last night, I went to a party with Dudley Green Party and Natalie Bennett was the unofficial guest of honour. She said it had proved difficult to organise IT with volunteers. I think it could be done, if you had a few cat-herders, a broad mix of skills to draw on and a distributed development model. First, find your Green hackers; then find out which night they have least homework.

Can You Hear Knocking?

In the summer after I left school and before I started university, I cleaned cars at a car showroom. The junior mechanic in the workshop had an ancient Ford Anglia, that he was customising. At lunch time he entertained the more experienced mechanics with tales of his exploits as he attempted to make a Ford Capri engine fit into the tiny car. He got this Frankenstein’s Roadster working but soon brought it in to get advice from his colleagues about a mysterious knocking coming from the wheels when he braked or accelerated. The excessive power applied by the over-size engine had elongated the holes in the soft steel of the wheels, so the wheel-nuts were rattling about in slots.

Last Thursday evening I made my first visit to @staffswebmeetup to hear Bruce Lawson (@BruceL) talk about matters webbish. Bruce asked if we were all web people. By the end of the talk, I strongly suspected that I wasn’t. He described progress on working around the limitations of the web as a platform for applications.

Web pages have an address that starts “HTTP” for ‘Hyper-Text Transmission Protocol’. The web was designed, at CERN, to allow text files distributed around the nodes on a network, including the odd picture, to be linked together and shared, using very simple formatting. It was accepted that the text might be presented differently according to the device it was displayed upon. There were already more sophisticated markup languages for sophisticated layout. The web’s markup language HTML was designed to be simpler but faster than these and easier. There are design compromises baked into HTML, just as Ford designed Anglias with cheaper wheels than Capris.

The web was fine until ‘designers’ started getting involved in page layout. They didn’t just want any font that could be read; they wanted precise control of every nuance of appearance. Programmers also started to ask web pages to perform tasks way beyond their pay-grade. The web was static, then dynamic, then people wanted web apps as rich as local applications. The speed at which international standards bodies can move became the limiting factor to progress and mobile apps appeared, under the technical control of single companies.

Bruce said that in 2014, only 14% of time spent on the Internet is still web-based.

[ The sentence above originally said: “Internet traffic” . Thanks to Bruce for the correction. If you saw the quality of my notes, you’d understand. I wasn’t planning to write this but people will keep making me think! ] 

He described mechanisms that would make web standards extensible. The W3C committee members were accepting that they couldn’t keep up with demand, so must allow developers to add their own extensions to the standard web magic. The web could no longer be cooperatively engineered. It has to become evolutionary.

The IP protocol stack was designed ‘Unix style’. Each protocol was designed to do one thing well. HTTP and HTML have mutated into Swiss Army Knives. Now we are to be allowed to whittle our own weaponry. Am I imagining it, or can I hear knocking from the back axle?

Experience ‘web people’ have grown up with steadily increasing complexity. Newcomers assume development has to be as hard as it is. I was coding with elegantly engineered development tools. I left the kids in charge for 30 years and look at the mess I’ve come back to. Are we sure that a protocol more appropriate for ‘Internet apps’ couldn’t be designed at lower cost, now we have a clearer picture about what we need?

p.s. I could mention the photo of Bruce with John Peel when he played Stafford Gatehouse in his band, ‘The Lucies’ but that would be like reminding Professor Brian Cox about D:Ream all the time and no-one would do that.

Actors and Roles

For some time I’ve been thinking that while the ideas behind top-down analysis or functional decomposition are useful, our model may be untrue. It is quite compelling to believe that the atomic functions in a complex system build up to form compounds and crystal structures and rock formations naturally but what if it is all a sea of atoms and we are seeing faces in the breaking waves? Our over-active brains, so keen to classify and pattern match, could be deceiving us.

The first person I ever heard express a similar view was a trainer explaining the PMBOK, the ‘Program Management Body of Knowledge’. He explained the lowest level of the standard then asked us, in two teams, to guess how related functions were split into named sets. We came up with completely different answers. “That’s right” he said. The groupings were arbitrary: notice some similarities, think of a name, find more functions that fit that description or change it, repeat.

The ‘application landscape’ of an ‘organisation’ (another constructed hierarchy) is a sub-network of the organisation’s business processes. We could draw a huge network of tiny processes, connected by message flows but we prefer to simplify beyond necessity and discuss systems and sub-systems, products and services. If we found a competitor to be out-marketing us, we’d cut it a different way; or we’d restructure departments to show how much we’d changed.

Today I was discussing how the job of Project Manager might be split into its constituent roles. Mapping roles is something I’ve thought about many times before. Today, I suddenly saw for the first time that ‘role’ is only the name we give to a set of functions that we consider to be related in some way.

I realised when I asked “Can you write user-stories for roles/’actors’?”, thinking of using a conventional format for Agile user-stories and saw that you could:
“As a [role], I [do a type of thing] so that [the business value it provides]”
The things you do define the role, not the other way around.
If a role is nothing more than a named set of functions, and standard job titles are just a design pattern for a typical set of functions then everything is mutable.
Similarly, if your organisation is performing the wrong set of low level functions, no amount of departmental deckchair shuffling is going to help.